Generuj wideo, obrazy i muzykę za pomocą własnego kodu
Utwórz klucz, wyślij żądanie z uwierzytelnianiem Bearer i sprawdzaj status zadania, aż plik będzie gotowy. Te same modele, ceny, limity planów i zwroty co w studio NovaMotions AI, z jednego wspólnego salda kredytów.
https://novamotions.com/api/v1Szybki start
Trzy kroki od zera do gotowego wideo. Każde żądanie to zwykłe HTTPS z JSON, więc możesz użyć dowolnego języka lub narzędzia.
- 1
Utwórz klucz
Otwórz stronę API w swoim koncie i utwórz klucz. Pełny klucz jest pokazany tylko raz, więc zapisz go w zmiennej środowiskowej o nazwie API_KEY.
- 2
Wyślij zadanie
Podaj model, prompt i opcje. Kredyty są pobierane jednorazowo przy wysłaniu, a odpowiedź informuje ile ich zużyto i ile pozostało.
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": "Powolny ruch kamery przez deszczową neonową ulicę nocą, odbicia na mokrym asfalcie, kinowy klimat", "duration": 5, "resolution": "720p", "aspect_ratio": "16:9" }' - 3
Sprawdzaj aż będzie gotowe
Sprawdzaj status zadania co kilka sekund. Gdy status to succeeded, pobierz plik z output_url. Jeśli zadanie się nie powiodło, kredyty są już zwrócone na twoje saldo.
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
Uwierzytelnianie
Przesyłaj swój klucz w nagłówku Authorization każdego żądania. Klucze zaczynają się od nm_live_ i należą do jednego konta.
Authorization: Bearer nm_live_your_api_key
Content-Type: application/json- Podstawowy URL
- Wszystkie punkty końcowe działają pod adresem https://novamotions.com/api/v1 i zwracają JSON.
- Chroń klucze
- Wywołuj API ze swojego serwera, nigdy z przeglądarki lub aplikacji mobilnej. Cofnięty klucz przestaje działać natychmiast.
- Jedno saldo
- Wywołania API zużywają kredyty właściciela klucza, to samo saldo, które używa studio. Obowiązują też limity planu na generację.
- URL-e mediów
- Obrazy, wideo i audio, które przesyłasz, muszą być publicznymi adresami https, które ładują się bez ciasteczek i logowania.
Lista modeli
/api/v1/modelsKażdy model dostępny w API, z trybami, długościami, rozdzielczościami, proporcjami, obsługą audio, limitami referencji i najniższą ceną w kredytach. Użyj do budowy wyboru modelu zamiast na sztywno wpisywać opcje.
Żądanie
curl https://novamotions.com/api/v1/models \
-H "Authorization: Bearer $API_KEY"Odpowiedź
{
"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
}
]
}Sprawdź saldo
/api/v1/balanceKredyty, które właściciel klucza może teraz wydać, podzielone na pule z datami ważności oraz aktualny plan.
Żądanie
curl https://novamotions.com/api/v1/balance \
-H "Authorization: Bearer $API_KEY"Odpowiedź
{
"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"
}
}Twórz wideo
/api/v1/videosTekst na wideo, obraz na wideo (klatka startowa i opcjonalnie końcowa) lub odniesienie do wideo (obrazy, klipy i audio kierujące wynikiem). Tryb wybierany jest na podstawie wejść, jeśli go pominiesz.
Parametry
modelstringWymaganeIdentyfikator modelu z punktu końcowego modeli.promptstringWymaganeCo ma się dziać w klipie. Opcjonalne dla obraz-na-wideo, gdzie prowadzi klatka startowa.modestringOpcjonalnetext-to-video, image-to-video lub reference-to-video. Wybierany na podstawie twoich danych wejściowych, jeśli pominięty.durationintegerOpcjonalneDługość klipu w sekundach. Musi być jedną z długości modelu, w przeciwnym razie używana jest domyślna.resolutionstringOpcjonalneRozdzielczość wyjściowa, np. 720p lub 1080p, z listy modelu.aspect_ratiostringOpcjonalne16:9, 9:16, 1:1, 4:3, 3:4 lub 21:9, z listy modeli. Domyślnie 16:9.audiobooleanOpcjonalneGeneruj ścieżkę dźwiękową z dialogami, efektami i atmosferą na modelach, które to obsługują. Dodaje 20 kredytów. Domyślnie wyłączone.image_urlstring (URL)OpcjonalneKlatka startowa dla obrazu do wideo.end_image_urlstring (URL)OpcjonalneKlatka końcowa, na modelach obsługujących pierwszą i ostatnią klatkę.reference_image_urlsstring[]OpcjonalneObrazy referencyjne do wideo na podstawie referencji, do limitu modelu.reference_video_urlsstring[]OpcjonalneKlipy referencyjne do wideo na podstawie referencji, do limitu modelu.reference_audio_urlsstring[]OpcjonalneDźwięk kierujący ścieżką dźwiękową, do limitu modelu.countintegerOpcjonalneIle filmów wykonać z tego samego zapytania, od 1 do 4. Każdy to osobne zadanie i jest rozliczany osobno.seedintegerOpcjonalneStały seed dla powtarzalnych wyników. Każdy dodatkowy element w partii dostaje kolejny seed.
Żądanie
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": "Powolny ruch kamery przez deszczową neonową ulicę nocą, odbicia na mokrym asfalcie, kinowy klimat",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9"
}'Odpowiedź
{
"tasks": [
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"status": "queued",
"credits": 44,
"url": "https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2"
}
],
"credits_charged": 44,
"balance": 1131
}Twórz obrazy
/api/v1/imagesTekst na obraz lub edycja istniejącego obrazu za pomocą promptu. Możesz poprosić o maksymalnie cztery obrazy na żądanie, każdy to osobne zadanie.
Parametry
modelstringWymaganeIdentyfikator modelu z punktu końcowego modeli.promptstringWymaganeCo powinien pokazywać obraz lub jak zmienić przekazany obraz.modestringOpcjonalnetext-to-image lub image-edit. Wybierane z twoich danych wejściowych, jeśli pominięte.resolutionstringOpcjonalne1K, 2K lub 4K, z listy modeli.aspect_ratiostringOpcjonalneProporcje obrazu z listy modeli, w tym Auto na modelach, które to obsługują.image_urlstring (URL)OpcjonalneObraz do edycji. Wymagane dla image-edit.reference_image_urlsstring[]OpcjonalneDodatkowe obrazy referencyjne do edycji, do limitu modelu.countintegerOpcjonalneObrazów na zapytanie, od 1 do 4. Każdy to osobne zadanie.seedintegerOpcjonalneStały seed dla powtarzalnych wyników. Każdy dodatkowy element w partii dostaje kolejny seed.
Żądanie
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": "Zdjęcie studyjne produktu: ceramiczny kubek do kawy na dębowym stole, miękkie światło okienne, płytka głębia ostrości",
"resolution": "1K",
"aspect_ratio": "1:1",
"count": 1
}'Odpowiedź
{
"tasks": [
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"status": "queued",
"credits": 3,
"url": "https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2"
}
],
"credits_charged": 3,
"balance": 1172
}Twórz piosenkę
/api/v1/musicPełna piosenka na podstawie opisu, z własnymi tekstami lub instrumentalna.
Parametry
modelstringWymaganeIdentyfikator modelu z punktu końcowego modeli.promptstringWymaganeGatunek, nastrój, instrumenty i tempo utworu.durationintegerOpcjonalneDługość utworu w sekundach, z dostępnych długości modelu.lyricsstringOpcjonalneTwoje własne teksty piosenek. Pomijaj, aby model je napisał.instrumentalbooleanOpcjonalneUtwór bez wokalu. Domyślnie wyłączone.
Żądanie
curl -X POST https://novamotions.com/api/v1/music \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "ai-music",
"prompt": "Ciepły lo-fi hip hop z delikatnym pianinem, trzaskiem winyla i zrelaksowanym nocnym groove'em",
"duration": 60,
"instrumental": false
}'Odpowiedź
{
"tasks": [
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"status": "queued",
"credits": 11,
"url": "https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2"
}
],
"credits_charged": 11,
"balance": 1164
}Pobierz zadanie
/api/v1/tasks/{id}Sprawdzaj zadanie po jego ID. Gdy status to succeeded, output_url wskazuje na gotowy plik. Sprawdzanie używa limitu odczytu, więc nie zużywa limitu wysyłania.
Żądanie
curl https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2 \
-H "Authorization: Bearer $API_KEY"Odpowiedź
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"object": "task",
"kind": "video",
"model": "seedance-2-pro",
"mode": "text-to-video",
"status": "succeeded",
"progress": 100,
"prompt": "Powolny ruch kamery przez deszczową neonową ulicę nocą, odbicia na mokrym asfalcie, kinowy klimat",
"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"
}Lista zadań
/api/v1/tasksZadania utworzone przez API w ciągu ostatnich 30 dni, od najnowszych, o takim samym kształcie jak pojedyncze zadanie. Przekaż next_cursor jako cursor, aby załadować kolejną stronę.
Parametry
limitintegerOpcjonalneWyników na stronę, od 1 do 50. Domyślnie 20.cursorstringOpcjonalneWartość next_cursor z poprzedniej strony.statusstringOpcjonalneTylko zadania o tym statusie: queued, running, succeeded lub failed.
Żądanie
curl https://novamotions.com/api/v1/tasks?limit=20 \
-H "Authorization: Bearer $API_KEY"Odpowiedź
{
"object": "list",
"data": [
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"object": "task",
"kind": "video",
"model": "seedance-2-pro",
"mode": "text-to-video",
"status": "succeeded",
"progress": 100,
"prompt": "Powolny ruch kamery przez deszczową neonową ulicę nocą, odbicia na mokrym asfalcie, kinowy klimat",
"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
}Statusy zadań
Zadanie przechodzi od queued do running i kończy się jako succeeded lub failed. Przestań odpytywać przy stanie końcowym.
queued- Zaakceptowane i czekające na slot renderowania. Kontynuuj odpytywanie.
running- Renderowanie w toku. postęp od 0 do 99.
succeeded- Gotowe. output_url i thumbnail_url wskazują na gotowe pliki.
failed- Zakończone bez wyniku. error wyjaśnia powód, a refunded jest true, kredyty wracają na twoje konto.
Kody błędów
Każdy błąd ma ten sam format. Rozgałęźiaj po kodzie i pokaż komunikat użytkownikowi. Zadanie zaakceptowane może później nie powieść się, więc sprawdzaj status przy odpytywaniu.
{
"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_jsonTreść nie jest obiektem JSON. - 401
unauthorizedBrak klucza Bearer w nagłówku Authorization. - 401
invalid_api_keyKlucz nie istnieje lub jest nieprawidłowy. - 401
key_revokedKlucz został unieważniony. Utwórz nowy. - 402
insufficient_creditsZa mało kredytów na to żądanie. Odpowiedź zawiera potrzebną ilość i saldo. - 403
plan_limit_exceededŻądanie przekracza limit generowania planu. Zmniejsz czas trwania lub rozdzielczość. - 403
account_suspendedKonto właściciela klucza jest zawieszone. - 403
api_disabledAPI jest obecnie wyłączone. - 404
not_foundZadanie lub endpoint nie istnieje na tym koncie. - 404
model_not_foundBrak modelu o takim identyfikatorze. Sprawdź endpoint modeli. - 409
too_many_runningTo konto ma już 3 zadań w trakcie. Poczekaj na zakończenie jednego. - 422
invalid_requestBrakuje pola lub ma nieprawidłowy typ. details wymienia każdy problem. - 422
wrong_endpointModel należy do innego endpointu, np. model obrazu wysłany do wideo. - 422
invalid_modeTryb nie jest obsługiwany przez ten endpoint. - 422
mode_not_supportedModel nie obsługuje tego trybu. - 422
prompt_requiredTen tryb wymaga promptu. - 422
image_requiredTen tryb wymaga image_url. - 429
rate_limitedZa dużo żądań. Poczekaj podaną w Retry-After liczbę sekund, potem spróbuj ponownie. - 500
internal_errorCoś się zepsuło po naszej stronie. Spróbuj ponownie za chwilę. - 503
service_busyObecnie jesteśmy przeciążeni. Spróbuj ponownie za kilka minut.
Kredyty i zwroty
Pobierane raz, przy wysłaniu
Każde zadanie kosztuje tyle samo co te same ustawienia w studio. Odpowiedź submit zwraca credits_charged i twoje nowe saldo. Dźwięk do wideo dodaje 20 kredytów.
Zwrot pełny za nieudane zadania
Jeśli zadanie się nie powiedzie, wszystkie jego kredyty wracają do puli, z której pochodziły, a zadanie pokazuje refunded jako true. Nic do zgłaszania.
Obowiązują limity planu
Limit generowania planu dotyczy też zadań API. Najpierw zużywane są kredyty z najszybszym terminem ważności, doładowania na końcu.
Limity szybkości
Limity liczone na klucz w ciągu minuty przesuwnej. Po przekroczeniu limitu otrzymujesz HTTP 429 z nagłówkiem Retry-After w sekundach. Każda odpowiedź zawiera nagłówki X-RateLimit, byś mógł zwolnić przed limitem.
- Wysyłanie
- 30 na minutę
- Tworzenie filmów, obrazów i piosenek.
- Odczyt
- 120 na minutę
- Zadania, saldo i modele. Liczone osobno od wysyłania.
- Wykonywane jednocześnie
- 3
- Zadań na konto renderowanych w tym samym czasie.
HTTP/1.1 429 Too Many Requests
Retry-After: 42
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 42Modele
Modele, które możesz dziś wywołać wraz z ich identyfikatorami i najniższą ceną. Punkt końcowy modeli zwraca tę samą listę ze wszystkimi opcjami.
- Seedance 2.5
seedance-2-5Wideo45 kredytów - Seedance 2.0 Pro
seedance-2-proWideo35 kredytów - Seedance 2.0 Mini
seedance-2-miniWideo24 kredytów - Wan 3.0
wan-3Wideo46 kredytów - MiniMax H3
minimax-h3Wideo30 kredytów - Kling 3
kling-3Wideo30 kredytów - Seedance 1.5 Pro
seedance-1-5-proWideo31 kredytów - Seedance 1.0
seedance-1Wideo32 kredytów - Kling O3
kling-o3Wideo46 kredytów - Kling 2.6
kling-2-6Wideo41 kredytów - Wan 2.7
wan-2-7Wideo35 kredytów - Wan
wanWideo32 kredytów - Grok
grok-videoWideo47 kredytów - Veo 3
veo-3Wideo42 kredytów - GPT Image 2.5
gpt-image-2-5Obraz4 kredytów - GPT Image 2
gpt-image-2Obraz3 kredytów - Seedream 5 Pro
seedream-5-proObraz4 kredytów - Seedream 5
seedream-5Obraz3 kredytów - Nano Banana Pro
nano-banana-proObraz5 kredytów - Nano Banana 2
nano-banana-2Obraz3 kredytów - Nano Banana 2 Lite
nano-banana-2-liteObraz2 kredytów - AI Music
ai-musicMuzyka6 kredytów
Gotowy do tworzenia?
Utwórz klucz w swoim koncie i wyślij pierwsze zapytanie w minutę.