Seedance 2.0 Fast
Генеруйте відео за допомогою Seedance 2.0 Fast, використовуючи текст, перший та останній кадри або мультимодальні референси. На цій сторінці описано повний робочий процес від запиту до результату для цієї моделі.
ID моделі в API: seedance-2-0-fast
Генерація виконується асинхронно. Збережіть taskId, отриманий під час створення завдання, а потім перевіряйте його статус або налаштуйте отримання вебхуку.
Можливості
| Функція | Допустимі значення |
|---|---|
| Роздільна здатність відео | 480p · 720p |
| Тривалість відео | 4–15 секунд |
| Співвідношення сторін | 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptive |
| Референсні зображення | До 9 зображень |
| Референсні відео | До 3 відео |
| Референсні аудіофайли | До 3 аудіофайлів |
| Усі референси разом | Загалом до 12 допоміжних файлів |
| Загальна тривалість на групу відео/аудіо | 15 секунд |
| seed | -1 до 4294967295 |
Тарифи та кредити
Оплата за генерацію відео здійснюється в кредитах відповідно до тарифікованої тривалості в секундах. Якщо вихідне відео не завантажувалося, тарифікується лише тривалість створеного відео. Якщо вихідне відео використовувалося, до тарифікованого часу також додається тривалість референсного відео.
У таблиці нижче наведено тарифи в кредитах за секунду, а не повну вартість завдання. Тариф залежить від моделі, роздільної здатності створеного відео, а також використання референсних відео в режимі «відео за референсом». Формули та приклади розрахунку повної вартості наведено під таблицею.
| Роздільна здатність відео | Без референсного відео | З референсним відео |
|---|---|---|
480p | 5 кред./с | 3 кред./с |
720p | 10 кред./с | 6 кред./с |
- Без референсного відео: тривалість готового відео в секундах × тариф без відео.
- З референсним відео: (тривалість готового відео + фактична тривалість референсного відео в секундах) × тариф із відео. Сервер вимірює загальну тривалість референсного відео та округлює її в більшу сторону до цілих секунд перед списанням.
- Використання лише зображень або аудіо як референсів тарифікується за тарифом без відео. Тариф із відео застосовується лише в режимі генерації за референсом, якщо вхідні дані містять референсні відео.
Приклади розрахунку вартості
Текст у відео (5 секунд, 720p): 5 × 10 = 50 кредитів.
Готове відео 5 секунд (720p) із референсним відео тривалістю 5 секунд: (5 + 5) × 6 = 60 кредитів.
Кредити резервуються під час надсилання запиту і списуються у разі успіху. Завдання, що завершилися помилкою або скасовані через таймаут, повертають кредити на баланс. Статус billing_status зі значенням refund_failed означає, що повернення не завершилося; перевірте логи API або зверніться до підтримки.
Автентифікація
Створіть ключ API у панелі керування. Повний ключ відображається лише один раз. Зберігайте його на своєму сервері та надсилайте як Bearer-токен у кожному запиті.
Базовий URL
https://api.seevio.aiAuthorization: Bearer sk_live_your_api_key
Content-Type: application/jsonЗадайте змінну середовища SEEVIO_API_KEY перед запуском цих прикладів. Приклади на JavaScript виконуються на вашому сервері за допомогою Node.js; приклади на Python використовують бібліотеку requests.
Швидкий старт
Надішліть цей мінімальний запит, збережіть отриманий taskId, а потім використайте приклад запиту статусу, наведений нижче. Значення credits у відповіді на створення — це зарезервована сума кредитів.
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-0-fast",
"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": 50
}Створення завдання
POST https://api.seevio.ai/v1/videos/generationsНадішліть об’єкт JSON, що містить назву моделі (model) та вхідні дані (input), а також необов’язковий callback_url. Завжди вказуйте точний ID моделі, наведений на цій сторінці; якщо поле model пропущено, автоматично вибирається seedance-2-0.
Тіло запиту
| Поле | Тип | Обов’язково | Опис та обмеження |
|---|---|---|---|
model | string | Так | Ідентифікатор моделі. Щоб використовувати Seedance 2.0 Fast, установіть для цього поля значення seedance-2-0-fast. |
callback_url | string | Ні | Публічна адреса HTTPS для отримання POST-запитів про завершення роботи або помилку. Приватні мережі та localhost не підтримуються. Приклад: https://example.com/webhooks/seevio |
input | object | Так | Налаштування генерації. Має містити непусті вказівки (prompt). |
Вхідні параметри
Укажіть image_urls, video_urls та audio_urls у вигляді масивів рядків URL (string[]). Кожна надана URL-адреса має бути загальнодоступною через протокол HTTPS, включно з медіафайлами, які ігноруються у вибраному режимі.
| Поле | Тип | Обов’язково | За замовчуванням | Опис та обмеження |
|---|---|---|---|---|
input.prompt | string | Так | — | Для кожного режиму обов’язково потрібно вказати промпт. Він має містити щонайбільше 10000 символів (без урахування пробілів на початку й у кінці) і не може складатися лише з пробілів. Приклад: A cat surfing at sunset |
input.generation_type | string | Ні | text-to-video | text-to-video використовує лише текстовий prompt; image-to-video — 1–2 зображення; reference-to-video — референси зображень, відео та/або аудіо. Допустимі значення text-to-video | image-to-video | reference-to-video |
input.image_urls | string[] | Залежно від умов | [] | image-to-video: 1 зображення для першого кадру або 2 впорядковані зображення для першого та останнього кадрів. reference-to-video: до 9 зображень. Ігнорується в text-to-video. Приклад: ["https://example.com/first-frame.jpg"] |
input.video_urls | string[] | Залежно від умов | [] | Передається лише в режимі reference-to-video; сумарно до 3 відео та 15 секунд. Ігнорується в інших режимах. Приклад: ["https://example.com/source.mp4"] |
input.audio_urls | string[] | Залежно від умов | [] | Передається лише в режимі reference-to-video; сумарно до 3 аудіофайлів та 15 секунд. Ігнорується в інших режимах. Для цієї моделі аудіо не можна використовувати як єдине опорне джерело. Разом з audio_urls необхідно також надати принаймні одне опорне зображення в image_urls або один опорний відеоролик у video_urls. Приклад: ["https://example.com/music.mp3"] |
input.duration | integer | Ні | 5 | Ціле число тривалості готового відео від 4 до 15 секунд. Допустимі значення 4–15Приклад: 5 |
input.aspect_ratio | string | Ні | adaptive | Співвідношення сторін готового відео. Значення adaptive дозволяє моделі визначити його самостійно. Допустимі значення 16:9, 4:3, 1:1, 3:4, 9:16, 21:9, adaptiveПриклад: adaptive |
input.resolution | string | Ні | 720p | Використовуйте одну з підтримуваних роздільних здатностей готового відео, наведених тут. Допустимі значення 480p | 720pПриклад: 720p |
input.generate_audio | boolean | Ні | true | Запит на генерацію синхронізованого аудіо. Допустимі значення true | falseПриклад: true |
input.watermark | boolean | Ні | false | Запит на накладання водяного знака ШІ на згенероване відео. Допустимі значення true | falseПриклад: false |
input.web_search | boolean | Ні | false | Дозволити вебпошук, якщо модель підтримує цю функцію. Допустимі значення true | falseПриклад: false |
input.return_last_frame | boolean | Ні | false | Запит на отримання фінального кадру. Результат запиту міститиме data.last_frame_url, коли кадр буде готовий; в іншому випадку значення буде null. Допустимі значення true | falseПриклад: true |
input.seed | integer | Ні | -1 | Ціле число від -1 до 4294967295. Значення -1 вибирає випадковий seed. Допустимі значення -1 до 4294967295Приклад: 42 |
Логічні поля мають містити JSON-значення true або false, а не рядки чи числа.
Відповідь на створення
HTTP 200 повертає taskId (рядок) та credits (число). Це підтверджує створення завдання, але не його завершення. Значення нижче відповідає 5-секундному відео 720p зі швидкого старту.
{
"taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"credits": 50
}Режими генерації та приклади
Текст у відео
Генерація з текстової підказки. Посилання на медіафайли в цьому режимі не обробляються.
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-0-fast",
"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
}
}'Перший кадр
Передайте одне зображення як перший кадр, а потім опишіть рух у текстовому prompt.
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-0-fast",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "image-to-video",
"image_urls": [
"https://example.com/first-frame.jpg"
],
"aspect_ratio": "adaptive"
}
}'Перший та останній кадри
Передайте два URL-посилання на зображення по порядку: спочатку перший кадр, потім останній. Цей приклад також запитує останній кадр готового відео.
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-0-fast",
"input": {
"prompt": "A cat surfing at sunset, cinematic lighting",
"duration": 5,
"resolution": "720p",
"generation_type": "image-to-video",
"image_urls": [
"https://example.com/first-frame.jpg",
"https://example.com/last-frame.jpg"
],
"aspect_ratio": "adaptive",
"return_last_frame": true
}
}'Мультимодальні референси
Комбінуйте зображення, відео та аудіореференси. Текстовий prompt залишається обов’язковим. Вхідне референсне відео змінює формулу розрахунку вартості.
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-0-fast",
"input": {
"prompt": "Follow the reference camera movement and keep the character consistent. Use the audio for ambience.",
"duration": 5,
"resolution": "720p",
"generation_type": "reference-to-video",
"image_urls": [
"https://example.com/character.jpg"
],
"video_urls": [
"https://example.com/camera.mp4"
],
"audio_urls": [
"https://example.com/ambience.mp3"
],
"aspect_ratio": "adaptive"
}
}'Запит статусу завдання
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. |
| Поле | Тип | Опис та обмеження |
|---|---|---|
id | string | Ідентифікатор завдання. Це taskId з відповіді на створення. |
created_at | number | Час створення завдання в секундах Unix. |
model | string | Публічний ID моделі, використаний для цього завдання. |
billing_status | string | Статус оплати: reserved, charged, refunded або refund_failed. |
credits | number | Кредити, зарезервовані для цього завдання. Це значення зберігається після повернення коштів; перевіряйте billing_status для визначення остаточного статусу розрахунку. |
failed_reason | string | null | Причина помилки для неуспішних завдань; в інших випадках — null. Відповіді на запити для неуспішних завдань не містять об’єкта data. |
data | object | Міститься у запитах успішних завдань. Передає результат та деталі обробки. |
data.results | string[] | Масив URL-адрес готових відео. Порожній до завершення або після закінчення терміну зберігання відео. |
data.video_expires_at | string | null | Термін дії посилання на відео у форматі ISO 8601 або null, якщо воно ще не готове. Збережіть результат до настання цього часу. |
data.last_frame_url | string | null | URL-адреса останнього кадру, якщо він був запрошений і готовий; в іншому випадку — null. |
data.processing_time | number | null | Час обробки провайдером у секундах (якщо доступно), інакше — null. |
Завершене завдання: відповідь на запит із результатами відео
Коли запит повертає статус status=completed, це означає, що генерацію відео завершено. Отримайте URL-адреси відео з масиву data.results і завантажте їх до настання часу, вказаного у data.video_expires_at. Значення billing_status=charged вказує на те, що зарезервовані кредити було списано.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1788652800,
"model": "seedance-2-0-fast",
"status": "completed",
"billing_status": "charged",
"credits": 50,
"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-0-fast",
"status": "failed",
"billing_status": "refunded",
"credits": 50,
"failed_reason": "provider_failed"
}Вебхуки
Вкажіть 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-0-fast",
"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-0-fast",
"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-0-fast",
"status": "failed",
"data": {
"failed_reason": "provider_failed",
"credits_refunded": 50
}
}Приклад обробника
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 завдань; додавайте тривалі процеси в чергу, перш ніж підтверджувати отримання зворотного виклику.
Вимоги до медіафайлів та обмеження
- Усі URL-адреси медіа та вебхуків мають бути публічними HTTPS-посиланнями. Уникайте localhost, приватних IP-адрес та файлів, що потребують файлів cookie чи авторизації. Посилання на референсні відео/аудіо мають вести безпосередньо на файли.
- У режимі reference-to-video надайте хоча б один референс. Разом допускається не більше 9 зображень, 3 відео, 3 аудіофайлів та 12 матеріалів загалом. Загальна тривалість відео та аудіо не повинна перевищувати 15 секунд для кожної групи.
- Режим text-to-video ігнорує всі медіареференси. Режим image-to-video обробляє лише зображення першого/останнього кадру та ігнорує відео та аудіо. Використовуйте reference-to-video для поєднання різних типів медіа.
- Для моделей Seedance 2.0 використовуйте аудіо разом із щонайменше одним зображенням або відео для сумісності з моделлю. Приклади лише з аудіо доступні на сторінці Seedance 2.5.
- Моделі Fast та Mini підтримують роздільну здатність 480p та 720p. Не розраховуйте, що запити з вищою роздільною здатністю пройдуть валідацію: вони не підтримуються цією моделлю.
Вимоги до зображень
- Розмір кожного зображення не повинен перевищувати 30 МБ.
- Підтримувані формати: jpeg, png, webp, bmp, tiff, gif.
- Співвідношення сторін (ширина ÷ висота): від 0,4 до 2,5 включно.
- Ширина й висота мають бути в межах від 300 до 6 000 пікселів включно.
Вимоги до відео
- Підтримувані формати: mp4, mov.
- Розмір кожного відео не повинен перевищувати 100 МБ.
- Частота кадрів: від 24 до 60 кадрів/с включно.
- Співвідношення сторін (ширина ÷ висота): від 0,4 до 2,5 включно.
- Загальна кількість пікселів (ширина × висота): від 407 696 до 8 295 044 включно. Наприклад, 614 × 664 = 407 696 та 3 326 × 2 494 = 8 295 044. Це лише приклади кількості пікселів, а не жорсткі вимоги до ширини й висоти.
Вимоги до аудіо
- Підтримувані формати: wav, mp3.
- Розмір кожного аудіофайлу не повинен перевищувати 15 МБ.
Помилки
Помилки HTTP містять об’єкт error із кодом (code) та повідомленням (message). Завдання, успішно прийняте в роботу, все одно може завершитися помилкою згодом; опитуйте статус або обробляйте вебхук про помилку.
{
"error": {
"code": "invalid_request",
"message": "input.prompt is required."
}
}| HTTP | Поле | Що робити |
|---|---|---|
| 400 | invalid_request | Виправте структуру JSON, додайте prompt, перевірте ліміти параметрів або URL-адреси медіа перед повторною спробою. |
| 401 | invalid_api_key | Перевірте Bearer-токен та переконайтеся, що ключ API активний. |
| 402 | insufficient_credits | Поповніть баланс або зменште вартість завдання. Відповідь може містити необхідну та доступну кількість кредитів. |
| 403 | forbidden | Перевірте обмеження на рівні облікового запису, описані в повідомленні про помилку. |
| 404 | not_found | Перевірте ID завдання та переконайтеся, що ключ належить користувачеві, який створив це завдання. |
| 429 | rate_limited | Зачекайте інтервал, указаний у Retry-After, перед повторним запитом. |
| 500 | internal_error | Перевірте повідомлення про помилку та логи API. Повторюйте запити обережно: повторне надсилання запиту на створення може створити ще одне платне завдання. |
Ліміти запитів
Створення завдань: за замовчуванням для кожного ключа API дозволено до 100 запитів на хвилину. Індивідуальні ліміти запитів наразі недоступні.
Запити щодо завдань: за замовчуванням для кожного ключа API дозволено до 120 запитів на хвилину. Запити на отримання інформації та запити на створення завдань враховуються окремо.