Skip to content

Media-API – Bilder, Videos, Musik ​

Generieren Sie Bilder, Videos und Musik mit demselben Schlüssel sk-nr-… und vom selben Guthaben wie bei Textmodellen. Einheitliche Abrechnung, Zahlung nach Verbrauch, ohne Abos oder Pakete.

  • Basis: https://nordrouter.com (oder https://global-api.nordrouter.com für internationale Netzwerke).
  • Authentifizierung: Header Authorization: Bearer sk-nr-… (oder X-API-Key: sk-nr-…).
  • Format: JSON, asynchrone Generierung (Aufgabe erstellen → Status abfragen → Datei abrufen).

Endpunkte ​

MethodeZweck
POST /media/generateGenerierungsaufgabe erstellen
GET /media/job/:idStatus und Ergebnis der Aufgabe
POST /media/estimatePreis einer Konfiguration im Voraus ermitteln
GET /media/modelsMaschinenlesbare Liste der Modelle und Parameter
POST /media/uploadQuelldatei hochladen
GET /media/file/:idFertige Datei (Link aus result_url)

Ablauf einer Anfrage ​

1. Aufgabe erstellen

bash
curl https://nordrouter.com/media/generate \
  -H "Authorization: Bearer sk-nr-YOUR-KEY" -H "Content-Type: application/json" \
  -d '{ "model": "video/kling-2.6-i2v",
        "input": { "prompt": "плавный наезд камеры", "image": "https://…/photo.png", "duration": "5", "audio": true } }'
json
{ "id": "b1f2…", "model": "video/kling-2.6-i2v", "status": "processing", "poll": "https://nordrouter.com/media/job/b1f2…" }

2. Status abfragen (alle 3–5 Sekunden)

bash
curl https://nordrouter.com/media/job/b1f2…
json
{ "id": "b1f2…", "status": "done", "result_url": "https://nordrouter.com/media/file/b1f2…", "cost_usd": 0.55, "error": null }

3. Datei abrufen – über result_url. Der Link verweist auf nordrouter.com (Ihre Marke); Dateien werden 14 Tage gespeichert und danach gelöscht. Laden Sie sie rechtzeitig herunter oder speichern Sie sie an einem eigenen Speicherort.

Quelldateien für Medien hochladen

Die Felder image, image2, audio_url und video_url akzeptieren einen direkten öffentlichen Link. Modelle mit dem Feld attachments akzeptieren ein Array von Objekten, die von POST /media/upload zurückgegeben wurden: Senden Sie { "data": "data:audio/mpeg;base64,…", "name": "track.mp3" } und übergeben Sie anschließend die gesamte Antwort des Uploads in input.attachments. Für Suno können Sie stattdessen eine öffentliche URL in input.source_url übergeben, für Mashups zwei URLs in input.source_urls.

Abrechnung ​

Die Kosten werden von Ihrem Guthaben in US-Dollar abgezogen (demselben wie bei Textmodellen) – nach erfolgreicher Generierung und genau in Höhe der unten aufgeführten Tabellenpreise.

  • Reservierung → tatsächliche Kosten. Beim Erstellen der Aufgabe wird eine Kostenschätzung reserviert. Nach Abschluss wird der Betrag anhand des tatsächlichen Ergebnisses neu berechnet; der Überschuss wird Ihrem Guthaben gutgeschrieben.
  • Videos – Abrechnung pro Sekunde. Der Preis steigt mit Dauer und Auflösung; aktivierter Ton kostet mehr. Die Tabellen zeigen den Preis „ab“ für die Standardeinstellungen; /Sek. kennzeichnet den Tarif pro Sekunde.
  • Fehler werden nicht berechnet. Wird eine Aufgabe mit dem Status failed beendet, wird die gesamte Reservierung erstattet. Sie zahlen nur für erfolgreiche Generierungen.
  • Den genauen Preis im Voraus ermitteln – POST /media/estimate mit denselben Werten für model und input gibt vor dem Start { "usd": … } zurück.
  • Guthaben wird in Rubel aufgeladen (≈ $1 = 89–96 ₽); anschließend wird alles in USD berechnet.

