Öffentliche API

Erstelle Videos, Bilder und Musik mit deinem eigenen Code

Erstelle einen Schlüssel, sende eine Anfrage mit Bearer-Authentifizierung und frage die Aufgabe ab, bis deine Datei fertig ist. Dieselben Modelle, Preise, Planlimits und Rückerstattungen wie im NovaMotions AI Studio, aus einem gemeinsamen Guthaben.

Basis-URLhttps://novamotions.com/api/v1

Schnellstart

Drei Schritte von null bis zum fertigen Video. Jede Anfrage ist einfaches HTTPS mit JSON, daher funktioniert jede Sprache oder jedes Tool.

  1. 1

    Schlüssel erstellen

    Öffne die API-Seite in deinem Konto und erstelle einen Schlüssel. Der vollständige Schlüssel wird nur einmal angezeigt, speichere ihn daher in einer Umgebungsvariable namens API_KEY.

  2. 2

    Aufgabe einreichen

    Sende das Modell, eine Eingabeaufforderung und alle Optionen. Credits werden einmalig bei der Einreichung abgezogen, die Antwort zeigt dir, wie viele und welche noch übrig sind.

    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": "Eine langsame Dollyfahrt durch eine regnerische Neonstraße bei Nacht, Spiegelungen auf nassem Asphalt, filmisch",
        "duration": 5,
        "resolution": "720p",
        "aspect_ratio": "16:9"
      }'
  3. 3

    Abfragen, bis es fertig ist

    Prüfe die Aufgabe alle paar Sekunden. Wenn der Status erfolgreich ist, lade die Datei von output_url herunter. Falls sie fehlgeschlagen ist, sind die Credits bereits zurück auf deinem Guthaben.

    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

Authentifizierung

Sende deinen Schlüssel im Authorization-Header jeder Anfrage. Schlüssel beginnen mit nm_live_ und gehören zu einem Konto.

HTTP
Authorization: Bearer nm_live_your_api_key
Content-Type: application/json
Basis-URL
Alle Endpunkte sind unter https://novamotions.com/api/v1 erreichbar und liefern JSON zurück.
Schlüssel geheim halten
Rufe die API von deinem Server auf, niemals aus einem Browser oder einer mobilen App. Ein widerrufener Schlüssel funktioniert sofort nicht mehr.
Ein Guthaben
API-Aufrufe verbrauchen die Credits des Schlüsselinhabers, dasselbe Guthaben, das auch das Studio nutzt. Planlimits pro Generierung gelten ebenfalls.
Medien-URLs
Bilder, Videos und Audio, die du übergibst, müssen öffentliche https-URLs sein, die ohne Cookies oder Anmeldung geladen werden können.

Modelle auflisten

GET/api/v1/models

Alle Modelle, die die API anbietet, mit ihren Modi, Laufzeiten, Auflösungen, Seitenverhältnissen, Audio-Unterstützung, Referenzlimits und dem niedrigsten Preis in Credits. Nutze dies, um einen Modell-Auswahldialog zu bauen, statt Optionen fest zu kodieren.

Anfrage

curl https://novamotions.com/api/v1/models \
  -H "Authorization: Bearer $API_KEY"

Antwort

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

Guthaben prüfen

GET/api/v1/balance

Die Credits, die der Schlüsselinhaber aktuell ausgeben kann, aufgeteilt in Pools mit Ablaufdaten, plus der aktuelle Plan.

Anfrage

curl https://novamotions.com/api/v1/balance \
  -H "Authorization: Bearer $API_KEY"

Antwort

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

Video erstellen

POST/api/v1/videos

Text-zu-Video, Bild-zu-Video (ein Startbild und optional ein Endbild) oder Referenz-zu-Video (Bilder, Clips und Audio, die das Ergebnis steuern). Der Modus wird aus den Eingaben gewählt, wenn du ihn weglässt.

