API média — images, vidéo, musique
Générez des images, des vidéos et de la musique avec la même clé sk-nr-… et le même solde que pour les modèles de texte. Facturation unique, paiement à l’usage, sans abonnement ni forfait.
- Base :
https://nordrouter.com(ouhttps://global-api.nordrouter.compour les réseaux à l’étranger). - Authentification : en-tête
Authorization: Bearer sk-nr-…(ouX-API-Key: sk-nr-…). - Format : JSON, génération asynchrone (créer une tâche → interroger son statut → récupérer le fichier).
Endpoints
| Méthode | Description |
|---|---|
POST /media/generate | Créer une tâche de génération |
GET /media/job/:id | Statut et résultat de la tâche |
POST /media/estimate | Obtenir le prix d’une configuration à l’avance |
GET /media/models | Liste des modèles et paramètres lisible par machine |
POST /media/upload | Importer un fichier média source |
GET /media/file/:id | Fichier généré (lien fourni par result_url) |
Cycle de vie d’une requête
1. Créer une tâche
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": "mouvement de caméra fluide vers l’avant", "image": "https://…/photo.png", "duration": "5", "audio": true } }'{ "id": "b1f2…", "model": "video/kling-2.6-i2v", "status": "processing", "poll": "https://nordrouter.com/media/job/b1f2…" }2. Interroger le statut (toutes les 3 à 5 secondes)
curl https://nordrouter.com/media/job/b1f2…{ "id": "b1f2…", "status": "done", "result_url": "https://nordrouter.com/media/file/b1f2…", "cost_usd": 0.55, "error": null }3. Récupérer le fichier à l’aide de result_url. Le lien pointe vers nordrouter.com (votre marque). Les fichiers sont conservés pendant 14 jours, puis supprimés. Téléchargez-les ou transférez-les vers votre propre stockage avant cette échéance.
Importer des fichiers média source
Les champs image, image2, audio_url et video_url acceptent un lien public direct. Les modèles qui utilisent le champ attachments acceptent un tableau d’objets renvoyés par POST /media/upload : envoyez { "data": "data:audio/mpeg;base64,…", "name": "track.mp3" }, puis transmettez toute la réponse du téléversement dans input.attachments. Pour Suno, vous pouvez à la place fournir une URL publique dans input.source_url, et pour un mashup, deux URL dans input.source_urls.
Facturation
Les frais sont prélevés sur votre solde en dollars (le même que celui utilisé pour les modèles de texte), au coût réel de la génération, exactement selon les tarifs indiqués dans les tableaux ci-dessous.
- Réservation → coût réel. À la création de la tâche, une estimation du coût est réservée. Une fois la génération terminée, le montant est recalculé selon le résultat réel et le trop-perçu est recrédité sur votre solde.
- Vidéo : facturation à la seconde. Le prix augmente avec la durée et la résolution ; l’activation du son coûte plus cher. Les tableaux indiquent le tarif « à partir de » pour les paramètres par défaut ; la mention
/seccorrespond au tarif par seconde. - Aucun frais en cas d’erreur. Si la tâche se termine avec le statut
failed, la totalité du montant réservé est remboursée. Vous ne payez que les générations réussies. - Prix exact à l’avance :
POST /media/estimaterenvoie{ "usd": … }avant le lancement, avec les mêmes valeursmodeletinput. - Le solde est rechargé en roubles (≈ 1 $ = 89–96 ₽) ; tous les calculs sont ensuite effectués en USD.
Catalogue des modèles
Prix : pour la vidéo, tarif par seconde (/sec), total = tarif × durée (la résolution et le son peuvent aussi modifier le tarif) ; pour le reste, prix par génération avec les paramètres par défaut. Le coût exact de toute configuration est renvoyé par POST /media/estimate.
L’objet input peut contenir davantage de champs : la liste lisible par machine (types, options, valeurs par défaut, plages de durée en secondes) est toujours renvoyée par GET /media/models. Les champs obligatoires sont marqués d’un *. Vous pouvez envoyer directement dans input tous les champs supplémentaires du modèle (negative_prompt, seed, cfg_scale…).
Anciens noms de paramètres
Le 19 octobre 2026, les paramètres ont adopté des noms et des valeurs uniformes : snake_case, valeurs en minuscules (par exemple, version: "v6-wild", resolution: "720p", audio: true). Les noms et valeurs de l’ancienne version de la documentation sont toujours acceptés : les intégrations écrites auparavant n’ont pas besoin d’être modifiées ; la tâche, le résultat et le prix restent les mêmes. Dans GET /media/models, MCP et cette documentation, seuls les nouveaux noms sont utilisés. Si la requête contient à la fois l’ancien et le nouveau nom d’un même paramètre, le nouveau nom prévaut.
🖼 Images
model | Mode | Paramètres input | Fichier | Prix |
|---|---|---|---|---|
image/nano-banana | texte→image | prompt *, aspect_ratio=1:1|16:9|9:16|3:4|4:3|3:2|2:3|21:9|auto, safety_filter=bool | PNG | $0.025 |
image/nano-banana-2 | texte→image | prompt *, aspect_ratio=auto|1:1|16:9|9:16|3:4|4:3|21:9, resolution=1k|2k|4k, image=url, safety_filter=bool | PNG | $0.050 |
image/nano-banana-2-lite | texte→image | prompt *, aspect_ratio=auto|1:1|16:9|9:16|3:4|4:3, image=url, safety_filter=bool | PNG | $0.025 |
image/nano-banana-pro | texte→image | prompt *, aspect_ratio=1:1|16:9|9:16|3:4|4:3|21:9|auto, resolution=1k|2k|4k, image=url, safety_filter=bool | PNG | $0.11 |
image/imagen4-fast | texte→image | prompt *, aspect_ratio=1:1|16:9|9:16|3:4|4:3, safety_filter=bool | PNG | $0.025 |
image/imagen4 | texte→image | prompt *, aspect_ratio=1:1|16:9|9:16|3:4|4:3, safety_filter=bool | PNG | $0.050 |
image/imagen4-ultra | texte→image | prompt *, aspect_ratio=1:1|16:9|9:16|3:4|4:3, safety_filter=bool | PNG | $0.075 |
image/gpt-image-1.5 | texte→image | prompt *, aspect_ratio=1:1|2:3|3:2, quality=medium|high, safety_filter=bool | PNG | $0.025 |
image/gpt-image-1.5-edit | retouche d’image | prompt *, image=url *, aspect_ratio=3:2|1:1|2:3, quality=medium|high, safety_filter=bool | PNG | $0.025 |
image/gpt-image-2 | texte→image | prompt *, aspect_ratio=1:1|3:2|2:3|16:9|9:16|4:3|3:4, resolution=1k|2k|4k | PNG | $0.006 |
image/gpt-image-2-edit | retouche d’image | prompt *, image=url *, aspect_ratio=auto|1:1|3:2|2:3|16:9|9:16, resolution=1k|2k|4k, safety_filter=bool | PNG | $0.037 |
image/flux2-pro | texte→image | prompt *, aspect_ratio=1:1|4:3|3:4|16:9|9:16|3:2|2:3, resolution=1k|2k, safety_filter=bool | PNG | $0.031 |
image/flux2-pro-edit | retouche d’image | prompt *, image=url *, aspect_ratio=1:1|4:3|3:4|16:9|9:16|3:2|2:3|auto, resolution=1k|2k, safety_filter=bool | PNG | $0.031 |
image/flux2-flex | texte→image | prompt *, aspect_ratio=1:1|4:3|3:4|16:9|9:16|3:2|2:3, resolution=1k|2k, safety_filter=bool | PNG | $0.087 |
image/flux2-flex-edit | retouche d’image | prompt *, image=url *, aspect_ratio=1:1|4:3|3:4|16:9|9:16|3:2|2:3|auto, resolution=1k|2k, safety_filter=bool | PNG | $0.087 |
image/seedream-edit | retouche d’image | prompt *, image=url *, aspect_ratio=1:1-hd|1:1|3:4|9:16|4:3|16:9, resolution=1k|2k|4k, safety_filter=bool | PNG | $0.037 |
image/seedream-4.5-edit | retouche d’image | prompt *, image=url *, aspect_ratio=1:1|4:3|3:4|16:9|9:16|2:3|3:2, quality=basic|high, safety_filter=bool | PNG | $0.044 |
image/seedream-5-lite-edit | retouche d’image | prompt *, image=url *, aspect_ratio=1:1|4:3|3:4|16:9|9:16|2:3|3:2, quality=basic|high, safety_filter=bool | PNG | $0.037 |
image/seedream-5.0-pro-edit | retouche d’image | prompt *, 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=bool | PNG | $0.044 |
image/ideogram-v3 | texte→image | prompt *, 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=bool | PNG | $0.044 |
image/ideogram-edit | retouche d’image | prompt *, image=url *, render_mode=fast|balanced|quality, aspect_ratio=1:1-hd|1:1|3:4|9:16|4:3|16:9, safety_filter=bool | PNG | $0.044 |
image/ideogram-character | retouche d’image | prompt *, image=url *, render_mode=fast|balanced|quality, style=auto|realistic|fiction, safety_filter=bool | PNG | $0.11 |
image/qwen | texte→image | prompt *, aspect_ratio=1:1-hd|1:1|3:4|9:16|4:3|16:9, safety_filter=bool | PNG | $0.031 |
image/qwen-edit | retouche d’image | prompt *, image=url *, aspect_ratio=1:1-hd|1:1|3:4|9:16|4:3|16:9, safety_filter=bool | PNG | $0.037 |
image/qwen-i2i | retouche d’image | prompt *, image=url *, safety_filter=bool | PNG | $0.031 |
image/qwen2-edit | retouche d’image | prompt *, image=url *, aspect_ratio=16:9|1:1|3:4|4:3|9:16|3:2|2:3, safety_filter=bool | PNG | $0.037 |
image/grok | texte→image | prompt *, aspect_ratio=1:1|2:3|3:2|16:9|9:16, pro=bool, safety_filter=bool | PNG | $0.025 |
image/grok-edit | retouche d’image | prompt *, image=url *, safety_filter=bool | PNG | $0.025 |
image/z-image | texte→image | prompt *, aspect_ratio=1:1|16:9|9:16|3:4|4:3, safety_filter=bool | PNG | $0.006 |
image/wan-2.7 | texte→image | prompt *, aspect_ratio=1:1|16:9|9:16|4:3|3:4|21:9, resolution=1k|2k|4k, image=url, safety_filter=bool | PNG | $0.031 |
image/wan-2.7-pro | texte→image | prompt *, aspect_ratio=1:1|16:9|9:16|4:3|3:4|21:9, resolution=1k|2k|4k, image=url, safety_filter=bool | PNG | $0.075 |
image/seedream-5.0-pro | texte→image | prompt * | JPG | $0.013 |
image/gemini-3.1-flash | texte→image | prompt *, aspect_ratio=1:1|16:9|9:16|4:3|3:4, resolution=1k|2k|4k | PNG | $0.013 |
image/gemini-3-pro | texte→image | prompt *, aspect_ratio=1:1|16:9|9:16|4:3|3:4, resolution=1k|2k|4k | PNG | $0.031 |
🎬 Vidéo
model | Mode | Paramètres input | Fichier | Prix |
|---|---|---|---|---|
video/veo-3.1-fast | texte→vidéo | prompt *, aspect_ratio=16:9|9:16, image=url | MP4 | $0.38 |
video/veo-3.1-quality | texte→vidéo | prompt *, aspect_ratio=16:9|9:16, image=url | MP4 | $1.56 |
video/veo-3.1-lite | texte→vidéo | prompt *, aspect_ratio=16:9|9:16, image=url | MP4 | $0.19 |
video/gemini-omni | texte→vidéo | prompt *, duration=4|6|8|10 *, aspect_ratio=16:9|9:16, resolution=720p|1080p|4k, image=url, safety_filter=bool | MP4 | $0.66 |
video/gemini-omni-flash | texte→vidéo | prompt *, attachments=upload[] | MP4 | $0.13 |
video/kling-3.0 | texte→vidéo | prompt *, duration=3–15s, aspect_ratio=16:9|9:16|1:1, mode=standard|pro|4k, audio=bool, image=url, image2=url, safety_filter=bool | MP4 | $0.11/sec |
video/kling-t2v | texte→vidéo | prompt *, duration=3–15s, aspect_ratio=16:9|9:16|1:1, resolution=720p|1080p, safety_filter=bool | MP4 | $0.11/sec |
video/kling-turbo-i2v | photo→vidéo | prompt *, image=url *, duration=3–15s, resolution=720p|1080p, safety_filter=bool | MP4 | $0.11/sec |
video/kling-2.6-t2v | texte→vidéo | prompt *, duration=5|10, aspect_ratio=16:9|9:16|1:1, audio=bool, safety_filter=bool | MP4 | $0.34 |
video/kling-2.6-i2v | photo→vidéo | prompt *, image=url *, duration=5|10, audio=bool, safety_filter=bool | MP4 | $0.34 |
video/kling-2.5-t2v | texte→vidéo | prompt *, duration=5|10, aspect_ratio=16:9|9:16|1:1, safety_filter=bool | MP4 | $0.26 |
video/kling-2.5-i2v | photo→vidéo | prompt *, image=url *, image2=url, duration=5|10, safety_filter=bool | MP4 | $0.26 |
video/kling-i2v | photo→vidéo | prompt *, image=url *, image2=url, duration=5|10, safety_filter=bool | MP4 | $0.31 |
video/kling-2.1-standard | photo→vidéo | prompt *, image=url *, duration=5|10, safety_filter=bool | MP4 | $0.16 |
video/kling-2.1-master-t2v | texte→vidéo | prompt *, duration=5|10, aspect_ratio=16:9|9:16|1:1, safety_filter=bool | MP4 | $1.00 |
video/kling-2.1-master-i2v | photo→vidéo | prompt *, image=url *, duration=5|10, safety_filter=bool | MP4 | $1.00 |
video/kling-motion | vidéo→vidéo | image=url *, video_url *, prompt, mode=standard|pro | MP4 | $1.25 |
video/kling-avatar | avatar (photo+audio) | image=url *, audio_url *, prompt * | MP4 | $0.75 |
video/kling-avatar-pro | avatar (photo+audio) | image=url *, audio_url *, prompt * | MP4 | $1.50 |
video/wan-2.7-t2v | texte→vidéo | prompt *, duration=2–15s, aspect_ratio=16:9|9:16|1:1|4:3|3:4, resolution=720p|1080p, audio_url, safety_filter=bool | MP4 | $0.15/sec |
video/wan-2.7-i2v | photo→vidéo | prompt *, image=url *, image2=url, duration=2–15s, resolution=720p|1080p, audio_url, safety_filter=bool | MP4 | $0.15/sec |
video/wan-2.7-r2v | photo→vidéo | prompt *, image=url *, duration=2–10s, aspect_ratio=16:9|9:16|1:1, resolution=720p|1080p, safety_filter=bool | MP4 | $0.15/sec |
video/wan-2.7-edit | vidéo→vidéo | prompt *, video_url *, resolution=720p|1080p, audio_source=auto|original | MP4 | $1.50 |
video/wan-t2v | texte→vidéo | prompt *, duration=5|10|15, resolution=720p|1080p, safety_filter=bool | MP4 | $0.44 |
video/wan-i2v | photo→vidéo | prompt *, image=url *, duration=5|10|15, resolution=720p|1080p, safety_filter=bool | MP4 | $0.44 |
video/wan-v2v | vidéo→vidéo | prompt *, video_url *, duration=5|10, resolution=720p|1080p | MP4 | $0.44 |
video/wan-2.5-t2v | texte→vidéo | prompt *, duration=5|10 *, aspect_ratio=16:9|9:16|1:1, resolution=720p|1080p, safety_filter=bool | MP4 | $0.38 |
video/wan-2.5-i2v | photo→vidéo | prompt *, image=url *, duration=5|10 *, resolution=720p|1080p, safety_filter=bool | MP4 | $0.38 |
video/wan-2.2-t2v | texte→vidéo | prompt *, aspect_ratio=16:9|9:16, resolution=480p|720p, safety_filter=bool | MP4 | $0.50 |
video/wan-2.2-i2v | photo→vidéo | prompt *, image=url *, resolution=480p|720p, safety_filter=bool | MP4 | $0.50 |
video/wan-s2v | avatar (photo+audio) | prompt *, image=url *, audio_url *, resolution=480p|580p|720p | MP4 | $0.38 |
video/wan-animate-move | vidéo→vidéo | image=url *, video_url *, resolution=480p|580p|720p | MP4 | $0.38 |
video/wan-animate-replace | vidéo→vidéo | image=url *, video_url *, resolution=480p|580p|720p | MP4 | $0.38 |
video/seedance-2 | texte→vidéo | prompt *, duration=4–15s, 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=bool | MP4 | $0.26/sec |
video/seedance-2-fast | texte→vidéo | prompt *, duration=4–15s, aspect_ratio=16:9|9:16|1:1, resolution=480p|720p, audio=bool, image=url, image2=url, safety_filter=bool | MP4 | $0.21/sec |
video/seedance-2-mini | texte→vidéo | prompt *, duration=4–15s, aspect_ratio=16:9|9:16|1:1, resolution=480p|720p, audio=bool, image=url, image2=url, safety_filter=bool | MP4 | $0.13/sec |
video/seedance-1.5-pro | texte→vidéo | prompt *, duration=4–12s, aspect_ratio=16:9|9:16|1:1|4:3, resolution=480p|720p|1080p, audio=bool, image=url, safety_filter=bool | MP4 | $0.025/sec |
video/hailuo-02-t2v | texte→vidéo | prompt *, duration=6|10, safety_filter=bool | MP4 | $0.19 |
video/hailuo-02-t2v-pro | texte→vidéo | prompt *, safety_filter=bool | MP4 | $0.36 |
video/hailuo-02-i2v | photo→vidéo | prompt *, image=url *, image2=url, duration=6|10, resolution=768p|512p, safety_filter=bool | MP4 | $0.19 |
video/hailuo-02-i2v-pro | photo→vidéo | prompt *, image=url *, image2=url, safety_filter=bool | MP4 | $0.36 |
video/hailuo-2.3-i2v | photo→vidéo | prompt *, image=url *, duration=6|10, resolution=768p|1080p, safety_filter=bool | MP4 | $0.19 |
video/hailuo-2.3-i2v-pro | photo→vidéo | prompt *, image=url *, duration=6|10, resolution=768p|1080p, safety_filter=bool | MP4 | $0.28 |
video/happyhorse-1.1-t2v | texte→vidéo | prompt *, duration=3–15s, aspect_ratio=16:9|9:16|1:1|4:3|3:4, resolution=720p|1080p, safety_filter=bool | MP4 | $0.18/sec |
video/happyhorse-1.1-i2v | photo→vidéo | prompt, image=url *, duration=3–15s, resolution=720p|1080p, safety_filter=bool | MP4 | $0.18/sec |
video/happyhorse-1.1-r2v | photo→vidéo | prompt *, image=url *, duration=3–15s, aspect_ratio=16:9|9:16|1:1, resolution=720p|1080p, safety_filter=bool | MP4 | $0.18/sec |
video/happyhorse-t2v | texte→vidéo | prompt *, duration=3–15s, aspect_ratio=16:9|9:16|1:1|4:3|3:4, resolution=720p|1080p, safety_filter=bool | MP4 | $0.30/sec |
video/happyhorse-i2v | photo→vidéo | prompt, image=url *, duration=3–15s, resolution=720p|1080p, safety_filter=bool | MP4 | $0.30/sec |
video/happyhorse-edit | vidéo→vidéo | prompt *, video_url *, resolution=720p|1080p, audio_source=auto|original | MP4 | $1.50 |
video/grok-t2v | texte→vidéo | prompt *, duration=6–30s, aspect_ratio=16:9|9:16|1:1|3:2|2:3, resolution=480p|720p, mode=normal|fun|spicy, safety_filter=bool | MP4 | $0.019/sec |
video/grok-i2v | photo→vidéo | prompt *, image=url *, duration=6–30s, resolution=480p|720p, mode=normal|fun|spicy, safety_filter=bool | MP4 | $0.019/sec |
video/grok-1.5 | texte→vidéo | prompt *, duration=1–15s, aspect_ratio=auto|16:9|9:16|1:1, resolution=480p|720p, image=url, safety_filter=bool | MP4 | $0.019/sec |
video/omnihuman | avatar (photo+audio) | image=url *, audio_url *, prompt, resolution=720p|1080p | MP4 | $1.69 |
video/infinitalk | avatar (photo+audio) | prompt *, image=url *, audio_url *, resolution=480p|720p | MP4 | $0.19 |
video/lipsync | vidéo→vidéo | video_url *, audio_url *, mode=lite|basic | MP4 | $0.50 |
video/topaz-upscale | mise à l’échelle | video_url *, scale=2|4 | MP4 | $0.50 |
🎵 Musique
model | Mode | Paramètres input | Fichier | Prix |
|---|---|---|---|---|
music/suno-v5 | musique | title *, style *, version=v6|v6-wild|v6-mini, instrumental=bool, prompt | MP3 | $0.075 |
music/suno-cover | musique | prompt *, attachments=upload[] *, version=v6|v6-wild|v6-mini, instrumental=bool, advanced=bool, title, style, duration=10–360s | MP3 | $0.075 |
music/suno-extend-upload | musique | prompt *, attachments=upload[] *, version=v6|v6-wild|v6-mini, continue_from=1–120, instrumental=bool | MP3 | $0.075 |
music/suno-add-vocals | musique | prompt *, attachments=upload[] *, version=v6|v6-wild|v6-mini, style, title, exclude_styles, vocal=female|male | MP3 | $0.075 |
music/suno-add-instrumental | musique | prompt *, attachments=upload[] *, version=v6|v6-wild|v6-mini, title, exclude_styles | MP3 | $0.075 |
music/suno-mashup | musique | prompt *, attachments=upload[] *, version=v6|v6-wild|v6-mini, instrumental=bool, advanced=bool, title, style, duration=10–360s | MP3 | $0.075 |
music/suno-sounds | musique | prompt *, 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#m | MP3 | $0.016 |
🎙 Audio
model | Mode | Paramètres input | Fichier | Prix |
|---|---|---|---|---|
audio/gemini-3.1-flash-tts | synthèse vocale | text *, 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–2 | WAV | $0.006 |
audio/gemini-2.5-pro-tts | synthèse vocale | text *, 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–2 | WAV | $0.006 |
audio/elevenlabs-tts | synthèse vocale | text *, 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.2 | MP3 | $0.037 |
audio/elevenlabs-multilingual | synthèse vocale | text *, 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.2 | MP3 | $0.075 |
🧊 Modèles 3D
Le résultat est au format GLB (certaines modèles proposent également OBJ, FBX, STL, USDZ, USD ou 3MF), avec une image d’aperçu : la tâche renvoie plusieurs fichiers, chacun avec sa propre extension. La liste des fichiers se trouve dans le champ results ; chaque fichier possède un champ ext.
Le prix n’est connu qu’après la génération
La 3D est facturée selon les ressources réellement utilisées. Nous retenons le plafond indiqué dans le tableau puis, une fois le coût réel connu, nous prélevons ce montant et remboursons la différence. Le montant final est toujours indiqué dans cost_usd.
model | Mode | Paramètres input | Fichier | Prix |
|---|---|---|---|---|
3d/tripo-text | texte→3D | prompt *, negative_prompt, texture_detail=standard|high, geometry_detail=standard|high, pbr=bool, quad_mesh=bool | GLB/FBX | $0.31–0.79 |
3d/tripo-image | photo→3D | image=url *, texture_detail=standard|high, geometry_detail=standard|high, pbr=bool, quad_mesh=bool | GLB/FBX | $0.31–0.79 |
3d/hunyuan-rapid-text | texte→3D | prompt *, file_format=glb|obj|fbx|stl|usdz, pbr=bool, extra_mesh=bool | GLB et autres | $0.43–0.71 |
3d/hunyuan-rapid-image | photo→3D | image=url *, file_format=glb|obj|fbx|stl|usdz, pbr=bool, extra_mesh=bool | GLB et autres | $0.43–0.71 |
3d/hunyuan-pro-text | texte→3D | prompt *, output=textured|mesh, polygons=auto|40000|100000|300000|800000|1500000, pbr=bool | GLB | $0.71–1.00 |
3d/hunyuan-pro-image | photo→3D | image=url *, output=textured|mesh, polygons=auto|40000|100000|300000|800000|1500000, pbr=bool | GLB | $0.71–1.00 |
3d/seed3d-image | photo→3D | image=url *, mesh_detail=low|medium|high, file_format=glb|obj|usd|usdz | GLB/OBJ/USD | $0.50 |
3d/meshy-text | texte→3D | prompt *, texture_size=2k|4k|8k, pose=none|a-pose|t-pose, ultra=bool, pbr=bool, texture_text, texture_photo=url | GLB | $0.94–1.26 |
3d/meshy-image | photo→3D | image=url *, texture_size=2k|4k|8k, ultra=bool, texture=bool, pbr=bool, texture_text, texture_photo=url | GLB | $0.94–1.26 |
3d/meshy-multi-image | vues→3D | images=[url] * (1–4), texture_size=2k|4k|8k, ultra=bool, texture=bool, pbr=bool, texture_text | GLB | $0.94–1.26 |
Photo comme texture. Pour 3d/meshy-*, la texture est définie séparément de la géométrie : avec une image dans texture_photo ou du texte dans texture_text.
Durée. La génération 3D prend de trente secondes à plusieurs minutes, soit plus longtemps qu’une image ou qu’un court clip. Il n’est pas nécessaire de maintenir la connexion : le statut est conservé et des webhooks sont disponibles.
🛠 Outils
model | Mode | Paramètres input | Fichier | Prix |
|---|---|---|---|---|
image/topaz-upscale | mise à l’échelle | image=url *, scale=2|4|8 | PNG | $0.063 |
image/recraft-remove-bg | retouche | image=url * | PNG | $0.006 |
image/recraft-upscale | mise à l’échelle | image=url * | PNG | $0.006 |
Exemples par mode
Image à partir de texte
{ "model": "image/flux2-pro", "input": { "prompt": "neon fox in snow", "aspect_ratio": "16:9", "resolution": "2k" } }Retouche d’image
{ "model": "image/seedream-edit", "input": { "prompt": "supprimer l’arrière-plan, ajouter du néon", "image": "https://…/photo.png" } }Photo→vidéo (première/dernière image, durée, son)
{ "model": "video/wan-2.7-i2v", "input": {
"prompt": "travelling avant fluide", "image": "https://…/first.png",
"image2": "https://…/last.png", "duration": 8, "resolution": "1080p" } }Musique
{ "model": "music/suno-v5", "input": { "title": "Northern Lights", "style": "epic orchestral", "instrumental": true, "version": "v6" } }Synthèse vocale
{ "model": "audio/gemini-3.1-flash-tts", "input": {
"text": "Bonjour, le monde", "voice": "Zephyr", "style": "empathetic",
"pace": "natural", "accent": "neutral" } }Dialogue à deux voix — à la place du champ text, les répliques sont dans dialogue, les voix dans voices (la voix 1 est la première de la liste) :
{ "model": "audio/gemini-3.1-flash-tts", "input": {
"voices": [ { "voice": "Kore", "style": "newscaster" }, { "voice": "Puck", "pace": "fast" } ],
"dialogue": [ { "speaker": 1, "text": "Bonsoir !" }, { "speaker": 2, "text": "Ravi de vous entendre." } ] } }Avatar (vidéo parlante à partir d’une photo + audio)
{ "model": "video/omnihuman", "input": { "image": "https://…/face.png", "audio_url": "https://…/voice.mp3" } }Statuts et erreurs
GET /media/job/:id → champ status :
| Statut | Signification |
|---|---|
processing | En cours — continuez à interroger le statut |
done | Terminé — fichier dans result_url, montant débité dans cost_usd |
failed | Échec — motif dans error, montant remboursé |
Codes de réponse de POST /media/generate : 400 — modèle inconnu ou champ obligatoire manquant ; 401 — clé absente ou invalide ; 402 — solde insuffisant ; 403 — modèle indisponible pour ce compte.
Le corps de l’erreur a toujours la même forme — { "error": "текст для человека", "code": "машинный код" }. Codes : unknown_model, missing_param (+ champ param), invalid_input, invalid_attachment, prompt_too_long, input_too_long, no_auth, no_key, insufficient_balance, unpaid_shortfall, rate_limited, generation_failed, unavailable.
Estimer le coût à l’avance
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 } }'{ "model": "video/kling-3.0", "usd": 1.6875 }Paramètres des tableaux vérifiés dans le catalogue du service le 19.10.2026 ; liste complète et à jour des modèles, paramètres et tarifs — GET /media/models.