Публічний API

Створюйте відео, зображення та музику за допомогою власного коду

Створіть ключ, надішліть запит з авторизацією Bearer і опитуйте завдання, доки ваш файл не буде готовий. Ті ж моделі, ціни, обмеження плану та повернення коштів, що й у студії NovaMotions AI, з одного спільного балансу кредитів.

Базова URLhttps://novamotions.com/api/v1

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

Три кроки від нуля до готового відео. Кожен запит — це звичайний HTTPS з JSON, тому можна використовувати будь-яку мову чи інструмент.

  1. 1

    Створіть ключ

    Відкрийте сторінку API у вашому акаунті та створіть ключ. Повний ключ показується лише один раз, тому збережіть його у змінній середовища з назвою API_KEY.

  2. 2

    Надішліть завдання

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

    curl -X POST https://novamotions.com/api/v1/videos \
      -H "Authorization: Bearer $API_KEY" \
      -H "Content-Type: application/json" \
      -d '{
        "model": "seedance-2-pro",
        "prompt": "Повільний рух камери через дощову неонову вулицю вночі, відблиски на мокрому асфальті, кінематографічно",
        "duration": 5,
        "resolution": "720p",
        "aspect_ratio": "16:9"
      }'
  3. 3

    Опитуйте, доки не буде готово

    Перевіряйте статус завдання кожні кілька секунд. Коли статус — succeeded, завантажте файл за output_url. Якщо завдання не вдалося, кредити вже повернені на ваш баланс.

    TASK_ID=your_task_id
    while true
    do
      TASK=$(curl -s https://novamotions.com/api/v1/tasks/$TASK_ID -H "Authorization: Bearer $API_KEY")
      STATUS=$(echo "$TASK" | jq -r .status)
      echo "$STATUS"
      if [ "$STATUS" = "succeeded" ] || [ "$STATUS" = "failed" ]
      then
        echo "$TASK" | jq
        break
      fi
      sleep 5
    done

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

Надсилайте ваш ключ у заголовку Authorization кожного запиту. Ключі починаються з nm_live_ і належать одному акаунту.

HTTP
Authorization: Bearer nm_live_your_api_key
Content-Type: application/json
Базова URL
Всі ендпоінти знаходяться за адресою https://novamotions.com/api/v1 і повертають JSON.
Зберігайте ключі в секреті
Викликайте API з вашого сервера, ніколи не з браузера чи мобільного додатку. Відкликаний ключ одразу перестає працювати.
Один баланс
Виклики API витрачають кредити власника ключа, той самий баланс, що і у студії. Також застосовуються обмеження плану на генерацію.
URL медіа
Зображення, відео та аудіо, які ви передаєте, мають бути публічними https URL, що завантажуються без куків чи входу в акаунт.

Список моделей

GET/api/v1/models

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

Запит

curl https://novamotions.com/api/v1/models \
  -H "Authorization: Bearer $API_KEY"

Відповідь

JSON
{
  "object": "list",
  "data": [
    {
      "slug": "seedance-2-pro",
      "name": "Seedance 2.0 Pro",
      "kind": "video",
      "endpoint": "/api/v1/videos",
      "available": true,
      "modes": [
        "text-to-video",
        "image-to-video",
        "reference-to-video"
      ],
      "durations": [
        4,
        5,
        6,
        8,
        10,
        12,
        15
      ],
      "default_duration": 5,
      "resolutions": [
        "480p",
        "720p",
        "1080p",
        "4K"
      ],
      "aspect_ratios": [
        "16:9",
        "9:16",
        "1:1",
        "4:3",
        "3:4",
        "21:9"
      ],
      "audio": {
        "supported": true,
        "extra_credits": 20
      },
      "references": {
        "images": 9,
        "videos": 3,
        "audio": 3,
        "end_frame": true
      },
      "max_count": 4,
      "prompt_max_length": 10000,
      "from_credits": 35
    }
  ]
}

Перевірити баланс

GET/api/v1/balance

Кредити, які власник ключа може витратити зараз, розподілені по пулах з датами закінчення, а також поточний план.

Запит

curl https://novamotions.com/api/v1/balance \
  -H "Authorization: Bearer $API_KEY"

Відповідь

JSON
{
  "object": "balance",
  "balance": 1175,
  "never_expiring": 375,
  "next_expiry": "2026-11-17T00:00:00.000Z",
  "pools": [
    {
      "source": "subscription",
      "remaining": 800,
      "granted": 2000,
      "expires_at": "2026-11-17T00:00:00.000Z"
    },
    {
      "source": "topup",
      "remaining": 375,
      "granted": 375,
      "expires_at": null
    }
  ],
  "plan": {
    "name": "Pro",
    "status": "active",
    "cycle": "monthly",
    "renews_or_ends_at": "2026-11-14T00:00:00.000Z"
  }
}

Створити відео

POST/api/v1/videos

Текст у відео, зображення у відео (початковий кадр і за бажанням кінцевий) або референс для відео (зображення, кліпи та аудіо, що керують результатом). Режим обирається за вхідними даними, якщо його не вказано.

Параметри

  • modelstring
    Обов’язковіІдентифікатор моделі з ендпоінту моделей.
  • promptstring
    Обов’язковіЩо має відбуватися у кліпі. Необов’язково для image-to-video, де керує початковий кадр.
  • modestring
    Необов’язковіtext-to-video, image-to-video або reference-to-video. Обирається за вхідними даними, якщо пропущено.
  • durationinteger
    Необов’язковіТривалість кліпу в секундах. Має бути однією з тривалостей моделі, інакше використовується стандартна.
  • resolutionstring
    Необов’язковіРоздільна здатність вихідного файлу, наприклад 720p або 1080p, зі списку моделі.
  • aspect_ratiostring
    Необов’язкові16:9, 9:16, 1:1, 4:3, 3:4 або 21:9 зі списку моделей. За замовчуванням 16:9.
  • audioboolean
    Необов’язковіСтворити саундтрек із діалогами, ефектами та атмосферою на моделях, які це підтримують. Додає 20 кредитів. За замовчуванням вимкнено.
  • image_urlstring (URL)
    Необов’язковіПочатковий кадр для перетворення зображення у відео.
  • end_image_urlstring (URL)
    Необов’язковіКінцевий кадр, на моделях, які підтримують початковий і кінцевий кадри.
  • reference_image_urlsstring[]
    Необов’язковіЗображення для орієнтування у reference-to-video, до ліміту моделі.
  • reference_video_urlsstring[]
    Необов’язковіВідеокліпи для орієнтування у reference-to-video, до ліміту моделі.
  • reference_audio_urlsstring[]
    Необов’язковіАудіо для керування саундтреком, до ліміту моделі.
  • countinteger
    Необов’язковіСкільки відео створити з одного запиту, від 1 до 4. Кожне — окреме завдання з окремою оплатою.
  • seedinteger
    Необов’язковіФіксоване зерно для відтворюваних результатів. Кожен додатковий елемент у пакеті отримує наступне зерно.

Запит

curl -X POST https://novamotions.com/api/v1/videos \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "seedance-2-pro",
    "prompt": "Повільний рух камери через дощову неонову вулицю вночі, відблиски на мокрому асфальті, кінематографічно",
    "duration": 5,
    "resolution": "720p",
    "aspect_ratio": "16:9"
  }'