Modellkatalog ​

Preis: Bei Video gilt der Preis pro Sekunde (/Sek.), Gesamtkosten = Preis × Dauer (Auflösung und Audio können den Preis ändern); bei allen anderen Modellen gilt der Preis pro Generierung mit Standardeinstellungen. Den genauen Preis für jede Konfiguration liefert POST /media/estimate.

input kann weitere Felder enthalten. Die maschinenlesbare Liste (Typen, Optionen, Standardwerte und Sekundenbereiche) liefert immer GET /media/models. Pflichtfelder sind mit * gekennzeichnet. Alle zusätzlichen Modellfelder (negative_prompt, seed, cfg_scale usw.) können direkt in input gesendet werden.

Frühere Parameternamen ​

Am 19. Oktober 2026 erhielten die Parameter einheitliche Namen und Werte: snake_case, Werte in Kleinbuchstaben (zum Beispiel version: "v6-wild", resolution: "720p", audio: true). Namen und Werte aus der früheren Dokumentationsversion werden weiterhin akzeptiert – ältere Integrationen müssen nicht geändert werden: Aufgabe, Ergebnis und Preis bleiben gleich. In GET /media/models, MCP und dieser Dokumentation werden nur die neuen Namen verwendet. Wenn die Anfrage sowohl den früheren als auch den neuen Namen desselben Parameters enthält, gilt der neue.

🖼 Bilder ​

