Перейти до документації
На цій сторінці

Документація

Створюйте із Seevio API

Додайте генерацію відео у свій продукт. Виберіть модель, надішліть запит та отримайте результат через опитування статусу або вебхук.

Вибір моделі

Довідка для кожної моделі містить повний набір її параметрів, тарифи та приклади. Ви можете повністю виконати інтеграцію, використовуючи лише сторінку конкретної моделі.

Автентифікація

Створіть ключ API у панелі керування. Повний ключ відображається лише один раз. Зберігайте його на своєму сервері та надсилайте як Bearer-токен у кожному запиті.

Базовий URL

https://api.seevio.ai
Authorization: Bearer sk_live_your_api_key
Content-Type: application/json

Задайте змінну середовища SEEVIO_API_KEY перед запуском цих прикладів. Приклади на JavaScript виконуються на вашому сервері за допомогою Node.js; приклади на Python використовують бібліотеку requests.

Швидкий старт

Цей приклад генерує 5-секундне відео 720p за допомогою Seedance 2.5. Перейдіть до довідки моделі, щоб дізнатися про всі режими генерації та ліміти параметрів.

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  }
}'

Приклад відповіді на запит створення завдання

Після успішного прийняття запиту API повертає таку відповідь у форматі JSON. Параметр taskId — це унікальний ідентифікатор завдання, який використовується для подальшої перевірки статусу; credits — це кількість кредитів, зарезервованих для виконання цього завдання. Ця відповідь лише підтверджує створення завдання, але не означає, що відео вже готове. Щоб отримати готовий відеоролик, потрібно періодично опитувати статус завдання або налаштувати Webhook.

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 100
}

Запит статусу завдання

GET https://api.seevio.ai/v1/tasks/{taskId}

Замініть ID з прикладу на taskId, отриманий під час створення. Запити повертають лише ті завдання, які належать користувачеві ключа API; до невідомих або недоступних ID повертається помилка HTTP 404.

Для початку опитуйте статус кожні 10–20 секунд, за умов помилки HTTP 429 збільшуйте інтервал і зупиняйтеся, коли статус зміниться на completed або failed. Для продакшену краще використовувати вебхуки. Кожен приклад коду нижче виконує один запит.

curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer $SEEVIO_API_KEY"
СтатусОпис та обмеження
queuedПрийнято й очікує на запуск.
generatingГенерація триває.
completedУспішно завершено. Завантажте файли з data.results до закінчення терміну дії.
failedПомилка виконання. Перевірте failed_reason та billing_status.
ПолеТипОпис та обмеження
idstring
Ідентифікатор завдання. Це taskId з відповіді на створення.
created_atnumber
Час створення завдання в секундах Unix.
modelstring
Публічний ID моделі, використаний для цього завдання.
billing_statusstring
Статус оплати: reserved, charged, refunded або refund_failed.
creditsnumber
Кредити, зарезервовані для цього завдання. Це значення зберігається після повернення коштів; перевіряйте billing_status для визначення остаточного статусу розрахунку.
failed_reasonstring | null
Причина помилки для неуспішних завдань; в інших випадках — null. Відповіді на запити для неуспішних завдань не містять об’єкта data.
dataobject
Міститься у запитах успішних завдань. Передає результат та деталі обробки.
data.resultsstring[]
Масив URL-адрес готових відео. Порожній до завершення або після закінчення терміну зберігання відео.
data.video_expires_atstring | null
Термін дії посилання на відео у форматі ISO 8601 або null, якщо воно ще не готове. Збережіть результат до настання цього часу.
data.last_frame_urlstring | null
URL-адреса останнього кадру, якщо він був запрошений і готовий; в іншому випадку — null.
data.processing_timenumber | null
Час обробки провайдером у секундах (якщо доступно), інакше — null.

Завершене завдання: відповідь на запит із результатами відео

Коли запит повертає статус status=completed, це означає, що генерацію відео завершено. Отримайте URL-адреси відео з масиву data.results і завантажте їх до настання часу, вказаного у data.video_expires_at. Значення billing_status=charged вказує на те, що зарезервовані кредити було списано.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "status": "completed",
  "billing_status": "charged",
  "credits": 100,
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