Відповідь

JSON
{
  "tasks": [
    {
      "id": "cmtask8k2x0001ab7c9d0e1f2",
      "status": "queued",
      "credits": 44,
      "url": "https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2"
    }
  ],
  "credits_charged": 44,
  "balance": 1131
}

Створити зображення

POST/api/v1/images

Текст у зображення або редагування існуючого зображення за підказкою. Можна запросити до чотирьох зображень за один запит, кожне — окреме завдання.

Параметри

  • modelstring
    Обов’язковіІдентифікатор моделі з ендпоінту моделей.
  • promptstring
    Обов’язковіЩо має показувати зображення або як змінити передане зображення.
  • modestring
    Необов’язковіtext-to-image або image-edit. Обирається з ваших даних, якщо пропущено.
  • resolutionstring
    Необов’язкові1K, 2K або 4K зі списку моделей.
  • aspect_ratiostring
    Необов’язковіСпіввідношення сторін зі списку моделей, включно з Авто на моделях, які це підтримують.
  • image_urlstring (URL)
    Необов’язковіЗображення для редагування. Обов’язково для image-edit.
  • reference_image_urlsstring[]
    Необов’язковіДодаткові зображення для редагування, до ліміту моделі.
  • countinteger
    Необов’язковіЗображень на запит, від 1 до 4. Кожне — окреме завдання.
  • seedinteger
    Необов’язковіФіксоване зерно для відтворюваних результатів. Кожен додатковий елемент у пакеті отримує наступне зерно.

Запит

curl -X POST https://novamotions.com/api/v1/images \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "Студійне фото продукту — керамічна кавова чашка на дубовому столі, м’яке віконне світло, мала глибина різкості",
    "resolution": "1K",
    "aspect_ratio": "1:1",
    "count": 1
  }'

Відповідь

JSON
{
  "tasks": [
    {
      "id": "cmtask8k2x0001ab7c9d0e1f2",
      "status": "queued",
      "credits": 3,
      "url": "https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2"
    }
  ],
  "credits_charged": 3,
  "balance": 1172
}

Створити пісню

POST/api/v1/music

Повна пісня за описом, з вашими власними текстами або інструментальна.

