Generează videoclipuri, imagini și muzică din propriul cod
Creează o cheie, trimite o cerere cu autentificare Bearer și verifică starea sarcinii până când fișierul tău este gata. Aceleași modele, prețuri, limite de plan și rambursări ca în studioul NovaMotions AI, dintr-un singur sold comun de credite.
https://novamotions.com/api/v1Pornire rapidă
Trei pași de la zero la un videoclip finalizat. Fiecare cerere este HTTPS simplu cu JSON, deci orice limbaj sau unealtă funcționează.
- 1
Creează o cheie
Deschide pagina API din contul tău și creează o cheie. Cheia completă este afișată o singură dată, deci salveaz-o într-o variabilă de mediu numită API_KEY.
- 2
Trimite o sarcină
Trimite modelul, un prompt și orice opțiuni. Creditele se scad o singură dată, la trimitere, iar răspunsul îți spune câte și ce a rămas.
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": "Un dolly lent printr-o stradă neon plină de ploaie noaptea, reflexii pe asfalt umed, cinematic", "duration": 5, "resolution": "720p", "aspect_ratio": "16:9" }' - 3
Verifică până e gata
Verifică sarcina la câteva secunde. Când starea este reușită, descarcă fișierul de la output_url. Dacă a eșuat, creditele sunt deja înapoi în soldul tău.
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
Autentificare
Trimite cheia ta în antetul Authorization al fiecărei cereri. Cheile încep cu nm_live_ și aparțin unui singur cont.
Authorization: Bearer nm_live_your_api_key
Content-Type: application/json- URL de bază
- Toate punctele finale sunt sub https://novamotions.com/api/v1 și returnează JSON.
- Păstrează cheile secrete
- Apelează API-ul de pe serverul tău, niciodată dintr-un browser sau o aplicație mobilă. O cheie revocată încetează să funcționeze imediat.
- Un singur sold
- Apelurile API consumă creditele proprietarului cheii, același sold folosit de studio. Se aplică și limitele planului pentru fiecare generație.
- URL-uri media
- Imaginile, videoclipurile și audio pe care le trimiți trebuie să fie URL-uri publice https care se încarcă fără cookie-uri sau autentificare.
Lista modelelor
/api/v1/modelsToate modelele oferite de API, cu modurile, duratele, rezoluțiile, raporturile de aspect, suportul audio, limitele de referință și cel mai mic preț în credite. Folosește-l pentru a construi un selector de modele în loc să codifici opțiunile manual.
Cerere
curl https://novamotions.com/api/v1/models \
-H "Authorization: Bearer $API_KEY"Răspuns
{
"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
}
]
}Verifică soldul
/api/v1/balanceCreditele pe care proprietarul cheii le poate cheltui acum, împărțite pe pool-uri cu datele lor de expirare, plus planul curent.
Cerere
curl https://novamotions.com/api/v1/balance \
-H "Authorization: Bearer $API_KEY"Răspuns
{
"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"
}
}Creează un videoclip
/api/v1/videosText în videoclip, imagine în videoclip (un cadru de start și opțional un cadru final) sau referință la videoclip (imagini, clipuri și audio care ghidează rezultatul). Modul este ales din inputuri dacă îl omiți.
Parametri
modelstringObligatoriuSlug-ul modelului din punctul final modelelor.promptstringObligatoriuCe ar trebui să se întâmple în clip. Opțional pentru imagine-în-videoclip, unde cadrul de start conduce.modestringOpționaltext-în-videoclip, imagine-în-videoclip sau referință-în-videoclip. Este ales din inputurile tale dacă îl omiți.durationintegerOpționalDurata clipului în secunde. Trebuie să fie una dintre duratele modelului, altfel se folosește valoarea implicită a acestuia.resolutionstringOpționalRezoluția de ieșire, cum ar fi 720p sau 1080p, din lista modelului.aspect_ratiostringOpțional16:9, 9:16, 1:1, 4:3, 3:4 sau 21:9, din lista modelului. Implicit 16:9.audiobooleanOpționalGenerează o coloană sonoră cu dialog, efecte și ambianță pe modelele care o suportă. Adaugă 20 credite. Implicit fals.image_urlstring (URL)OpționalCadru de început pentru imagine-video.end_image_urlstring (URL)OpționalCadru final, pe modelele care suportă primul și ultimul cadru.reference_image_urlsstring[]OpționalImagini de referință pentru referință-video, până la limita modelului.reference_video_urlsstring[]OpționalClipuri de referință pentru referință-video, până la limita modelului.reference_audio_urlsstring[]OpționalAudio care ghidează coloana sonoră, până la limita modelului.countintegerOpționalCâte videoclipuri să se creeze din aceeași cerere, de la 1 la 4. Fiecare este o sarcină separată și se taxează separat.seedintegerOpționalSeed fix pentru rezultate repetabile. Fiecare element suplimentar dintr-un lot primește seed-ul următor.
Cerere
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": "Un dolly lent printr-o stradă neon plină de ploaie noaptea, reflexii pe asfalt umed, cinematic",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9"
}'Răspuns
{
"tasks": [
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"status": "queued",
"credits": 44,
"url": "https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2"
}
],
"credits_charged": 44,
"balance": 1131
}Creează imagini
/api/v1/imagesText în imagine sau editează o imagine existentă cu un prompt. Poți cere până la patru imagini per cerere, fiecare fiind o sarcină separată.
Parametri
modelstringObligatoriuSlug-ul modelului din punctul final modelelor.promptstringObligatoriuCe ar trebui să arate imaginea sau cum să modifici imaginea pe care o trimiți.modestringOpționaltext-to-image sau image-edit. Selectat din intrările tale dacă este omis.resolutionstringOpțional1K, 2K sau 4K, din lista modelului.aspect_ratiostringOpționalRaport de aspect din lista modelului, inclusiv Auto pe modelele care îl suportă.image_urlstring (URL)OpționalImaginea de editat. Obligatoriu pentru image-edit.reference_image_urlsstring[]OpționalImagini suplimentare de referință pentru editare, până la limita modelului.countintegerOpționalImagini per prompt, de la 1 la 4. Fiecare este o sarcină separată.seedintegerOpționalSeed fix pentru rezultate repetabile. Fiecare element suplimentar dintr-un lot primește seed-ul următor.
Cerere
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": "Fotografie de studio a unei cești ceramice de cafea pe stejar, lumină moale de fereastră, adâncime mică de câmp",
"resolution": "1K",
"aspect_ratio": "1:1",
"count": 1
}'Răspuns
{
"tasks": [
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"status": "queued",
"credits": 3,
"url": "https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2"
}
],
"credits_charged": 3,
"balance": 1172
}Creează o melodie
/api/v1/musicO melodie completă dintr-o descriere, cu versurile tale sau instrumentală.
Parametri
modelstringObligatoriuSlug-ul modelului din punctul final modelelor.promptstringObligatoriuGen, stare, instrumente și tempo al cântecului.durationintegerOpționalDurata cântecului în secunde, din duratele modelului.lyricsstringOpționalVersurile tale. Lasă necompletat pentru ca modelul să le scrie.instrumentalbooleanOpționalCreează un cântec fără voce. Implicit fals.
Cerere
curl -X POST https://novamotions.com/api/v1/music \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "ai-music",
"prompt": "Lo-fi hip hop cald cu pian moale, zgomot de vinil și un groove relaxat de noapte târzie",
"duration": 60,
"instrumental": false
}'Răspuns
{
"tasks": [
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"status": "queued",
"credits": 11,
"url": "https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2"
}
],
"credits_charged": 11,
"balance": 1164
}Obține o sarcină
/api/v1/tasks/{id}Verifică o sarcină după id. Odată ce starea este reușită, output_url indică fișierul finalizat. Verificarea folosește limita de citire, deci nu consumă din bugetul de trimitere.
Cerere
curl https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2 \
-H "Authorization: Bearer $API_KEY"Răspuns
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"object": "task",
"kind": "video",
"model": "seedance-2-pro",
"mode": "text-to-video",
"status": "succeeded",
"progress": 100,
"prompt": "Un dolly lent printr-o stradă neon plină de ploaie noaptea, reflexii pe asfalt umed, cinematic",
"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"
}Listează sarcinile
/api/v1/tasksSarcinile create prin API în ultimele 30 de zile, cele mai noi primele, cu același format ca o sarcină individuală. Trimite next_cursor ca cursor pentru a încărca pagina următoare.
Parametri
limitintegerOpționalRezultate pe pagină, de la 1 la 50. Implicit 20.cursorstringOpționalValoarea next_cursor de la pagina anterioară.statusstringOpționalDoar sarcini cu acest status: queued, running, succeeded sau failed.
Cerere
curl https://novamotions.com/api/v1/tasks?limit=20 \
-H "Authorization: Bearer $API_KEY"Răspuns
{
"object": "list",
"data": [
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"object": "task",
"kind": "video",
"model": "seedance-2-pro",
"mode": "text-to-video",
"status": "succeeded",
"progress": 100,
"prompt": "Un dolly lent printr-o stradă neon plină de ploaie noaptea, reflexii pe asfalt umed, cinematic",
"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
}Stările sarcinilor
O sarcină trece de la queued la running și se încheie ca succeeded sau failed. Oprește interogarea la oricare dintre aceste stări finale.
queued- Acceptată și așteaptă un slot de redare. Continuă interogarea.
running- Se redă acum. progresul merge de la 0 la 99.
succeeded- Finalizat. output_url și thumbnail_url indică fișierele terminate.
failed- S-a încheiat fără rezultat. error explică motivul și refunded este true, creditele sunt returnate în soldul tău.
Coduri de eroare
Fiecare eroare are aceeași structură. Ramifică după cod și afișează mesajul pentru utilizator. O sarcină acceptată poate eșua ulterior, deci verifică-i statusul când interoghezi.
{
"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_jsonCorpul nu este un obiect JSON. - 401
unauthorizedLipsește cheia Bearer în antetul Authorization. - 401
invalid_api_keyCheia nu există sau este incorectă. - 401
key_revokedCheia a fost revocată. Creează una nouă. - 402
insufficient_creditsCredite insuficiente pentru această cerere. Răspunsul include necesarul și soldul. - 403
plan_limit_exceededCererea depășește limita per generație a planului. Redu durata sau rezoluția. - 403
account_suspendedContul care deține cheia este suspendat. - 403
api_disabledAPI-ul este dezactivat momentan. - 404
not_foundSarcina sau endpoint-ul nu există pe acest cont. - 404
model_not_foundNu există model cu acest slug. Verifică endpoint-ul modelelor. - 409
too_many_runningAcest cont are deja 3 sarcini în execuție. Așteaptă să se termine una. - 422
invalid_requestUn câmp lipsește sau are tip greșit. details listează fiecare problemă. - 422
wrong_endpointModelul aparține altui endpoint, de exemplu un model de imagine trimis la videoclipuri. - 422
invalid_modeModul nu este cunoscut de acest endpoint. - 422
mode_not_supportedModelul nu suportă acest mod. - 422
prompt_requiredAcest mod necesită un prompt. - 422
image_requiredAcest mod necesită image_url. - 429
rate_limitedPrea multe cereri. Așteaptă secundele din Retry-After, apoi încearcă din nou. - 500
internal_errorCeva s-a stricat la noi. Încearcă din nou peste un moment. - 503
service_busySuntem la capacitate maximă acum. Încearcă din nou în câteva minute.
Credite și rambursări
Taxat o singură dată, la trimitere
Fiecare sarcină costă la fel ca setările identice din studio. Răspunsul la trimitere returnează credits_charged și noul tău sold. Audio pe video adaugă 20 credite.
Sarcinile eșuate rambursează integral
Dacă o sarcină eșuează din orice motiv, toate creditele sale se întorc în pool-urile de unde au venit și sarcina arată refunded ca true. Nimic de revendicat.
Se aplică limitele planului
Limita per generație a planului tău se aplică și sarcinilor API. Creditele care expiră cel mai curând sunt cheltuite primele, creditele suplimentare ultimele.
Limite de rată
Limitele se calculează per cheie pe o fereastră mobilă de un minut. Peste limită primești HTTP 429 cu un antet Retry-After în secunde. Fiecare răspuns conține antetele X-RateLimit ca să poți încetini înainte de limită.
- Trimite
- 30 pe minut
- Crearea de videoclipuri, imagini și cântece.
- Citește
- 120 pe minut
- Sarcini, sold și modele. Contorizate separat de trimiteri.
- În execuție simultan
- 3
- Sarcini per cont care se redau în același timp.
HTTP/1.1 429 Too Many Requests
Retry-After: 42
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 42Modele
Modelele pe care le poți folosi astăzi cu slug-urile și cel mai mic preț. Endpoint-ul modelelor returnează aceeași listă cu toate opțiunile.
- Seedance 2.5
seedance-2-5Video45 credite - Seedance 2.0 Pro
seedance-2-proVideo35 credite - Seedance 2.0 Mini
seedance-2-miniVideo24 credite - Wan 3.0
wan-3Video46 credite - MiniMax H3
minimax-h3Video30 credite - Kling 3
kling-3Video30 credite - Seedance 1.5 Pro
seedance-1-5-proVideo31 credite - Seedance 1.0
seedance-1Video32 credite - Kling O3
kling-o3Video46 credite - Kling 2.6
kling-2-6Video41 credite - Wan 2.7
wan-2-7Video35 credite - Wan
wanVideo32 credite - Grok
grok-videoVideo47 credite - Veo 3
veo-3Video42 credite - GPT Image 2.5
gpt-image-2-5Imagine4 credite - GPT Image 2
gpt-image-2Imagine3 credite - Seedream 5 Pro
seedream-5-proImagine4 credite - Seedream 5
seedream-5Imagine3 credite - Nano Banana Pro
nano-banana-proImagine5 credite - Nano Banana 2
nano-banana-2Imagine3 credite - Nano Banana 2 Lite
nano-banana-2-liteImagine2 credite - AI Music
ai-musicMuzică6 credite
Gata să creezi?
Creează o cheie în contul tău și trimite prima cerere în câteva secunde.