API multimedia — imágenes, vídeo, música
Genera imágenes, vídeo y música con la misma clave sk-nr-… y el mismo saldo que usas para los modelos de texto. Una sola cuenta, pago por uso, sin suscripciones ni paquetes.
- URL base:
https://nordrouter.com(ohttps://global-api.nordrouter.compara redes fuera de Rusia). - Autenticación: cabecera
Authorization: Bearer sk-nr-…(oX-API-Key: sk-nr-…). - Formato: JSON, generación asíncrona (crear tarea → consultar estado → descargar archivo).
Endpoints
| Método | Función |
|---|---|
POST /media/generate | Crear una tarea de generación |
GET /media/job/:id | Estado y resultado de la tarea |
POST /media/estimate | Consultar el precio de la configuración de antemano |
GET /media/models | Lista de modelos y parámetros en formato legible por máquinas |
POST /media/upload | Subir un archivo multimedia de origen |
GET /media/file/:id | Archivo generado (enlace de result_url) |
Ciclo de vida de una solicitud
1. Crear una tarea
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": "acercamiento suave de la cámara", "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. Consultar el estado (cada 3–5 s)
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. Descargar el archivo — mediante result_url. El enlace apunta a nordrouter.com (tu marca); los archivos se conservan durante 14 días y después se eliminan: descárgalos o transfiérelos a tu propio almacenamiento antes de que caduquen.
Subida de archivos multimedia de origen
Los campos image, image2, audio_url y video_url aceptan un enlace público directo. Los modelos con el campo attachments aceptan un array de objetos devueltos por POST /media/upload: envía { "data": "data:audio/mpeg;base64,…", "name": "track.mp3" } y después pasa la respuesta completa de la subida a input.attachments. Para Suno, puedes pasar en su lugar una URL pública en input.source_url y, para mashup, dos URL en input.source_urls.
Facturación
Los cargos se descuentan de tu saldo en dólares (el mismo que usas para los modelos de texto), una vez completada la generación y por el importe exacto indicado en las tablas siguientes.
- Reserva → coste real. Al crear una tarea, se reserva el coste estimado; al finalizar, el importe se recalcula según el resultado real y el excedente se devuelve al saldo.
- Vídeo — por segundo. El precio aumenta con la duración y la resolución; incluir sonido cuesta más. Las tablas indican el precio «desde» para la configuración predeterminada; la indicación
/scorresponde a la tarifa por segundo. - Los errores no se cobran. Si la tarea termina con el estado
failed, la reserva se devuelve íntegramente: solo pagas por las generaciones completadas correctamente. - Precio exacto de antemano —
POST /media/estimatecon los mismosmodel+inputdevuelve{ "usd": … }antes de iniciar la generación. - El saldo se recarga en rublos (≈ $1 = 89–96 ₽); a partir de ahí, todos los cálculos se realizan en USD.
Catálogo de modelos
Precio: para video, tarifa por segundo (/s); total = tarifa × duración (la resolución y el audio también pueden modificarla). Para el resto, por generación con la configuración predeterminada. POST /media/estimate devuelve el costo exacto de cualquier configuración.
Puede haber más campos en input: la lista legible por máquina (tipos, opciones, valores predeterminados y rangos de segundos) siempre está disponible en GET /media/models. Los campos obligatorios se indican con *. Puedes enviar directamente en input cualquier campo adicional del modelo (negative_prompt, seed, cfg_scale…).
Nombres anteriores de los parámetros
El 19 de octubre de 2026, los parámetros adoptaron nombres y valores unificados: snake_case, valores en minúsculas (por ejemplo, version: "v6-wild", resolution: "720p", audio: true). Se siguen aceptando los nombres y valores de la versión anterior de la documentación; no es necesario modificar las integraciones existentes: la tarea, el resultado y el precio son los mismos. En GET /media/models, MCP y esta documentación solo aparecen los nuevos. Si la solicitud incluye el nombre anterior y el nuevo para un mismo parámetro, se aplica el nuevo.
🖼 Imágenes
model | Modo | Parámetros de input | Archivo | Precio |
|---|---|---|---|---|
image/nano-banana | texto→imagen | 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 | texto→imagen | 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 | texto→imagen | 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 | texto→imagen | 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 | texto→imagen | prompt *, aspect_ratio=1:1|16:9|9:16|3:4|4:3, safety_filter=bool | PNG | $0.025 |
image/imagen4 | texto→imagen | prompt *, aspect_ratio=1:1|16:9|9:16|3:4|4:3, safety_filter=bool | PNG | $0.050 |
image/imagen4-ultra | texto→imagen | prompt *, aspect_ratio=1:1|16:9|9:16|3:4|4:3, safety_filter=bool | PNG | $0.075 |
image/gpt-image-1.5 | texto→imagen | prompt *, aspect_ratio=1:1|2:3|3:2, quality=medium|high, safety_filter=bool | PNG | $0.025 |
image/gpt-image-1.5-edit | edición de imagen | prompt *, image=url *, aspect_ratio=3:2|1:1|2:3, quality=medium|high, safety_filter=bool | PNG | $0.025 |
image/gpt-image-2 | texto→imagen | 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 | edición de imagen | 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 | texto→imagen | 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 | edición de imagen | 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 | texto→imagen | 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 | edición de imagen | 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 | edición de imagen | 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 | edición de imagen | 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 | edición de imagen | 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 | edición de imagen | 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 | texto→imagen | 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 | edición de imagen | 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 | edición de imagen | prompt *, image=url *, render_mode=fast|balanced|quality, style=auto|realistic|fiction, safety_filter=bool | PNG | $0.11 |
image/qwen | texto→imagen | 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 | edición de imagen | 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 | edición de imagen | prompt *, image=url *, safety_filter=bool | PNG | $0.031 |
image/qwen2-edit | edición de imagen | 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 | texto→imagen | prompt *, aspect_ratio=1:1|2:3|3:2|16:9|9:16, pro=bool, safety_filter=bool | PNG | $0.025 |
image/grok-edit | edición de imagen | prompt *, image=url *, safety_filter=bool | PNG | $0.025 |
image/z-image | texto→imagen | prompt *, aspect_ratio=1:1|16:9|9:16|3:4|4:3, safety_filter=bool | PNG | $0.006 |
image/wan-2.7 | texto→imagen | 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 | texto→imagen | 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 | texto→imagen | prompt * | JPG | $0.013 |
image/gemini-3.1-flash | texto→imagen | prompt *, aspect_ratio=1:1|16:9|9:16|4:3|3:4, resolution=1k|2k|4k | PNG | $0.013 |
image/gemini-3-pro | texto→imagen | prompt *, aspect_ratio=1:1|16:9|9:16|4:3|3:4, resolution=1k|2k|4k | PNG | $0.031 |
🎬 Video
model | Modo | Parámetros de input | Archivo | Precio |
|---|---|---|---|---|
video/veo-3.1-fast | texto→video | prompt *, aspect_ratio=16:9|9:16, image=url | MP4 | $0.38 |
video/veo-3.1-quality | texto→video | prompt *, aspect_ratio=16:9|9:16, image=url | MP4 | $1.56 |
video/veo-3.1-lite | texto→video | prompt *, aspect_ratio=16:9|9:16, image=url | MP4 | $0.19 |
video/gemini-omni | texto→video | 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 | texto→video | prompt *, attachments=upload[] | MP4 | $0.13 |
video/kling-3.0 | texto→video | 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/s |
video/kling-t2v | texto→video | prompt *, duration=3–15s, aspect_ratio=16:9|9:16|1:1, resolution=720p|1080p, safety_filter=bool | MP4 | $0.11/s |
video/kling-turbo-i2v | foto→video | prompt *, image=url *, duration=3–15s, resolution=720p|1080p, safety_filter=bool | MP4 | $0.11/s |
video/kling-2.6-t2v | texto→video | 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 | foto→video | prompt *, image=url *, duration=5|10, audio=bool, safety_filter=bool | MP4 | $0.34 |
video/kling-2.5-t2v | texto→video | prompt *, duration=5|10, aspect_ratio=16:9|9:16|1:1, safety_filter=bool | MP4 | $0.26 |
video/kling-2.5-i2v | foto→video | prompt *, image=url *, image2=url, duration=5|10, safety_filter=bool | MP4 | $0.26 |
video/kling-i2v | foto→video | prompt *, image=url *, image2=url, duration=5|10, safety_filter=bool | MP4 | $0.31 |
video/kling-2.1-standard | foto→video | prompt *, image=url *, duration=5|10, safety_filter=bool | MP4 | $0.16 |
video/kling-2.1-master-t2v | texto→video | prompt *, duration=5|10, aspect_ratio=16:9|9:16|1:1, safety_filter=bool | MP4 | $1.00 |
video/kling-2.1-master-i2v | foto→video | prompt *, image=url *, duration=5|10, safety_filter=bool | MP4 | $1.00 |
video/kling-motion | video→video | image=url *, video_url *, prompt, mode=standard|pro | MP4 | $1.25 |
video/kling-avatar | avatar (foto+audio) | image=url *, audio_url *, prompt * | MP4 | $0.75 |
video/kling-avatar-pro | avatar (foto+audio) | image=url *, audio_url *, prompt * | MP4 | $1.50 |
video/wan-2.7-t2v | texto→video | 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/s |
video/wan-2.7-i2v | foto→video | prompt *, image=url *, image2=url, duration=2–15s, resolution=720p|1080p, audio_url, safety_filter=bool | MP4 | $0.15/s |
video/wan-2.7-r2v | foto→video | prompt *, image=url *, duration=2–10s, aspect_ratio=16:9|9:16|1:1, resolution=720p|1080p, safety_filter=bool | MP4 | $0.15/s |
video/wan-2.7-edit | video→video | prompt *, video_url *, resolution=720p|1080p, audio_source=auto|original | MP4 | $1.50 |
video/wan-t2v | texto→video | prompt *, duration=5|10|15, resolution=720p|1080p, safety_filter=bool | MP4 | $0.44 |
video/wan-i2v | foto→video | prompt *, image=url *, duration=5|10|15, resolution=720p|1080p, safety_filter=bool | MP4 | $0.44 |
video/wan-v2v | video→video | prompt *, video_url *, duration=5|10, resolution=720p|1080p | MP4 | $0.44 |
video/wan-2.5-t2v | texto→video | 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 | foto→video | prompt *, image=url *, duration=5|10 *, resolution=720p|1080p, safety_filter=bool | MP4 | $0.38 |
video/wan-2.2-t2v | texto→video | prompt *, aspect_ratio=16:9|9:16, resolution=480p|720p, safety_filter=bool | MP4 | $0.50 |
video/wan-2.2-i2v | foto→video | prompt *, image=url *, resolution=480p|720p, safety_filter=bool | MP4 | $0.50 |
video/wan-s2v | avatar (foto+audio) | prompt *, image=url *, audio_url *, resolution=480p|580p|720p | MP4 | $0.38 |
video/wan-animate-move | video→video | image=url *, video_url *, resolution=480p|580p|720p | MP4 | $0.38 |
video/wan-animate-replace | video→video | image=url *, video_url *, resolution=480p|580p|720p | MP4 | $0.38 |
video/seedance-2 | texto→video | 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/s |
video/seedance-2-fast | texto→video | 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/s |
video/seedance-2-mini | texto→video | 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/s |
video/seedance-1.5-pro | texto→video | 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/s |
video/hailuo-02-t2v | texto→video | prompt *, duration=6|10, safety_filter=bool | MP4 | $0.19 |
video/hailuo-02-t2v-pro | texto→video | prompt *, safety_filter=bool | MP4 | $0.36 |
video/hailuo-02-i2v | foto→video | prompt *, image=url *, image2=url, duration=6|10, resolution=768p|512p, safety_filter=bool | MP4 | $0.19 |
video/hailuo-02-i2v-pro | foto→video | prompt *, image=url *, image2=url, safety_filter=bool | MP4 | $0.36 |
video/hailuo-2.3-i2v | foto→video | prompt *, image=url *, duration=6|10, resolution=768p|1080p, safety_filter=bool | MP4 | $0.19 |
video/hailuo-2.3-i2v-pro | foto→video | prompt *, image=url *, duration=6|10, resolution=768p|1080p, safety_filter=bool | MP4 | $0.28 |
video/happyhorse-1.1-t2v | texto→video | 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/s |
video/happyhorse-1.1-i2v | foto→video | prompt, image=url *, duration=3–15s, resolution=720p|1080p, safety_filter=bool | MP4 | $0.18/s |
video/happyhorse-1.1-r2v | foto→video | prompt *, image=url *, duration=3–15s, aspect_ratio=16:9|9:16|1:1, resolution=720p|1080p, safety_filter=bool | MP4 | $0.18/s |
video/happyhorse-t2v | texto→video | 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/s |
video/happyhorse-i2v | foto→video | prompt, image=url *, duration=3–15s, resolution=720p|1080p, safety_filter=bool | MP4 | $0.30/s |
video/happyhorse-edit | video→video | prompt *, video_url *, resolution=720p|1080p, audio_source=auto|original | MP4 | $1.50 |
video/grok-t2v | texto→video | 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/s |
video/grok-i2v | foto→video | prompt *, image=url *, duration=6–30s, resolution=480p|720p, mode=normal|fun|spicy, safety_filter=bool | MP4 | $0.019/s |
video/grok-1.5 | texto→video | prompt *, duration=1–15s, aspect_ratio=auto|16:9|9:16|1:1, resolution=480p|720p, image=url, safety_filter=bool | MP4 | $0.019/s |
video/omnihuman | avatar (foto+audio) | image=url *, audio_url *, prompt, resolution=720p|1080p | MP4 | $1.69 |
video/infinitalk | avatar (foto+audio) | prompt *, image=url *, audio_url *, resolution=480p|720p | MP4 | $0.19 |
video/lipsync | video→video | video_url *, audio_url *, mode=lite|basic | MP4 | $0.50 |
video/topaz-upscale | escalado | video_url *, scale=2|4 | MP4 | $0.50 |
🎵 Música
model | Modo | Parámetros de input | Archivo | Precio |
|---|---|---|---|---|
music/suno-v5 | música | title *, style *, version=v6|v6-wild|v6-mini, instrumental=bool, prompt | MP3 | $0.075 |
music/suno-cover | música | 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 | música | prompt *, attachments=upload[] *, version=v6|v6-wild|v6-mini, continue_from=1–120, instrumental=bool | MP3 | $0.075 |
music/suno-add-vocals | música | prompt *, attachments=upload[] *, version=v6|v6-wild|v6-mini, style, title, exclude_styles, vocal=female|male | MP3 | $0.075 |
music/suno-add-instrumental | música | prompt *, attachments=upload[] *, version=v6|v6-wild|v6-mini, title, exclude_styles | MP3 | $0.075 |
music/suno-mashup | música | prompt *, attachments=upload[] *, version=v6|v6-wild|v6-mini, instrumental=bool, advanced=bool, title, style, duration=10–360s | MP3 | $0.075 |
music/suno-sounds | música | 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 | Modo | Parámetros de input | Archivo | Precio |
|---|---|---|---|---|
audio/gemini-3.1-flash-tts | voz en off | 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 | voz en off | 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 | voz en off | 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 | voz en off | 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 |
🧊 Modelos 3D
La salida es GLB (algunos modelos permiten elegir OBJ, FBX, STL, USDZ, USD o 3MF) más una imagen de vista previa: la tarea devuelve varios archivos, cada uno con su propia extensión. La lista de archivos está en el campo results; cada uno tiene ext.
El precio solo se conoce después de la generación
El costo de 3D se calcula según los recursos realmente utilizados. Retenemos el límite superior de la tabla y, cuando se conoce el costo real, lo cobramos y devolvemos la diferencia. El importe final siempre aparece en cost_usd.
model | Modo | Parámetros de input | Archivo | Precio |
|---|---|---|---|---|
3d/tripo-text | texto→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 | foto→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 | texto→3D | prompt *, file_format=glb|obj|fbx|stl|usdz, pbr=bool, extra_mesh=bool | GLB y otros | $0.43–0.71 |
3d/hunyuan-rapid-image | foto→3D | image=url *, file_format=glb|obj|fbx|stl|usdz, pbr=bool, extra_mesh=bool | GLB y otros | $0.43–0.71 |
3d/hunyuan-pro-text | texto→3D | prompt *, output=textured|mesh, polygons=auto|40000|100000|300000|800000|1500000, pbr=bool | GLB | $0.71–1.00 |
3d/hunyuan-pro-image | foto→3D | image=url *, output=textured|mesh, polygons=auto|40000|100000|300000|800000|1500000, pbr=bool | GLB | $0.71–1.00 |
3d/seed3d-image | foto→3D | image=url *, mesh_detail=low|medium|high, file_format=glb|obj|usd|usdz | GLB/OBJ/USD | $0.50 |
3d/meshy-text | texto→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 | foto→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 | vistas→3D | images=[url] * (1–4), texture_size=2k|4k|8k, ultra=bool, texture=bool, pbr=bool, texture_text | GLB | $0.94–1.26 |
Foto como textura. En 3d/meshy-*, la textura se define por separado de la geometría: con una imagen en texture_photo o con texto en texture_text.
Tarda más. La generación 3D tarda desde medio minuto hasta varios minutos, más que una imagen o un clip corto. No es necesario mantener la conexión: el estado se conserva y hay webhooks.
🛠 Utilidades
model | Modo | Parámetros de input | Archivo | Precio |
|---|---|---|---|---|
image/topaz-upscale | escalado | image=url *, scale=2|4|8 | PNG | $0.063 |
image/recraft-remove-bg | edición | image=url * | PNG | $0.006 |
image/recraft-upscale | escalado | image=url * | PNG | $0.006 |
Ejemplos por modo
Imagen a partir de texto
{ "model": "image/flux2-pro", "input": { "prompt": "neon fox in snow", "aspect_ratio": "16:9", "resolution": "2k" } }Edición de imágenes
{ "model": "image/seedream-edit", "input": { "prompt": "eliminar el fondo, añadir neón", "image": "https://…/photo.png" } }Foto→vídeo (primer/último fotograma, duración, sonido)
{ "model": "video/wan-2.7-i2v", "input": {
"prompt": "acercamiento suave de la cámara", "image": "https://…/first.png",
"image2": "https://…/last.png", "duration": 8, "resolution": "1080p" } }Música
{ "model": "music/suno-v5", "input": { "title": "Northern Lights", "style": "epic orchestral", "instrumental": true, "version": "v6" } }Síntesis de voz
{ "model": "audio/gemini-3.1-flash-tts", "input": {
"text": "Hola, mundo", "voice": "Zephyr", "style": "empathetic",
"pace": "natural", "accent": "neutral" } }Diálogo de dos voces — en lugar del campo text, las intervenciones van en dialogue y las voces en voices (la voz 1 es la primera de la lista):
{ "model": "audio/gemini-3.1-flash-tts", "input": {
"voices": [ { "voice": "Kore", "style": "newscaster" }, { "voice": "Puck", "pace": "fast" } ],
"dialogue": [ { "speaker": 1, "text": "¡Buenas noches!" }, { "speaker": 2, "text": "Me alegra oírlo." } ] } }Avatar (vídeo de una persona hablando a partir de una foto + audio)
{ "model": "video/omnihuman", "input": { "image": "https://…/face.png", "audio_url": "https://…/voice.mp3" } }Estados y errores
GET /media/job/:id → campo status:
| Estado | Significado |
|---|---|
processing | En proceso — siga consultando |
done | Completado — archivo en result_url, importe cobrado en cost_usd |
failed | Error — motivo en error, importe reembolsado |
Códigos de respuesta de POST /media/generate: 400 — modelo desconocido o falta un campo obligatorio; 401 — clave ausente o no válida; 402 — saldo insuficiente; 403 — modelo no disponible en la cuenta.
El cuerpo del error siempre tiene el mismo formato — { "error": "текст для человека", "code": "машинный код" }. Códigos: unknown_model, missing_param (+ campo param), invalid_input, invalid_attachment, prompt_too_long, input_too_long, no_auth, no_key, insufficient_balance, unpaid_shortfall, rate_limited, generation_failed, unavailable.
Estimación previa del coste
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 }Los parámetros de las tablas se verificaron con el catálogo del servicio el 19.10.2026; la lista completa y actualizada de modelos, parámetros y precios está en GET /media/models.