Параметри

  • modelstring
    Обов’язковіІдентифікатор моделі з ендпоінту моделей.
  • promptstring
    Обов’язковіЖанр, настрій, інструменти та темп пісні.
  • durationinteger
    Необов’язковіТривалість пісні в секундах, зі списку моделей.
  • lyricsstring
    Необов’язковіВаші власні тексти пісень. Залиште порожнім, щоб модель написала їх.
  • instrumentalboolean
    Необов’язковіСтворити пісню без вокалу. За замовчуванням вимкнено.

Запит

curl -X POST https://novamotions.com/api/v1/music \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "ai-music",
    "prompt": "Теплий лоу-фай хіп-хоп з м’яким піаніно, тріском вінілової платівки та розслабленим нічним ритмом",
    "duration": 60,
    "instrumental": false
  }'

Відповідь

JSON
{
  "tasks": [
    {
      "id": "cmtask8k2x0001ab7c9d0e1f2",
      "status": "queued",
      "credits": 11,
      "url": "https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2"
    }
  ],
  "credits_charged": 11,
  "balance": 1164
}

Отримати завдання

GET/api/v1/tasks/{id}

Опитуйте завдання за його id. Коли статус — succeeded, output_url вказує на готовий файл. Опитування використовує ліміт читання, тому не витрачає ваш бюджет на відправку.

Запит

curl https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2 \
  -H "Authorization: Bearer $API_KEY"

Відповідь

JSON
{
  "id": "cmtask8k2x0001ab7c9d0e1f2",
  "object": "task",
  "kind": "video",
  "model": "seedance-2-pro",
  "mode": "text-to-video",
  "status": "succeeded",
  "progress": 100,
  "prompt": "Повільний рух камери через дощову неонову вулицю вночі, відблиски на мокрому асфальті, кінематографічно",
  "params": {
    "duration": 5,
    "resolution": "720p",
    "aspect_ratio": "16:9",
    "audio": false,
    "seed": null
  },
  "output_url": "https://novamotions.com/uploads/videos/2026/10/example.mp4",
  "thumbnail_url": "https://novamotions.com/uploads/videos/2026/10/example.jpg",
  "width": 1280,
  "height": 720,
  "duration_seconds": 5,
  "credits": 44,
  "refunded": false,
  "error": null,
  "created_at": "2026-10-18T09:30:00.000Z",
  "completed_at": "2026-10-18T09:31:12.000Z"
}

Список завдань

GET/api/v1/tasks

Завдання, створені вами через API за останні 30 днів, новіші зверху, з тією ж структурою, що й одне завдання. Передайте next_cursor як cursor для завантаження наступної сторінки.

Параметри

  • limitinteger
    Необов’язковіРезультатів на сторінку, від 1 до 50. За замовчуванням 20.
  • cursorstring
    Необов’язковіЗначення next_cursor з попередньої сторінки.
  • statusstring
    Необов’язковіТільки завдання з цим статусом: queued, running, succeeded або failed.

Запит

curl https://novamotions.com/api/v1/tasks?limit=20 \
  -H "Authorization: Bearer $API_KEY"

Відповідь

JSON
{
  "object": "list",
  "data": [
    {
      "id": "cmtask8k2x0001ab7c9d0e1f2",
      "object": "task",
      "kind": "video",
      "model": "seedance-2-pro",
      "mode": "text-to-video",
      "status": "succeeded",
      "progress": 100,
      "prompt": "Повільний рух камери через дощову неонову вулицю вночі, відблиски на мокрому асфальті, кінематографічно",
      "params": {
        "duration": 5,
        "resolution": "720p",
        "aspect_ratio": "16:9",
        "audio": false,
        "seed": null
      },
      "output_url": "https://novamotions.com/uploads/videos/2026/10/example.mp4",
      "thumbnail_url": "https://novamotions.com/uploads/videos/2026/10/example.jpg",
      "width": 1280,
      "height": 720,
      "duration_seconds": 5,
      "credits": 44,
      "refunded": false,
      "error": null,
      "created_at": "2026-10-18T09:30:00.000Z",
      "completed_at": "2026-10-18T09:31:12.000Z"
    }
  ],
  "next_cursor": null
}

Статуси завдань

Завдання переходить зі стану queued у running і завершується як succeeded або failed. При досягненні кінцевого стану припиніть опитування.

queued
Прийнято і очікує на слот для рендерингу. Продовжуйте опитування.
running
Зараз відбувається рендеринг. Прогрес від 0 до 99.
succeeded
Готово. output_url і thumbnail_url ведуть до завершених файлів.
failed
Завершено без результату. error пояснює причину, а refunded true — кредити повернені на баланс.

Коди помилок

Кожна помилка має однакову структуру. Відповідно до коду показуйте повідомлення користувачу. Завдання, яке було прийняте, може пізніше завершитись помилкою, тому перевіряйте статус при опитуванні.