Parameter

  • modelstring
    ErforderlichModell-Slug vom Modelle-Endpunkt.
  • promptstring
    ErforderlichWas im Clip passieren soll. Optional bei Bild-zu-Video, wo das Startbild führt.
  • modestring
    Optionaltext-zu-video, bild-zu-video oder referenz-zu-video. Wird aus deinen Eingaben gewählt, wenn du es weglässt.
  • durationinteger
    OptionalClip-Länge in Sekunden. Muss eine der Modell-Laufzeiten sein, sonst wird die Standardlänge verwendet.
  • resolutionstring
    OptionalAusgabeauflösung wie 720p oder 1080p, aus der Modellliste.
  • aspect_ratiostring
    Optional16:9, 9:16, 1:1, 4:3, 3:4 oder 21:9 aus der Modellauswahl. Standard ist 16:9.
  • audioboolean
    OptionalErzeuge einen Soundtrack mit Dialog, Effekten und Ambiente bei unterstützten Modellen. Kostet 20 Credits. Standard ist aus.
  • image_urlstring (URL)
    OptionalStartbild für Bild-zu-Video.
  • end_image_urlstring (URL)
    OptionalEndbild, bei Modellen die erstes und letztes Bild unterstützen.
  • reference_image_urlsstring[]
    OptionalReferenzbilder für Referenz-zu-Video, bis zum Limit des Modells.
  • reference_video_urlsstring[]
    OptionalReferenzclips für Referenz-zu-Video, bis zum Limit des Modells.
  • reference_audio_urlsstring[]
    OptionalAudio zur Steuerung des Soundtracks, bis zum Limit des Modells.
  • countinteger
    OptionalWie viele Videos aus derselben Anfrage, 1 bis 4. Jede ist eine separate Aufgabe und wird einzeln berechnet.
  • seedinteger
    OptionalFester Seed für reproduzierbare Ergebnisse. Jedes weitere Element in einem Batch erhält den nächsten Seed.

Anfrage

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": "Eine langsame Dollyfahrt durch eine regnerische Neonstraße bei Nacht, Spiegelungen auf nassem Asphalt, filmisch",
    "duration": 5,
    "resolution": "720p",
    "aspect_ratio": "16:9"
  }'

Antwort

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

Bilder erstellen

POST/api/v1/images

Text-zu-Bild oder Bearbeitung eines bestehenden Bildes mit einer Eingabeaufforderung. Fordere bis zu vier Bilder pro Anfrage an, jedes ist eine eigene Aufgabe.

Parameter

  • modelstring
    ErforderlichModell-Slug vom Modelle-Endpunkt.
  • promptstring
    ErforderlichWas das Bild zeigen soll oder wie das übergebene Bild verändert werden soll.
  • modestring
    Optionaltext-zu-Bild oder Bildbearbeitung. Wird aus deinen Eingaben gewählt, wenn nicht angegeben.
  • resolutionstring
    Optional1K, 2K oder 4K aus der Modellauswahl.
  • aspect_ratiostring
    OptionalSeitenverhältnis aus der Modellauswahl, inklusive Auto bei unterstützten Modellen.
  • image_urlstring (URL)
    OptionalDas zu bearbeitende Bild. Für Bildbearbeitung erforderlich.
  • reference_image_urlsstring[]
    OptionalZusätzliche Referenzbilder für eine Bearbeitung, bis zum Limit des Modells.
  • countinteger
    OptionalBilder pro Eingabe, 1 bis 4. Jede ist eine separate Aufgabe.
  • seedinteger
    OptionalFester Seed für reproduzierbare Ergebnisse. Jedes weitere Element in einem Batch erhält den nächsten Seed.

Anfrage

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": "Studio-Produktfoto einer Keramiktasse auf Eichenholz, weiches Fensterlicht, geringe Tiefenschärfe",
    "resolution": "1K",
    "aspect_ratio": "1:1",
    "count": 1
  }'

Antwort

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

Song erstellen

POST/api/v1/music

Ein kompletter Song aus einer Beschreibung, mit eigenen Texten oder als Instrumental.