Помилка виконання завдання: відповідь на запит із деталями збою та оплати

Коли запит повертає статус status=failed, це означає, що генерація завершилася помилкою. Причину збою вказано в полі failed_reason, а результат повернення коштів — у billing_status. У цьому прикладі статус refunded означає, що кредити було повернено. У полі credits залишається початкова зарезервована сума, а об'єкт data у відповіді відсутній.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "status": "failed",
  "billing_status": "refunded",
  "credits": 100,
  "failed_reason": "provider_failed"
}

Вебхуки

Для інтеграції у продакшені вказуйте callback_url під час створення завдання. Довідка кожної моделі містить структуру даних для вебхуків та приклад обробника.

Вкажіть callback_url у запиті на створення, щоб отримувати POST-запит JSON після успішного виконання або помилки завдання. Поверніть відповідь 2xx протягом 15 секунд. У разі невдалої доставки запити повторюються; налаштуйте ідемпотентну обробку повторних запитів за ID завдання.

Ваша кінцева точка зворотного виклику (callback endpoint) має приймати запити POST із тілом запиту у форматі JSON (Content-Type: application/json).

Створення завдання з вебхуком

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  },
  "callback_url": "https://example.com/webhooks/seevio"
}'

Дані вебхуку відрізняються від відповіді на запит статусу: вони не містять billing_status та credits; деталі помилки передаються в data.failed_reason та data.credits_refunded. Значення created_at у вебхуці — це час створення події в секундах Unix.

Завдання виконано: дані успішного зворотного виклику

У разі успішної генерації зворотний виклик містить status=completed. Використовуйте id для ідентифікації завдання, а дані з data.results — для отримання посилань на відео. Завантажте та збережіть результати до настання часу, вказаного в data.video_expires_at.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "status": "completed",
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

Помилка завдання: дані зворотного виклику про збій

Якщо генерація завершилася збоєм, зворотний виклик містить status=failed. Використовуйте id для ідентифікації завдання, data.failed_reason для отримання причини збою та data.credits_refunded для перевірки кількості повернених кредитів.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "status": "failed",
  "data": {
    "failed_reason": "provider_failed",
    "credits_refunded": 100
  }
}

Приклад обробника

export async function POST(request: Request) {
  const callbackData = await request.json();

  if (callbackData.status === "completed") {
    const videoUrls = callbackData.data.results;
    // Save the video URLs and mark this task as completed in your application.
    console.log(callbackData.id, videoUrls);
  }

  if (callbackData.status === "failed") {
    const { failed_reason, credits_refunded } = callbackData.data;
    // Record the failure reason and refunded credits for this task.
    console.error(callbackData.id, failed_reason, credits_refunded);
  }

  return new Response(null, { status: 200 });
}

Цей приклад для Next.js зчитує тіло зворотного виклику в JSON та безпосередньо обробляє успішно виконані й невдалі завдання. Додайте у свій додаток збереження даних та дедуплікацію за ID завдань; додавайте тривалі процеси в чергу, перш ніж підтверджувати отримання зворотного виклику.

Помилки

Помилки HTTP містять об’єкт error із кодом (code) та повідомленням (message). Завдання, успішно прийняте в роботу, все одно може завершитися помилкою згодом; опитуйте статус або обробляйте вебхук про помилку.

{
  "error": {
    "code": "invalid_request",
    "message": "input.prompt is required."
  }
}
HTTPПолеЩо робити
400invalid_request
Виправте структуру JSON, додайте prompt, перевірте ліміти параметрів або URL-адреси медіа перед повторною спробою.
401invalid_api_key
Перевірте Bearer-токен та переконайтеся, що ключ API активний.
402insufficient_credits
Поповніть баланс або зменште вартість завдання. Відповідь може містити необхідну та доступну кількість кредитів.
403forbidden
Перевірте обмеження на рівні облікового запису, описані в повідомленні про помилку.
404not_found
Перевірте ID завдання та переконайтеся, що ключ належить користувачеві, який створив це завдання.
429rate_limited
Зачекайте інтервал, указаний у Retry-After, перед повторним запитом.
500internal_error
Перевірте повідомлення про помилку та логи API. Повторюйте запити обережно: повторне надсилання запиту на створення може створити ще одне платне завдання.