modelModusParameter inputDateiPreis
image/nano-bananaText→Bildprompt *, aspect_ratio=1:1|16:9|9:16|3:4|4:3|3:2|2:3|21:9|auto, safety_filter=boolPNG$0.025
image/nano-banana-2Text→Bildprompt *, aspect_ratio=auto|1:1|16:9|9:16|3:4|4:3|21:9, resolution=1k|2k|4k, image=url, safety_filter=boolPNG$0.050
image/nano-banana-2-liteText→Bildprompt *, aspect_ratio=auto|1:1|16:9|9:16|3:4|4:3, image=url, safety_filter=boolPNG$0.025
image/nano-banana-proText→Bildprompt *, aspect_ratio=1:1|16:9|9:16|3:4|4:3|21:9|auto, resolution=1k|2k|4k, image=url, safety_filter=boolPNG$0.11
image/imagen4-fastText→Bildprompt *, aspect_ratio=1:1|16:9|9:16|3:4|4:3, safety_filter=boolPNG$0.025
image/imagen4Text→Bildprompt *, aspect_ratio=1:1|16:9|9:16|3:4|4:3, safety_filter=boolPNG$0.050
image/imagen4-ultraText→Bildprompt *, aspect_ratio=1:1|16:9|9:16|3:4|4:3, safety_filter=boolPNG$0.075
image/gpt-image-1.5Text→Bildprompt *, aspect_ratio=1:1|2:3|3:2, quality=medium|high, safety_filter=boolPNG$0.025
image/gpt-image-1.5-editBildbearbeitungprompt *, image=url *, aspect_ratio=3:2|1:1|2:3, quality=medium|high, safety_filter=boolPNG$0.025
image/gpt-image-2Text→Bildprompt *, aspect_ratio=1:1|3:2|2:3|16:9|9:16|4:3|3:4, resolution=1k|2k|4kPNG$0.006
image/gpt-image-2-editBildbearbeitungprompt *, image=url *, aspect_ratio=auto|1:1|3:2|2:3|16:9|9:16, resolution=1k|2k|4k, safety_filter=boolPNG$0.037
image/flux2-proText→Bildprompt *, aspect_ratio=1:1|4:3|3:4|16:9|9:16|3:2|2:3, resolution=1k|2k, safety_filter=boolPNG$0.031
image/flux2-pro-editBildbearbeitungprompt *, image=url *, aspect_ratio=1:1|4:3|3:4|16:9|9:16|3:2|2:3|auto, resolution=1k|2k, safety_filter=boolPNG$0.031
image/flux2-flexText→Bildprompt *, aspect_ratio=1:1|4:3|3:4|16:9|9:16|3:2|2:3, resolution=1k|2k, safety_filter=boolPNG$0.087
image/flux2-flex-editBildbearbeitungprompt *, image=url *, aspect_ratio=1:1|4:3|3:4|16:9|9:16|3:2|2:3|auto, resolution=1k|2k, safety_filter=boolPNG$0.087
image/seedream-editBildbearbeitungprompt *, image=url *, aspect_ratio=1:1-hd|1:1|3:4|9:16|4:3|16:9, resolution=1k|2k|4k, safety_filter=boolPNG$0.037
image/seedream-4.5-editBildbearbeitungprompt *, image=url *, aspect_ratio=1:1|4:3|3:4|16:9|9:16|2:3|3:2, quality=basic|high, safety_filter=boolPNG$0.044
image/seedream-5-lite-editBildbearbeitungprompt *, image=url *, aspect_ratio=1:1|4:3|3:4|16:9|9:16|2:3|3:2, quality=basic|high, safety_filter=boolPNG$0.037
image/seedream-5.0-pro-editBildbearbeitungprompt *, image=url *, aspect_ratio=1:1|4:3|3:4|16:9|9:16|2:3|3:2|21:9, quality=basic|high, safety_filter=boolPNG$0.044
image/ideogram-v3Text→Bildprompt *, render_mode=fast|balanced|quality, aspect_ratio=1:1-hd|1:1|3:4|9:16|4:3|16:9, style=auto|general|realistic|design, safety_filter=boolPNG$0.044
image/ideogram-editBildbearbeitungprompt *, image=url *, render_mode=fast|balanced|quality, aspect_ratio=1:1-hd|1:1|3:4|9:16|4:3|16:9, safety_filter=boolPNG$0.044
image/ideogram-characterBildbearbeitungprompt *, image=url *, render_mode=fast|balanced|quality, style=auto|realistic|fiction, safety_filter=boolPNG$0.11
image/qwenText→Bildprompt *, aspect_ratio=1:1-hd|1:1|3:4|9:16|4:3|16:9, safety_filter=boolPNG$0.031
image/qwen-editBildbearbeitungprompt *, image=url *, aspect_ratio=1:1-hd|1:1|3:4|9:16|4:3|16:9, safety_filter=boolPNG$0.037
image/qwen-i2iBildbearbeitungprompt *, image=url *, safety_filter=boolPNG$0.031
image/qwen2-editBildbearbeitungprompt *, image=url *, aspect_ratio=16:9|1:1|3:4|4:3|9:16|3:2|2:3, safety_filter=boolPNG$0.037
image/grokText→Bildprompt *, aspect_ratio=1:1|2:3|3:2|16:9|9:16, pro=bool, safety_filter=boolPNG$0.025
image/grok-editBildbearbeitungprompt *, image=url *, safety_filter=boolPNG$0.025
image/z-imageText→Bildprompt *, aspect_ratio=1:1|16:9|9:16|3:4|4:3, safety_filter=boolPNG$0.006
image/wan-2.7Text→Bildprompt *, aspect_ratio=1:1|16:9|9:16|4:3|3:4|21:9, resolution=1k|2k|4k, image=url, safety_filter=boolPNG$0.031
image/wan-2.7-proText→Bildprompt *, aspect_ratio=1:1|16:9|9:16|4:3|3:4|21:9, resolution=1k|2k|4k, image=url, safety_filter=boolPNG$0.075
image/seedream-5.0-proText→Bildprompt *JPG$0.013
image/gemini-3.1-flashText→Bildprompt *, aspect_ratio=1:1|16:9|9:16|4:3|3:4, resolution=1k|2k|4kPNG$0.013
image/gemini-3-proText→Bildprompt *, aspect_ratio=1:1|16:9|9:16|4:3|3:4, resolution=1k|2k|4kPNG$0.031

🎬 Video ​