Parameter

  • modelstring
    ErforderlichModell-Slug vom Modelle-Endpunkt.
  • promptstring
    ErforderlichGenre, Stimmung, Instrumente und Tempo des Songs.
  • durationinteger
    OptionalLänge des Songs in Sekunden, aus den Modell-Dauern.
  • lyricsstring
    OptionalEigene Liedtexte. Weglassen, damit das Modell sie schreibt.
  • instrumentalboolean
    OptionalErstelle einen Song ohne Gesang. Standard ist aus.

Anfrage

curl -X POST https://novamotions.com/api/v1/music \
  -H "Authorization: Bearer $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "ai-music",
    "prompt": "Warmer Lo-Fi Hip-Hop mit sanftem Klavier, Vinyl-Knistern und entspanntem Spätnachtsgroove",
    "duration": 60,
    "instrumental": false
  }'

Antwort

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

Aufgabe abrufen

GET/api/v1/tasks/{id}

Frage eine Aufgabe über ihre ID ab. Sobald der Status erfolgreich ist, zeigt output_url auf die fertige Datei. Abfragen verbrauchen das Leselimit, belasten also nicht dein Einreichbudget.

Anfrage

curl https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2 \
  -H "Authorization: Bearer $API_KEY"

Antwort

JSON
{
  "id": "cmtask8k2x0001ab7c9d0e1f2",
  "object": "task",
  "kind": "video",
  "model": "seedance-2-pro",
  "mode": "text-to-video",
  "status": "succeeded",
  "progress": 100,
  "prompt": "Eine langsame Dollyfahrt durch eine regnerische Neonstraße bei Nacht, Spiegelungen auf nassem Asphalt, filmisch",
  "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"
}

Aufgaben auflisten

GET/api/v1/tasks

Aufgaben, die du in den letzten 30 Tagen über die API erstellt hast, neueste zuerst, mit derselben Struktur wie eine einzelne Aufgabe. Übergebe next_cursor als Cursor, um die nächste Seite zu laden.

Parameter

  • limitinteger
    OptionalErgebnisse pro Seite, 1 bis 50. Standard ist 20.
  • cursorstring
    OptionalDer next_cursor Wert von der vorherigen Seite.
  • statusstring
    OptionalNur Aufgaben mit diesem Status: queued, running, succeeded oder failed.

Anfrage

curl https://novamotions.com/api/v1/tasks?limit=20 \
  -H "Authorization: Bearer $API_KEY"

Antwort

