Publiczne API

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.

Podstawowy URLhttps://novamotions.com/api/v1

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

HTTP
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

GET/api/v1/models

Każ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ź

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

Sprawdź saldo

GET/api/v1/balance

Kredyty, 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ź

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

Twórz wideo

POST/api/v1/videos

Tekst 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

  • modelstring
    WymaganeIdentyfikator modelu z punktu końcowego modeli.
  • promptstring
    WymaganeCo ma się dziać w klipie. Opcjonalne dla obraz-na-wideo, gdzie prowadzi klatka startowa.
  • modestring
    Opcjonalnetext-to-video, image-to-video lub reference-to-video. Wybierany na podstawie twoich danych wejściowych, jeśli pominięty.
  • durationinteger
    OpcjonalneDługość klipu w sekundach. Musi być jedną z długości modelu, w przeciwnym razie używana jest domyślna.
  • resolutionstring
    OpcjonalneRozdzielczość wyjściowa, np. 720p lub 1080p, z listy modelu.
  • aspect_ratiostring
    Opcjonalne16:9, 9:16, 1:1, 4:3, 3:4 lub 21:9, z listy modeli. Domyślnie 16:9.
  • audioboolean
    OpcjonalneGeneruj ś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.
  • countinteger
    OpcjonalneIle filmów wykonać z tego samego zapytania, od 1 do 4. Każdy to osobne zadanie i jest rozliczany osobno.
  • seedinteger
    OpcjonalneStał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ź

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

Twórz obrazy

POST/api/v1/images

Tekst 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

  • modelstring
    WymaganeIdentyfikator modelu z punktu końcowego modeli.
  • promptstring
    WymaganeCo powinien pokazywać obraz lub jak zmienić przekazany obraz.
  • modestring
    Opcjonalnetext-to-image lub image-edit. Wybierane z twoich danych wejściowych, jeśli pominięte.
  • resolutionstring
    Opcjonalne1K, 2K lub 4K, z listy modeli.
  • aspect_ratiostring
    OpcjonalneProporcje 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.
  • countinteger
    OpcjonalneObrazów na zapytanie, od 1 do 4. Każdy to osobne zadanie.
  • seedinteger
    OpcjonalneStał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ź

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

Twórz piosenkę

POST/api/v1/music

Pełna piosenka na podstawie opisu, z własnymi tekstami lub instrumentalna.

Parametry

  • modelstring
    WymaganeIdentyfikator modelu z punktu końcowego modeli.
  • promptstring
    WymaganeGatunek, nastrój, instrumenty i tempo utworu.
  • durationinteger
    OpcjonalneDługość utworu w sekundach, z dostępnych długości modelu.
  • lyricsstring
    OpcjonalneTwoje własne teksty piosenek. Pomijaj, aby model je napisał.
  • instrumentalboolean
    OpcjonalneUtwó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ź

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

Pobierz zadanie

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

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

GET/api/v1/tasks

Zadania 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

  • limitinteger
    OpcjonalneWyników na stronę, od 1 do 50. Domyślnie 20.
  • cursorstring
    OpcjonalneWartość next_cursor z poprzedniej strony.
  • statusstring
    OpcjonalneTylko 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ź

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

Odpowiedź błędu
{
  "error": {
    "code": "insufficient_credits",
    "message": "Not enough credits for this request. Top up or renew your plan, then retry.",
    "needed": 44,
    "balance": 14
  }
}
  • 400invalid_jsonTreść nie jest obiektem JSON.
  • 401unauthorizedBrak klucza Bearer w nagłówku Authorization.
  • 401invalid_api_keyKlucz nie istnieje lub jest nieprawidłowy.
  • 401key_revokedKlucz został unieważniony. Utwórz nowy.
  • 402insufficient_creditsZa mało kredytów na to żądanie. Odpowiedź zawiera potrzebną ilość i saldo.
  • 403plan_limit_exceededŻądanie przekracza limit generowania planu. Zmniejsz czas trwania lub rozdzielczość.
  • 403account_suspendedKonto właściciela klucza jest zawieszone.
  • 403api_disabledAPI jest obecnie wyłączone.
  • 404not_foundZadanie lub endpoint nie istnieje na tym koncie.
  • 404model_not_foundBrak modelu o takim identyfikatorze. Sprawdź endpoint modeli.
  • 409too_many_runningTo konto ma już 3 zadań w trakcie. Poczekaj na zakończenie jednego.
  • 422invalid_requestBrakuje pola lub ma nieprawidłowy typ. details wymienia każdy problem.
  • 422wrong_endpointModel należy do innego endpointu, np. model obrazu wysłany do wideo.
  • 422invalid_modeTryb nie jest obsługiwany przez ten endpoint.
  • 422mode_not_supportedModel nie obsługuje tego trybu.
  • 422prompt_requiredTen tryb wymaga promptu.
  • 422image_requiredTen tryb wymaga image_url.
  • 429rate_limitedZa dużo żądań. Poczekaj podaną w Retry-After liczbę sekund, potem spróbuj ponownie.
  • 500internal_errorCoś się zepsuło po naszej stronie. Spróbuj ponownie za chwilę.
  • 503service_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.
Nagłówki limitu szybkości
HTTP/1.1 429 Too Many Requests
Retry-After: 42
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 42

Modele

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

Gotowy do tworzenia?

Utwórz klucz w swoim koncie i wyślij pierwsze zapytanie w minutę.

Utwórz klucz API