modelModusParameter inputDateiPreis
video/veo-3.1-fastText→Videoprompt *, aspect_ratio=16:9|9:16, image=urlMP4$0.38
video/veo-3.1-qualityText→Videoprompt *, aspect_ratio=16:9|9:16, image=urlMP4$1.56
video/veo-3.1-liteText→Videoprompt *, aspect_ratio=16:9|9:16, image=urlMP4$0.19
video/gemini-omniText→Videoprompt *, duration=4|6|8|10 *, aspect_ratio=16:9|9:16, resolution=720p|1080p|4k, image=url, safety_filter=boolMP4$0.66
video/gemini-omni-flashText→Videoprompt *, attachments=upload[]MP4$0.13
video/kling-3.0Text→Videoprompt *, duration=3–15 Sek., aspect_ratio=16:9|9:16|1:1, mode=standard|pro|4k, audio=bool, image=url, image2=url, safety_filter=boolMP4$0.11/Sek.
video/kling-t2vText→Videoprompt *, duration=3–15 Sek., aspect_ratio=16:9|9:16|1:1, resolution=720p|1080p, safety_filter=boolMP4$0.11/Sek.
video/kling-turbo-i2vFoto→Videoprompt *, image=url *, duration=3–15 Sek., resolution=720p|1080p, safety_filter=boolMP4$0.11/Sek.
video/kling-2.6-t2vText→Videoprompt *, duration=5|10, aspect_ratio=16:9|9:16|1:1, audio=bool, safety_filter=boolMP4$0.34
video/kling-2.6-i2vFoto→Videoprompt *, image=url *, duration=5|10, audio=bool, safety_filter=boolMP4$0.34
video/kling-2.5-t2vText→Videoprompt *, duration=5|10, aspect_ratio=16:9|9:16|1:1, safety_filter=boolMP4$0.26
video/kling-2.5-i2vFoto→Videoprompt *, image=url *, image2=url, duration=5|10, safety_filter=boolMP4$0.26
video/kling-i2vFoto→Videoprompt *, image=url *, image2=url, duration=5|10, safety_filter=boolMP4$0.31
video/kling-2.1-standardFoto→Videoprompt *, image=url *, duration=5|10, safety_filter=boolMP4$0.16
video/kling-2.1-master-t2vText→Videoprompt *, duration=5|10, aspect_ratio=16:9|9:16|1:1, safety_filter=boolMP4$1.00
video/kling-2.1-master-i2vFoto→Videoprompt *, image=url *, duration=5|10, safety_filter=boolMP4$1.00
video/kling-motionVideo→Videoimage=url *, video_url *, prompt, mode=standard|proMP4$1.25
video/kling-avatarAvatar (Foto+Audio)image=url *, audio_url *, prompt *MP4$0.75
video/kling-avatar-proAvatar (Foto+Audio)image=url *, audio_url *, prompt *MP4$1.50
video/wan-2.7-t2vText→Videoprompt *, duration=2–15 Sek., aspect_ratio=16:9|9:16|1:1|4:3|3:4, resolution=720p|1080p, audio_url, safety_filter=boolMP4$0.15/Sek.
video/wan-2.7-i2vFoto→Videoprompt *, image=url *, image2=url, duration=2–15 Sek., resolution=720p|1080p, audio_url, safety_filter=boolMP4$0.15/Sek.
video/wan-2.7-r2vFoto→Videoprompt *, image=url *, duration=2–10 Sek., aspect_ratio=16:9|9:16|1:1, resolution=720p|1080p, safety_filter=boolMP4$0.15/Sek.
video/wan-2.7-editVideo→Videoprompt *, video_url *, resolution=720p|1080p, audio_source=auto|originalMP4$1.50
video/wan-t2vText→Videoprompt *, duration=5|10|15, resolution=720p|1080p, safety_filter=boolMP4$0.44
video/wan-i2vFoto→Videoprompt *, image=url *, duration=5|10|15, resolution=720p|1080p, safety_filter=boolMP4$0.44
video/wan-v2vVideo→Videoprompt *, video_url *, duration=5|10, resolution=720p|1080pMP4$0.44
video/wan-2.5-t2vText→Videoprompt *, duration=5|10 *, aspect_ratio=16:9|9:16|1:1, resolution=720p|1080p, safety_filter=boolMP4$0.38
video/wan-2.5-i2vFoto→Videoprompt *, image=url *, duration=5|10 *, resolution=720p|1080p, safety_filter=boolMP4$0.38
video/wan-2.2-t2vText→Videoprompt *, aspect_ratio=16:9|9:16, resolution=480p|720p, safety_filter=boolMP4$0.50
video/wan-2.2-i2vFoto→Videoprompt *, image=url *, resolution=480p|720p, safety_filter=boolMP4$0.50
video/wan-s2vAvatar (Foto+Audio)prompt *, image=url *, audio_url *, resolution=480p|580p|720pMP4$0.38
video/wan-animate-moveVideo→Videoimage=url *, video_url *, resolution=480p|580p|720pMP4$0.38
video/wan-animate-replaceVideo→Videoimage=url *, video_url *, resolution=480p|580p|720pMP4$0.38
video/seedance-2Text→Videoprompt *, duration=4–15 Sek., aspect_ratio=16:9|9:16|1:1|4:3|21:9, resolution=480p|720p|1080p|4k, audio=bool, image=url, image2=url, safety_filter=boolMP4$0.26/Sek.
video/seedance-2-fastText→Videoprompt *, duration=4–15 Sek., aspect_ratio=16:9|9:16|1:1, resolution=480p|720p, audio=bool, image=url, image2=url, safety_filter=boolMP4$0.21/Sek.
video/seedance-2-miniText→Videoprompt *, duration=4–15 Sek., aspect_ratio=16:9|9:16|1:1, resolution=480p|720p, audio=bool, image=url, image2=url, safety_filter=boolMP4$0.13/Sek.
video/seedance-1.5-proText→Videoprompt *, duration=4–12 Sek., aspect_ratio=16:9|9:16|1:1|4:3, resolution=480p|720p|1080p, audio=bool, image=url, safety_filter=boolMP4$0.025/Sek.
video/hailuo-02-t2vText→Videoprompt *, duration=6|10, safety_filter=boolMP4$0.19
video/hailuo-02-t2v-proText→Videoprompt *, safety_filter=boolMP4$0.36
video/hailuo-02-i2vFoto→Videoprompt *, image=url *, image2=url, duration=6|10, resolution=768p|512p, safety_filter=boolMP4$0.19
video/hailuo-02-i2v-proFoto→Videoprompt *, image=url *, image2=url, safety_filter=boolMP4$0.36
video/hailuo-2.3-i2vFoto→Videoprompt *, image=url *, duration=6|10, resolution=768p|1080p, safety_filter=boolMP4$0.19
video/hailuo-2.3-i2v-proFoto→Videoprompt *, image=url *, duration=6|10, resolution=768p|1080p, safety_filter=boolMP4$0.28
video/happyhorse-1.1-t2vText→Videoprompt *, duration=3–15 Sek., aspect_ratio=16:9|9:16|1:1|4:3|3:4, resolution=720p|1080p, safety_filter=boolMP4$0.18/Sek.
video/happyhorse-1.1-i2vFoto→Videoprompt, image=url *, duration=3–15 Sek., resolution=720p|1080p, safety_filter=boolMP4$0.18/Sek.
video/happyhorse-1.1-r2vFoto→Videoprompt *, image=url *, duration=3–15 Sek., aspect_ratio=16:9|9:16|1:1, resolution=720p|1080p, safety_filter=boolMP4$0.18/Sek.
video/happyhorse-t2vText→Videoprompt *, duration=3–15 Sek., aspect_ratio=16:9|9:16|1:1|4:3|3:4, resolution=720p|1080p, safety_filter=boolMP4$0.30/Sek.
video/happyhorse-i2vFoto→Videoprompt, image=url *, duration=3–15 Sek., resolution=720p|1080p, safety_filter=boolMP4$0.30/Sek.
video/happyhorse-editVideo→Videoprompt *, video_url *, resolution=720p|1080p, audio_source=auto|originalMP4$1.50
video/grok-t2vText→Videoprompt *, duration=6–30 Sek., aspect_ratio=16:9|9:16|1:1|3:2|2:3, resolution=480p|720p, mode=normal|fun|spicy, safety_filter=boolMP4$0.019/Sek.
video/grok-i2vFoto→Videoprompt *, image=url *, duration=6–30 Sek., resolution=480p|720p, mode=normal|fun|spicy, safety_filter=boolMP4$0.019/Sek.
video/grok-1.5Text→Videoprompt *, duration=1–15 Sek., aspect_ratio=auto|16:9|9:16|1:1, resolution=480p|720p, image=url, safety_filter=boolMP4$0.019/Sek.
video/omnihumanAvatar (Foto+Audio)image=url *, audio_url *, prompt, resolution=720p|1080pMP4$1.69
video/infinitalkAvatar (Foto+Audio)prompt *, image=url *, audio_url *, resolution=480p|720pMP4$0.19
video/lipsyncVideo→Videovideo_url *, audio_url *, mode=lite|basicMP4$0.50
video/topaz-upscaleUpscalingvideo_url *, scale=2|4MP4$0.50

