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.
https://novamotions.com/api/v1Schnellstart
Drei Schritte von null bis zum fertigen Video. Jede Anfrage ist einfaches HTTPS mit JSON, daher funktioniert jede Sprache oder jedes Tool.
- 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
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
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.
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
/api/v1/modelsAlle 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
{
"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
/api/v1/balanceDie 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
{
"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
/api/v1/videosText-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
modelstringErforderlichModell-Slug vom Modelle-Endpunkt.promptstringErforderlichWas im Clip passieren soll. Optional bei Bild-zu-Video, wo das Startbild führt.modestringOptionaltext-zu-video, bild-zu-video oder referenz-zu-video. Wird aus deinen Eingaben gewählt, wenn du es weglässt.durationintegerOptionalClip-Länge in Sekunden. Muss eine der Modell-Laufzeiten sein, sonst wird die Standardlänge verwendet.resolutionstringOptionalAusgabeauflösung wie 720p oder 1080p, aus der Modellliste.aspect_ratiostringOptional16:9, 9:16, 1:1, 4:3, 3:4 oder 21:9 aus der Modellauswahl. Standard ist 16:9.audiobooleanOptionalErzeuge 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.countintegerOptionalWie viele Videos aus derselben Anfrage, 1 bis 4. Jede ist eine separate Aufgabe und wird einzeln berechnet.seedintegerOptionalFester 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
{
"tasks": [
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"status": "queued",
"credits": 44,
"url": "https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2"
}
],
"credits_charged": 44,
"balance": 1131
}Bilder erstellen
/api/v1/imagesText-zu-Bild oder Bearbeitung eines bestehenden Bildes mit einer Eingabeaufforderung. Fordere bis zu vier Bilder pro Anfrage an, jedes ist eine eigene Aufgabe.
Parameter
modelstringErforderlichModell-Slug vom Modelle-Endpunkt.promptstringErforderlichWas das Bild zeigen soll oder wie das übergebene Bild verändert werden soll.modestringOptionaltext-zu-Bild oder Bildbearbeitung. Wird aus deinen Eingaben gewählt, wenn nicht angegeben.resolutionstringOptional1K, 2K oder 4K aus der Modellauswahl.aspect_ratiostringOptionalSeitenverhä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.countintegerOptionalBilder pro Eingabe, 1 bis 4. Jede ist eine separate Aufgabe.seedintegerOptionalFester 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
{
"tasks": [
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"status": "queued",
"credits": 3,
"url": "https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2"
}
],
"credits_charged": 3,
"balance": 1172
}Song erstellen
/api/v1/musicEin kompletter Song aus einer Beschreibung, mit eigenen Texten oder als Instrumental.
Parameter
modelstringErforderlichModell-Slug vom Modelle-Endpunkt.promptstringErforderlichGenre, Stimmung, Instrumente und Tempo des Songs.durationintegerOptionalLänge des Songs in Sekunden, aus den Modell-Dauern.lyricsstringOptionalEigene Liedtexte. Weglassen, damit das Modell sie schreibt.instrumentalbooleanOptionalErstelle 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
{
"tasks": [
{
"id": "cmtask8k2x0001ab7c9d0e1f2",
"status": "queued",
"credits": 11,
"url": "https://novamotions.com/api/v1/tasks/cmtask8k2x0001ab7c9d0e1f2"
}
],
"credits_charged": 11,
"balance": 1164
}Aufgabe abrufen
/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
{
"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
/api/v1/tasksAufgaben, 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
limitintegerOptionalErgebnisse pro Seite, 1 bis 50. Standard ist 20.cursorstringOptionalDer next_cursor Wert von der vorherigen Seite.statusstringOptionalNur 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
{
"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.
{
"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_jsonDer Body ist kein JSON-Objekt. - 401
unauthorizedKein Bearer-Schlüssel im Authorization-Header. - 401
invalid_api_keyDer Schlüssel existiert nicht oder ist fehlerhaft. - 401
key_revokedDer Schlüssel wurde widerrufen. Erstelle einen neuen. - 402
insufficient_creditsNicht genug Credits für diese Anfrage. Die Antwort enthält benötigte und Kontostand. - 403
plan_limit_exceededDie Anfrage überschreitet das Limit pro Generierung des Plans. Dauer oder Auflösung verringern. - 403
account_suspendedDas Konto, dem der Schlüssel gehört, ist gesperrt. - 403
api_disabledDie API ist derzeit deaktiviert. - 404
not_foundDie Aufgabe oder der Endpunkt existiert nicht für dieses Konto. - 404
model_not_foundKein Modell mit diesem Slug. Modelle-Endpunkt prüfen. - 409
too_many_runningDieses Konto hat bereits 3 Aufgaben in Bearbeitung. Warte bis eine fertig ist. - 422
invalid_requestEin Feld fehlt oder hat den falschen Typ. details listet jedes Problem auf. - 422
wrong_endpointDas Modell gehört zu einem anderen Endpunkt, z.B. ein Bildmodell wurde an Video gesendet. - 422
invalid_modeDer Modus ist diesem Endpunkt nicht bekannt. - 422
mode_not_supportedDas Modell unterstützt diesen Modus nicht. - 422
prompt_requiredDieser Modus benötigt eine Eingabe. - 422
image_requiredDieser Modus benötigt image_url. - 429
rate_limitedZu viele Anfragen. Warte die Sekunden aus Retry-After und versuche es erneut. - 500
internal_errorAuf unserer Seite ist etwas schiefgelaufen. Versuche es gleich nochmal. - 503
service_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.
HTTP/1.1 429 Too Many Requests
Retry-After: 42
X-RateLimit-Limit: 30
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 42Modelle
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.5
seedance-2-5Video45 Credits - Seedance 2.0 Pro
seedance-2-proVideo35 Credits - Seedance 2.0 Mini
seedance-2-miniVideo24 Credits - Wan 3.0
wan-3Video46 Credits - MiniMax H3
minimax-h3Video30 Credits - Kling 3
kling-3Video30 Credits - Seedance 1.5 Pro
seedance-1-5-proVideo31 Credits - Seedance 1.0
seedance-1Video32 Credits - Kling O3
kling-o3Video46 Credits - Kling 2.6
kling-2-6Video41 Credits - Wan 2.7
wan-2-7Video35 Credits - Wan
wanVideo32 Credits - Grok
grok-videoVideo47 Credits - Veo 3
veo-3Video42 Credits - GPT Image 2.5
gpt-image-2-5Bild4 Credits - GPT Image 2
gpt-image-2Bild3 Credits - Seedream 5 Pro
seedream-5-proBild4 Credits - Seedream 5
seedream-5Bild3 Credits - Nano Banana Pro
nano-banana-proBild5 Credits - Nano Banana 2
nano-banana-2Bild3 Credits - Nano Banana 2 Lite
nano-banana-2-liteBild2 Credits - AI Music
ai-musicMusik6 Credits
Bereit zum Loslegen?
Erstellen Sie einen Schlüssel in Ihrem Konto und senden Sie Ihre erste Anfrage in einer Minute.