JSON
{
  "object": "list",
  "data": [
    {
      "id": "cmtask8k2x0001ab7c9d0e1f2",
      "object": "task",
      "kind": "video",
      "model": "seedance-2-pro",
      "mode": "text-to-video",
      "status": "succeeded",
      "progress": 100,
      "prompt": "Eine langsame Dollyfahrt durch eine regnerische Neonstraße bei Nacht, Spiegelungen auf nassem Asphalt, filmisch",
      "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
}

Aufgabenstatus

Eine Aufgabe wechselt von queued zu running und endet als succeeded oder failed. Stoppe das Abfragen bei Endstatus.

queued
Akzeptiert und wartet auf einen Renderplatz. Weiter abfragen.
running
Wird gerade gerendert. Fortschritt von 0 bis 99.
succeeded
Fertig. output_url und thumbnail_url zeigen auf die fertigen Dateien.
failed
Endete ohne Ergebnis. error erklärt warum und refunded ist true, die Credits sind zurück auf deinem Konto.

Fehlercodes

Jeder Fehler hat dieselbe Struktur. Nach Code verzweigen und Nachricht für Nutzer anzeigen. Eine akzeptierte Aufgabe kann später noch fehlschlagen, also Status beim Abfragen prüfen.

Fehlerantwort
{
  "error": {
    "code": "insufficient_credits",
    "message": "Not enough credits for this request. Top up or renew your plan, then retry.",
    "needed": 44,
    "balance": 14
  }
}
  • 400invalid_jsonDer Body ist kein JSON-Objekt.
  • 401unauthorizedKein Bearer-Schlüssel im Authorization-Header.
  • 401invalid_api_keyDer Schlüssel existiert nicht oder ist fehlerhaft.
  • 401key_revokedDer Schlüssel wurde widerrufen. Erstelle einen neuen.
  • 402insufficient_creditsNicht genug Credits für diese Anfrage. Die Antwort enthält benötigte und Kontostand.
  • 403plan_limit_exceededDie Anfrage überschreitet das Limit pro Generierung des Plans. Dauer oder Auflösung verringern.
  • 403account_suspendedDas Konto, dem der Schlüssel gehört, ist gesperrt.
  • 403api_disabledDie API ist derzeit deaktiviert.
  • 404not_foundDie Aufgabe oder der Endpunkt existiert nicht für dieses Konto.
  • 404model_not_foundKein Modell mit diesem Slug. Modelle-Endpunkt prüfen.
  • 409too_many_runningDieses Konto hat bereits 3 Aufgaben in Bearbeitung. Warte bis eine fertig ist.
  • 422invalid_requestEin Feld fehlt oder hat den falschen Typ. details listet jedes Problem auf.
  • 422wrong_endpointDas Modell gehört zu einem anderen Endpunkt, z.B. ein Bildmodell wurde an Video gesendet.
  • 422invalid_modeDer Modus ist diesem Endpunkt nicht bekannt.
  • 422mode_not_supportedDas Modell unterstützt diesen Modus nicht.
  • 422prompt_requiredDieser Modus benötigt eine Eingabe.
  • 422image_requiredDieser Modus benötigt image_url.
  • 429rate_limitedZu viele Anfragen. Warte die Sekunden aus Retry-After und versuche es erneut.
  • 500internal_errorAuf unserer Seite ist etwas schiefgelaufen. Versuche es gleich nochmal.
  • 503service_busyWir sind gerade ausgelastet. Versuche es in ein paar Minuten erneut.

Credits und Rückerstattungen

Einmalige Belastung bei Absenden

Jede Aufgabe kostet gleich viel wie dieselben Einstellungen im Studio. Die Antwort beim Absenden enthält credits_charged und dein neues Guthaben. Audio bei Video kostet 20 Credits extra.

Fehlgeschlagene Aufgaben werden vollständig erstattet

Wenn eine Aufgabe aus irgendeinem Grund fehlschlägt, gehen alle ihre Credits zurück in die jeweiligen Pools und die Aufgabe zeigt refunded als true. Keine Ansprüche nötig.

Planlimits gelten

Das Limit pro Generierung deines Plans gilt auch für API-Aufgaben. Credits mit baldiger Ablaufzeit werden zuerst verbraucht, Auflade-Credits zuletzt.

Ratenlimits

Limits werden pro Schlüssel über eine rollierende Minute gezählt. Bei Überschreitung erhältst du HTTP 429 mit einem Retry-After Header in Sekunden. Jede Antwort enthält X-RateLimit Header, damit du vorher langsamer machen kannst.

Absenden
30 pro Minute
Videos, Bilder und Songs erstellen.
Lesen
120 pro Minute
Aufgaben, Guthaben und Modelle. Getrennt von Absenden gezählt.
Gleichzeitig laufend
3
Aufgaben pro Konto, die gleichzeitig gerendert werden.
Rate-Limit-Header
HTTP/1.1 429 Too Many Requests
Retry-After: 42
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 42

Modelle

Die Modelle, die Sie heute mit ihren Slugs und dem niedrigsten Preis aufrufen können. Der Modelle-Endpunkt gibt dieselbe Liste mit allen Optionen zurück.

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

Bereit zum Loslegen?

Erstellen Sie einen Schlüssel in Ihrem Konto und senden Sie Ihre erste Anfrage in einer Minute.

API-Schlüssel erstellen