🎵 Musik ​

modelModusParameter inputDateiPreis
music/suno-v5Musiktitle *, style *, version=v6|v6-wild|v6-mini, instrumental=bool, promptMP3$0.075
music/suno-coverMusikprompt *, attachments=upload[] *, version=v6|v6-wild|v6-mini, instrumental=bool, advanced=bool, title, style, duration=10–360 Sek.MP3$0.075
music/suno-extend-uploadMusikprompt *, attachments=upload[] *, version=v6|v6-wild|v6-mini, continue_from=1–120, instrumental=boolMP3$0.075
music/suno-add-vocalsMusikprompt *, attachments=upload[] *, version=v6|v6-wild|v6-mini, style, title, exclude_styles, vocal=female|maleMP3$0.075
music/suno-add-instrumentalMusikprompt *, attachments=upload[] *, version=v6|v6-wild|v6-mini, title, exclude_stylesMP3$0.075
music/suno-mashupMusikprompt *, attachments=upload[] *, version=v6|v6-wild|v6-mini, instrumental=bool, advanced=bool, title, style, duration=10–360 Sek.MP3$0.075
music/suno-soundsMusikprompt *, version=v6|v6-wild|v6-mini, loop=bool, bpm=auto|60|80|100|120|140|160, tonality=auto|C|Dm|Em|F|G|Am|D#mMP3$0.016