Відповідь з помилкою
{
  "error": {
    "code": "insufficient_credits",
    "message": "Not enough credits for this request. Top up or renew your plan, then retry.",
    "needed": 44,
    "balance": 14
  }
}
  • 400invalid_jsonТіло не є JSON-об’єктом.
  • 401unauthorizedВідсутній ключ Bearer у заголовку Authorization.
  • 401invalid_api_keyКлюч не існує або має неправильний формат.
  • 401key_revokedКлюч відкликано. Створіть новий.
  • 402insufficient_creditsНедостатньо кредитів для цього запиту. У відповіді вказано необхідні та баланс.
  • 403plan_limit_exceededЗапит перевищує ліміт генерації плану. Зменшіть тривалість або роздільність.
  • 403account_suspendedОбліковий запис, що володіє ключем, заблоковано.
  • 403api_disabledAPI тимчасово вимкнено.
  • 404not_foundЗавдання або кінцева точка не існує для цього облікового запису.
  • 404model_not_foundМодель із таким ідентифікатором не знайдена. Перевірте кінцеву точку моделей.
  • 409too_many_runningНа цьому акаунті вже виконується 3 завдань. Зачекайте на завершення одного.
  • 422invalid_requestВідсутнє поле або неправильний тип. details містить перелік проблем.
  • 422wrong_endpointМодель належить до іншої кінцевої точки, наприклад, модель зображень надіслано для відео.
  • 422invalid_modeРежим невідомий цій кінцевій точці.
  • 422mode_not_supportedМодель не підтримує цей режим.
  • 422prompt_requiredДля цього режиму потрібен запит.
  • 422image_requiredДля цього режиму потрібен image_url.
  • 429rate_limitedЗабагато запитів. Зачекайте кількість секунд у Retry-After, потім повторіть.
  • 500internal_errorНа нашому боці сталася помилка. Спробуйте пізніше.
  • 503service_busyЗараз система перевантажена. Спробуйте через кілька хвилин.

Кредити та відшкодування

Оплата один раз при відправленні

Кожне завдання коштує стільки ж, скільки ті ж налаштування у студії. Відповідь на відправлення повертає credits_charged і ваш новий баланс. Аудіо у відео додає 20 кредитів.

Повне відшкодування за невдалі завдання

Якщо завдання не вдалося з будь-якої причини, всі його кредити повертаються у відповідні пули, а завдання позначається як refunded true. Нічого додатково вимагати не потрібно.

Діють обмеження плану

Ліміт на генерацію за планом застосовується і до API-завдань. Спочатку витрачаються кредити з найближчим терміном дії, останні — поповнення.

Обмеження швидкості

Обмеження рахується за ключем за останню хвилину. При перевищенні ліміту ви отримуєте HTTP 429 із заголовком Retry-After у секундах. Кожна відповідь містить заголовки X-RateLimit, щоб ви могли знизити швидкість до цього.

Відправити
30 за хвилину
Створення відео, зображень і пісень.
Читання
120 за хвилину
Завдання, баланс і моделі. Рахується окремо від відправлень.
Одночасно в роботі
3
Завдань на обліковий запис, що рендеряться одночасно.
Заголовки обмеження швидкості
HTTP/1.1 429 Too Many Requests
Retry-After: 42
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 42

Моделі

Моделі, які ви можете використовувати сьогодні, з їхніми ідентифікаторами та найнижчою ціною. Ендпоінт моделей повертає той самий список з усіма опціями.

  • Seedance 2.5seedance-2-545 кредитів
  • Seedance 2.0 Proseedance-2-pro35 кредитів
  • Seedance 2.0 Miniseedance-2-mini24 кредитів
  • Wan 3.0wan-346 кредитів
  • MiniMax H3minimax-h330 кредитів
  • Kling 3kling-330 кредитів
  • Seedance 1.5 Proseedance-1-5-pro31 кредитів
  • Seedance 1.0seedance-132 кредитів
  • Kling O3kling-o346 кредитів
  • Kling 2.6kling-2-641 кредитів
  • Wan 2.7wan-2-735 кредитів
  • Wanwan32 кредитів
  • Grokgrok-video47 кредитів
  • Veo 3veo-342 кредитів
  • GPT Image 2.5gpt-image-2-54 кредитів
  • GPT Image 2gpt-image-23 кредитів
  • Seedream 5 Proseedream-5-pro4 кредитів
  • Seedream 5seedream-53 кредитів
  • Nano Banana Pronano-banana-pro5 кредитів
  • Nano Banana 2nano-banana-23 кредитів
  • Nano Banana 2 Litenano-banana-2-lite2 кредитів
  • AI Musicai-music6 кредитів

Готові створювати?

Створіть ключ у своєму акаунті та надішліть перший запит за хвилину.

Створити API ключ