API Public

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.

URL de bazăhttps://novamotions.com/api/v1

Pornire 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. 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. 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. 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.

HTTP
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

GET/api/v1/models

Toate 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

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
    }
  ]
}

Verifică soldul

GET/api/v1/balance

Creditele 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

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"
  }
}

Creează un videoclip

POST/api/v1/videos

Text î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

  • modelstring
    ObligatoriuSlug-ul modelului din punctul final modelelor.
  • promptstring
    ObligatoriuCe ar trebui să se întâmple în clip. Opțional pentru imagine-în-videoclip, unde cadrul de start conduce.
  • modestring
    Opționaltext-în-videoclip, imagine-în-videoclip sau referință-în-videoclip. Este ales din inputurile tale dacă îl omiți.
  • durationinteger
    OpționalDurata clipului în secunde. Trebuie să fie una dintre duratele modelului, altfel se folosește valoarea implicită a acestuia.
  • resolutionstring
    OpționalRezoluția de ieșire, cum ar fi 720p sau 1080p, din lista modelului.
  • aspect_ratiostring
    Opțional16:9, 9:16, 1:1, 4:3, 3:4 sau 21:9, din lista modelului. Implicit 16:9.
  • audioboolean
    Opț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.
  • countinteger
    OpționalCâte videoclipuri să se creeze din aceeași cerere, de la 1 la 4. Fiecare este o sarcină separată și se taxează separat.
  • seedinteger
    Opț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

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

Creează imagini

POST/api/v1/images

Text î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

  • modelstring
    ObligatoriuSlug-ul modelului din punctul final modelelor.
  • promptstring
    ObligatoriuCe ar trebui să arate imaginea sau cum să modifici imaginea pe care o trimiți.
  • modestring
    Opționaltext-to-image sau image-edit. Selectat din intrările tale dacă este omis.
  • resolutionstring
    Opțional1K, 2K sau 4K, din lista modelului.
  • aspect_ratiostring
    Opț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.
  • countinteger
    OpționalImagini per prompt, de la 1 la 4. Fiecare este o sarcină separată.
  • seedinteger
    Opț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

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

Creează o melodie

POST/api/v1/music

O melodie completă dintr-o descriere, cu versurile tale sau instrumentală.

Parametri

  • modelstring
    ObligatoriuSlug-ul modelului din punctul final modelelor.
  • promptstring
    ObligatoriuGen, stare, instrumente și tempo al cântecului.
  • durationinteger
    OpționalDurata cântecului în secunde, din duratele modelului.
  • lyricsstring
    OpționalVersurile tale. Lasă necompletat pentru ca modelul să le scrie.
  • instrumentalboolean
    Opț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

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

Obține o sarcină

GET/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

JSON
{
  "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

GET/api/v1/tasks

Sarcinile 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

  • limitinteger
    OpționalRezultate pe pagină, de la 1 la 50. Implicit 20.
  • cursorstring
    OpționalValoarea next_cursor de la pagina anterioară.
  • statusstring
    Opț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

JSON
{
  "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.

Răspuns eroare
{
  "error": {
    "code": "insufficient_credits",
    "message": "Not enough credits for this request. Top up or renew your plan, then retry.",
    "needed": 44,
    "balance": 14
  }
}
  • 400invalid_jsonCorpul nu este un obiect JSON.
  • 401unauthorizedLipsește cheia Bearer în antetul Authorization.
  • 401invalid_api_keyCheia nu există sau este incorectă.
  • 401key_revokedCheia a fost revocată. Creează una nouă.
  • 402insufficient_creditsCredite insuficiente pentru această cerere. Răspunsul include necesarul și soldul.
  • 403plan_limit_exceededCererea depășește limita per generație a planului. Redu durata sau rezoluția.
  • 403account_suspendedContul care deține cheia este suspendat.
  • 403api_disabledAPI-ul este dezactivat momentan.
  • 404not_foundSarcina sau endpoint-ul nu există pe acest cont.
  • 404model_not_foundNu există model cu acest slug. Verifică endpoint-ul modelelor.
  • 409too_many_runningAcest cont are deja 3 sarcini în execuție. Așteaptă să se termine una.
  • 422invalid_requestUn câmp lipsește sau are tip greșit. details listează fiecare problemă.
  • 422wrong_endpointModelul aparține altui endpoint, de exemplu un model de imagine trimis la videoclipuri.
  • 422invalid_modeModul nu este cunoscut de acest endpoint.
  • 422mode_not_supportedModelul nu suportă acest mod.
  • 422prompt_requiredAcest mod necesită un prompt.
  • 422image_requiredAcest mod necesită image_url.
  • 429rate_limitedPrea multe cereri. Așteaptă secundele din Retry-After, apoi încearcă din nou.
  • 500internal_errorCeva s-a stricat la noi. Încearcă din nou peste un moment.
  • 503service_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.
Antete limită de rată
HTTP/1.1 429 Too Many Requests
Retry-After: 42
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 42

Modele

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.5seedance-2-545 credite
  • Seedance 2.0 Proseedance-2-pro35 credite
  • Seedance 2.0 Miniseedance-2-mini24 credite
  • Wan 3.0wan-346 credite
  • MiniMax H3minimax-h330 credite
  • Kling 3kling-330 credite
  • Seedance 1.5 Proseedance-1-5-pro31 credite
  • Seedance 1.0seedance-132 credite
  • Kling O3kling-o346 credite
  • Kling 2.6kling-2-641 credite
  • Wan 2.7wan-2-735 credite
  • Wanwan32 credite
  • Grokgrok-video47 credite
  • Veo 3veo-342 credite
  • GPT Image 2.5gpt-image-2-54 credite
  • GPT Image 2gpt-image-23 credite
  • Seedream 5 Proseedream-5-pro4 credite
  • Seedream 5seedream-53 credite
  • Nano Banana Pronano-banana-pro5 credite
  • Nano Banana 2nano-banana-23 credite
  • Nano Banana 2 Litenano-banana-2-lite2 credite
  • AI Musicai-music6 credite

Gata să creezi?

Creează o cheie în contul tău și trimite prima cerere în câteva secunde.

Creează o cheie API