🎙 Audio ​

modelModusParameter inputDateiPreis
audio/gemini-3.1-flash-ttsSprachsynthesetext *, voice=Achernar|Achird|Algenib|Algieba|Alnilam|Aoede|Autonoe|Callirrhoe|Charon|Despina|Enceladus|Erinome|Fenrir|Gacrux|Iapetus|Kore|Laomedeia|Leda|Orus|Puck|Pulcherrima|Rasalgethi|Sadachbia|Sadaltager|Schedar|Sulafat|Umbriel|Vindemiatrix|Zephyr|Zubenelgenubi, style=vocal-smile|newscaster|whisper|empathetic|promo-hype|deadpan, pace=natural|fast|slow|staccato, accent=neutral|american|american-valley|american-south|british|british-brixton|transatlantic|australian, voice_description, scene, temperature=0–2WAV$0.006
audio/gemini-2.5-pro-ttsSprachsynthesetext *, voice=Achernar|Achird|Algenib|Algieba|Alnilam|Aoede|Autonoe|Callirrhoe|Charon|Despina|Enceladus|Erinome|Fenrir|Gacrux|Iapetus|Kore|Laomedeia|Leda|Orus|Puck|Pulcherrima|Rasalgethi|Sadachbia|Sadaltager|Schedar|Sulafat|Umbriel|Vindemiatrix|Zephyr|Zubenelgenubi, style=vocal-smile|newscaster|whisper|empathetic|promo-hype|deadpan, pace=natural|fast|slow|staccato, accent=neutral|american|american-valley|american-south|british|british-brixton|transatlantic|australian, voice_description, scene, temperature=0–2WAV$0.006
audio/elevenlabs-ttsSprachsynthesetext *, voice=james|addison|adeline|allison|ana-rita|anika|arabella|aria|bella|benjamin|bradford|brian|britney|brittney|brock|burt|callum|cassidy|ed|edward|emma|eve|felix|finn|hank|hope-poetic|hope-bubbly|horatius|jamahal|jean|jeff|jessica-eloquent|jessica-chatty|john-doe|john-morgan|johnny-dynamite|johnny-kid|kuon|laura|leon|liam|lucy|lutz|mark-casual|mark-natural|marshal|monika|nathan|nathaniel|phil|rachel|rex-thunder|sam|spuds|sven|taksh|theodore|tiffany|tom|viking-bjorn|viraj-smooth|viraj-rich|wyatt|xavier, voice_id, speed=0.8|1.0|1.2MP3$0.037
audio/elevenlabs-multilingualSprachsynthesetext *, voice=james|addison|adeline|allison|ana-rita|anika|arabella|aria|bella|benjamin|bradford|brian|britney|brittney|brock|burt|callum|cassidy|ed|edward|emma|eve|felix|finn|hank|hope-poetic|hope-bubbly|horatius|jamahal|jean|jeff|jessica-eloquent|jessica-chatty|john-doe|john-morgan|johnny-dynamite|johnny-kid|kuon|laura|leon|liam|lucy|lutz|mark-casual|mark-natural|marshal|monika|nathan|nathaniel|phil|rachel|rex-thunder|sam|spuds|sven|taksh|theodore|tiffany|tom|viking-bjorn|viraj-smooth|viraj-rich|wyatt|xavier, voice_id, speed=0.8|1.0|1.2MP3$0.075

