Создавайте видео, изображения и музыку с помощью собственного кода
Создайте ключ, отправьте запрос с авторизацией Bearer и опрашивайте задачу, пока файл не будет готов. Те же модели, цены, лимиты плана и возвраты, что и в студии NovaMotions AI, с одного общего баланса кредитов.
https://novamotions.com/api/v1Быстрый старт
Три шага от нуля до готового видео. Каждый запрос — обычный HTTPS с JSON, так что можно использовать любой язык или инструмент.
- 1
Создайте ключ
Откройте страницу API в вашем аккаунте и создайте ключ. Полный ключ показывается один раз, сохраните его в переменную окружения с именем API_KEY.
- 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
Опрашивайте, пока не будет готово
Проверяйте задачу каждые несколько секунд. Когда статус — 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_ и принадлежат одному аккаунту.
Authorization: Bearer nm_live_your_api_key
Content-Type: application/json- Базовый URL
- Все эндпоинты доступны по адресу https://novamotions.com/api/v1 и возвращают JSON.
- Храните ключи в секрете
- Вызывайте API с вашего сервера, никогда не из браузера или мобильного приложения. Отозванный ключ сразу перестаёт работать.
- Один баланс
- Вызовы API расходуют кредиты владельца ключа, тот же баланс, что и в студии. Также применяются лимиты плана на генерацию.
- URL медиа
- Изображения, видео и аудио, которые вы передаёте, должны быть публичными https-ссылками, доступными без куки или входа в систему.
Список моделей
/api/v1/modelsВсе модели, доступные через API, с режимами, длительностями, разрешениями, соотношениями сторон, поддержкой аудио, ограничениями по ссылкам и минимальной ценой в кредитах. Используйте для создания выбора модели вместо жёсткого кодирования опций.
Запрос
curl https://novamotions.com/api/v1/models \
-H "Authorization: Bearer $API_KEY"Ответ
{
"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
}
]
}Проверить баланс
/api/v1/balanceКредиты, которые владелец ключа может потратить прямо сейчас, разбитые по пулам с датами истечения, а также текущий план.
Запрос
curl https://novamotions.com/api/v1/balance \
-H "Authorization: Bearer $API_KEY"Ответ
{
"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"
}
}Создать видео
/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_video_urlsstring[]НеобязательноСправочные видеоклипы для преобразования в видео, до лимита модели.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"
}'Ответ
{
"tasks": [
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"status": "queued",
"credits": 44,
"url": "https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2"
}
],
"credits_charged": 44,
"balance": 1131
}Создать изображения
/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
}'Ответ
{
"tasks": [
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"status": "queued",
"credits": 3,
"url": "https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2"
}
],
"credits_charged": 3,
"balance": 1172
}Создать песню
/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
}'Ответ
{
"tasks": [
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"status": "queued",
"credits": 11,
"url": "https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2"
}
],
"credits_charged": 11,
"balance": 1164
}Получить задачу
/api/v1/tasks/{id}Опрашивайте задачу по её id. Когда статус — succeeded, output_url указывает на готовый файл. Опрашивание использует лимит на чтение, не расходуя лимит на отправку.
Запрос
curl https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2 \
-H "Authorization: Bearer $API_KEY"Ответ
{
"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"
}Список задач
/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"Ответ
{
"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- Сейчас рендерится. Прогресс от 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
}
}- 400
invalid_jsonТело запроса не является JSON-объектом. - 401
unauthorizedВ заголовке Authorization отсутствует Bearer ключ. - 401
invalid_api_keyКлюч не существует или имеет неверный формат. - 401
key_revokedКлюч был отозван. Создайте новый. - 402
insufficient_creditsНедостаточно кредитов для этого запроса. В ответе указаны необходимые и текущий баланс. - 403
plan_limit_exceededЗапрос превышает лимит генерации вашего плана. Уменьшите длительность или разрешение. - 403
account_suspendedАккаунт, к которому привязан ключ, заблокирован. - 403
api_disabledAPI временно отключено. - 404
not_foundЗадача или конечная точка не найдены в этом аккаунте. - 404
model_not_foundМодель с таким идентификатором не найдена. Проверьте endpoint моделей. - 409
too_many_runningВ этом аккаунте уже выполняется 3 задач. Подождите завершения одной. - 422
invalid_requestОтсутствует поле или неверный тип. details содержит список проблем. - 422
wrong_endpointМодель принадлежит другому endpoint, например, модель изображения отправлена в видео. - 422
invalid_modeРежим неизвестен этому endpoint. - 422
mode_not_supportedМодель не поддерживает этот режим. - 422
prompt_requiredДля этого режима требуется подсказка. - 422
image_requiredДля этого режима требуется image_url. - 429
rate_limitedСлишком много запросов. Подождите время из Retry-After, затем повторите. - 500
internal_errorНа нашей стороне произошла ошибка. Попробуйте позже. - 503
service_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.5
seedance-2-5Видео45 кредитов - Seedance 2.0 Pro
seedance-2-proВидео35 кредитов - Seedance 2.0 Mini
seedance-2-miniВидео24 кредитов - Wan 3.0
wan-3Видео46 кредитов - MiniMax H3
minimax-h3Видео30 кредитов - Kling 3
kling-3Видео30 кредитов - Seedance 1.5 Pro
seedance-1-5-proВидео31 кредитов - Seedance 1.0
seedance-1Видео32 кредитов - Kling O3
kling-o3Видео46 кредитов - Kling 2.6
kling-2-6Видео41 кредитов - Wan 2.7
wan-2-7Видео35 кредитов - Wan
wanВидео32 кредитов - Grok
grok-videoВидео47 кредитов - Veo 3
veo-3Видео42 кредитов - GPT Image 2.5
gpt-image-2-5Изображение4 кредитов - GPT Image 2
gpt-image-2Изображение3 кредитов - Seedream 5 Pro
seedream-5-proИзображение4 кредитов - Seedream 5
seedream-5Изображение3 кредитов - Nano Banana Pro
nano-banana-proИзображение5 кредитов - Nano Banana 2
nano-banana-2Изображение3 кредитов - Nano Banana 2 Lite
nano-banana-2-liteИзображение2 кредитов - AI Music
ai-musicМузыка6 кредитов
Готовы начать?
Создайте ключ в своем аккаунте и отправьте первый запрос за минуту.