🧊 3D-Modelle ​

Ausgabe: GLB (bei einigen Modellen wahlweise OBJ, FBX, STL, USDZ, USD, 3MF) sowie ein Vorschaubild: Ein Auftrag kann mehrere Dateien enthalten, jeweils mit eigener Erweiterung. Die Dateiliste steht im Feld results; jede Datei hat ein ext.

Preis erst nach der Generierung bekannt

3D wird nach den tatsächlich verbrauchten Ressourcen abgerechnet. Wir reservieren den Höchstbetrag aus der Tabelle und ziehen, sobald die tatsächlichen Kosten feststehen, den entsprechenden Betrag ab und erstatten die Differenz. Der endgültige Betrag steht immer in cost_usd.

modelModusParameter inputDateiPreis
3d/tripo-textText→3Dprompt *, negative_prompt, texture_detail=standard|high, geometry_detail=standard|high, pbr=bool, quad_mesh=boolGLB/FBX$0.31–0.79
3d/tripo-imageFoto→3Dimage=url *, texture_detail=standard|high, geometry_detail=standard|high, pbr=bool, quad_mesh=boolGLB/FBX$0.31–0.79
3d/hunyuan-rapid-textText→3Dprompt *, file_format=glb|obj|fbx|stl|usdz, pbr=bool, extra_mesh=boolGLB u. a.$0.43–0.71
3d/hunyuan-rapid-imageFoto→3Dimage=url *, file_format=glb|obj|fbx|stl|usdz, pbr=bool, extra_mesh=boolGLB u. a.$0.43–0.71
3d/hunyuan-pro-textText→3Dprompt *, output=textured|mesh, polygons=auto|40000|100000|300000|800000|1500000, pbr=boolGLB$0.71–1.00
3d/hunyuan-pro-imageFoto→3Dimage=url *, output=textured|mesh, polygons=auto|40000|100000|300000|800000|1500000, pbr=boolGLB$0.71–1.00
3d/seed3d-imageFoto→3Dimage=url *, mesh_detail=low|medium|high, file_format=glb|obj|usd|usdzGLB/OBJ/USD$0.50
3d/meshy-textText→3Dprompt *, texture_size=2k|4k|8k, pose=none|a-pose|t-pose, ultra=bool, pbr=bool, texture_text, texture_photo=urlGLB$0.94–1.26
3d/meshy-imageFoto→3Dimage=url *, texture_size=2k|4k|8k, ultra=bool, texture=bool, pbr=bool, texture_text, texture_photo=urlGLB$0.94–1.26
3d/meshy-multi-imageAnsichten→3Dimages=[url] * (1–4), texture_size=2k|4k|8k, ultra=bool, texture=bool, pbr=bool, texture_textGLB$0.94–1.26

Foto als Textur. Bei 3d/meshy-* wird die Textur unabhängig von der Geometrie festgelegt: als Bild über texture_photo oder als Text über texture_text.

Dauer. 3D-Generierungen dauern von einer halben Minute bis zu mehreren Minuten – länger als Bilder und kurze Clips. Die Verbindung muss nicht offen bleiben: Der Status wird gespeichert, und Webhooks sind verfügbar.

🛠 Dienstprogramme ​

modelModusParameter inputDateiPreis
image/topaz-upscaleUpscalingimage=url *, scale=2|4|8PNG$0.063
image/recraft-remove-bgBearbeitungimage=url *PNG$0.006
image/recraft-upscaleUpscalingimage=url *PNG$0.006

Beispiele nach Modus ​

Bild aus Text

json
{ "model": "image/flux2-pro", "input": { "prompt": "neon fox in snow", "aspect_ratio": "16:9", "resolution": "2k" } }

Bildbearbeitung

json
{ "model": "image/seedream-edit", "input": { "prompt": "Hintergrund entfernen, Neon hinzufügen", "image": "https://…/photo.png" } }

Foto→Video (erstes/letztes Bild, Dauer, Ton)

json
{ "model": "video/wan-2.7-i2v", "input": {
    "prompt": "sanfte Kamerafahrt nach vorn", "image": "https://…/first.png",
    "image2": "https://…/last.png", "duration": 8, "resolution": "1080p" } }

Musik

json
{ "model": "music/suno-v5", "input": { "title": "Northern Lights", "style": "epic orchestral", "instrumental": true, "version": "v6" } }

Sprachausgabe

json
{ "model": "audio/gemini-3.1-flash-tts", "input": {
    "text": "Hallo, Welt", "voice": "Zephyr", "style": "empathetic",
    "pace": "natural", "accent": "neutral" } }

Dialog mit zwei Stimmen — statt des Felds text stehen die Äußerungen in dialogue, die Stimmen in voices (Stimme 1 ist die erste in der Liste):

json
{ "model": "audio/gemini-3.1-flash-tts", "input": {
    "voices": [ { "voice": "Kore", "style": "newscaster" }, { "voice": "Puck", "pace": "fast" } ],
    "dialogue": [ { "speaker": 1, "text": "Guten Abend!" }, { "speaker": 2, "text": "Freut mich, Sie zu hören." } ] } }

Avatar (sprechendes Video aus Foto + Audio)

json
{ "model": "video/omnihuman", "input": { "image": "https://…/face.png", "audio_url": "https://…/voice.mp3" } }

Status und Fehler ​

GET /media/job/:id → Feld status:

StatusBedeutung
processingWird verarbeitet — Abfragen fortsetzen
doneFertig — Datei unter result_url, Abrechnung in cost_usd
failedFehler — Ursache in error, Geld wurde zurückerstattet

Antwortcodes von POST /media/generate: 400 — unbekanntes Modell oder erforderliches Feld fehlt; 401 — Schlüssel fehlt/ungültig; 402 — unzureichendes Guthaben; 403 — Modell für das Konto nicht verfügbar.

Der Fehlerbody hat immer dasselbe Format — { "error": "menschenlesbarer Text", "code": "Maschinencode" }. Codes: unknown_model, missing_param (+ Feld param), invalid_input, invalid_attachment, prompt_too_long, input_too_long, no_auth, no_key, insufficient_balance, unpaid_shortfall, rate_limited, generation_failed, unavailable.

Kosten vorab schätzen ​

bash
curl https://nordrouter.com/media/estimate \
  -H "Authorization: Bearer sk-nr-YOUR-KEY" -H "Content-Type: application/json" \
  -d '{ "model": "video/kling-3.0", "input": { "duration": 10, "mode": "pro", "audio": true } }'
json
{ "model": "video/kling-3.0", "usd": 1.6875 }

Die Parameter in den Tabellen wurden mit dem Servicekatalog vom 19.10.2026 abgeglichen; die vollständige aktuelle Liste der Modelle, Parameter und Preise gibt es unter GET /media/models.