Media API — images, video, music
Generate images, video and music with the same sk-nr-… key and the same balance as text models. One account, pay-as-you-go, no subscriptions or bundles.
- Base:
https://nordrouter.com(orhttps://global-api.nordrouter.comfor foreign networks). - Auth:
Authorization: Bearer sk-nr-…header (orX-API-Key: sk-nr-…). - Format: JSON, generation is asynchronous (create task → poll → fetch file).
Endpoints
| Method | Purpose |
|---|---|
POST /media/generate | Create a generation task |
GET /media/job/:id | Task status and result |
POST /media/estimate | Get a config's price up front |
GET /media/models | Machine-readable list of models and params |
POST /media/upload | Upload a source media file |
GET /media/file/:id | The finished file (link from result_url) |
Request lifecycle
1. Create a task
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": "slow camera push-in", "image": "https://…/photo.png", "duration": "5", "sound": true } }'{ "id": "b1f2…", "model": "video/kling-2.6-i2v", "status": "processing", "poll": "https://nordrouter.com/media/job/b1f2…" }2. Poll for status (every 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. Fetch the file — from result_url. The link is on nordrouter.com (your brand); files are kept for 14 days, then deleted — download or re-host on your side in time.
Uploading source media
The image, image2, audio_url, and video_url fields accept a direct public URL. Models with an attachments field accept an array of objects returned by POST /media/upload: send { "data": "data:audio/mpeg;base64,…", "name": "track.mp3" }, then put the full uploader response in input.attachments. For Suno you may instead pass a public URL as input.upload_url, or two URLs as input.upload_url_list for mashup.
Billing
Charges are taken from your USD balance (the same one text models use) — per completed generation, for exactly the amount in the tables below.
- Reserve → actual. On task creation an estimate is reserved; on completion the amount is reconciled to the actual result, and the excess is refunded.
- Video is per second. Price scales with duration and resolution; sound on costs more. Tables show the "from" price at defaults; a
/sectag marks a per-second rate. - Failures aren't charged. If a task ends
failed, the reserve is fully refunded — you only pay for successful generations. - Exact price up front —
POST /media/estimatewith the samemodel+inputreturns{ "usd": … }before you commit. - Top up in rubles (≈ $1 = 89–96 ₽); everything is then metered in USD.
Model catalog
Price: for video it's a per-second rate (/sec), total = rate × duration (resolution/sound can change it); everything else is per generation at default settings. The exact price of any config is returned by POST /media/estimate.
input may accept more fields — a machine-readable list (types, options, defaults, second ranges) is always returned by GET /media/models. Required ones are marked *. Any extra model fields (negative_prompt, seed, cfg_scale…) can be sent straight in input.
🖼 Images
model | Mode | input params | File | Price |
|---|---|---|---|---|
image/nano-banana | text→image | prompt *, aspect_ratio=1:1|16:9|9:16|3:4|4:3|3:2|2:3|21:9|auto, nsfw_checker=bool | PNG | $0.025 |
image/nano-banana-2 | text→image | prompt *, aspect_ratio=auto|1:1|16:9|9:16|3:4|4:3|21:9, resolution=1K|2K|4K, image=url, nsfw_checker=bool | PNG | $0.050 |
image/nano-banana-2-lite | text→image | prompt *, aspect_ratio=auto|1:1|16:9|9:16|3:4|4:3, image=url, nsfw_checker=bool | PNG | $0.025 |
image/nano-banana-pro | text→image | prompt *, aspect_ratio=1:1|16:9|9:16|3:4|4:3|21:9|auto, resolution=1K|2K|4K, image=url, nsfw_checker=bool | PNG | $0.11 |
image/imagen4-fast | text→image | prompt *, aspect_ratio=1:1|16:9|9:16|3:4|4:3, nsfw_checker=bool | PNG | $0.025 |
image/imagen4 | text→image | prompt *, aspect_ratio=1:1|16:9|9:16|3:4|4:3, nsfw_checker=bool | PNG | $0.050 |
image/imagen4-ultra | text→image | prompt *, aspect_ratio=1:1|16:9|9:16|3:4|4:3, nsfw_checker=bool | PNG | $0.075 |
image/gpt-image-1.5 | text→image | prompt *, aspect_ratio=1:1|2:3|3:2, quality=medium|high, nsfw_checker=bool | PNG | $0.025 |
image/gpt-image-1.5-edit | image edit | prompt *, image=url *, aspect_ratio=3:2|1:1|2:3, quality=medium|high, nsfw_checker=bool | PNG | $0.025 |
image/gpt-image-2 | text→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 | image edit | prompt *, image=url *, aspect_ratio=auto|1:1|3:2|2:3|16:9|9:16, resolution=1K|2K|4K, nsfw_checker=bool | PNG | $0.037 |
image/flux2-pro | text→image | prompt *, aspect_ratio=1:1|4:3|3:4|16:9|9:16|3:2|2:3, resolution=1K|2K, nsfw_checker=bool | PNG | $0.031 |
image/flux2-pro-edit | image edit | prompt *, image=url *, aspect_ratio=1:1|4:3|3:4|16:9|9:16|3:2|2:3|auto, resolution=1K|2K, nsfw_checker=bool | PNG | $0.031 |
image/flux2-flex | text→image | prompt *, aspect_ratio=1:1|4:3|3:4|16:9|9:16|3:2|2:3, resolution=1K|2K, nsfw_checker=bool | PNG | $0.087 |
image/flux2-flex-edit | image edit | prompt *, image=url *, aspect_ratio=1:1|4:3|3:4|16:9|9:16|3:2|2:3|auto, resolution=1K|2K, nsfw_checker=bool | PNG | $0.087 |
image/seedream-edit | image edit | prompt *, image=url *, image_size=square_hd|square|portrait_4_3|portrait_16_9|landscape_4_3|landscape_16_9, image_resolution=1K|2K|4K, nsfw_checker=bool | PNG | $0.037 |
image/seedream-4.5-edit | image edit | prompt *, image=url *, aspect_ratio=1:1|4:3|3:4|16:9|9:16|2:3|3:2, quality=basic|high, nsfw_checker=bool | PNG | $0.044 |
image/seedream-5-lite-edit | image edit | prompt *, image=url *, aspect_ratio=1:1|4:3|3:4|16:9|9:16|2:3|3:2, quality=basic|high, nsfw_checker=bool | PNG | $0.037 |
image/seedream-5.0-pro-edit | image edit | prompt *, image=url *, aspect_ratio=1:1|4:3|3:4|16:9|9:16|2:3|3:2|21:9, quality=basic|high, nsfw_checker=bool | PNG | $0.044 |
image/ideogram-v3 | text→image | prompt *, rendering_speed=TURBO|BALANCED|QUALITY, image_size=square_hd|square|portrait_4_3|portrait_16_9|landscape_4_3|landscape_16_9, style=AUTO|GENERAL|REALISTIC|DESIGN, nsfw_checker=bool | PNG | $0.044 |
image/ideogram-edit | image edit | prompt *, image=url *, rendering_speed=TURBO|BALANCED|QUALITY, image_size=square_hd|square|portrait_4_3|portrait_16_9|landscape_4_3|landscape_16_9, nsfw_checker=bool | PNG | $0.044 |
image/ideogram-character | image edit | prompt *, image=url *, rendering_speed=TURBO|BALANCED|QUALITY, style=AUTO|REALISTIC|FICTION, nsfw_checker=bool | PNG | $0.11 |
image/qwen | text→image | prompt *, image_size=square_hd|square|portrait_4_3|portrait_16_9|landscape_4_3|landscape_16_9, nsfw_checker=bool | PNG | $0.031 |
image/qwen-edit | image edit | prompt *, image=url *, image_size=square_hd|square|portrait_4_3|portrait_16_9|landscape_4_3|landscape_16_9, nsfw_checker=bool | PNG | $0.037 |
image/qwen-i2i | image edit | prompt *, image=url *, nsfw_checker=bool | PNG | $0.031 |
image/qwen2-edit | image edit | prompt *, image=url *, image_size=16:9|1:1|3:4|4:3|9:16|3:2|2:3, nsfw_checker=bool | PNG | $0.037 |
image/grok | text→image | prompt *, aspect_ratio=1:1|2:3|3:2|16:9|9:16, enable_pro=bool, nsfw_checker=bool | PNG | $0.025 |
image/grok-edit | image edit | prompt *, image=url *, nsfw_checker=bool | PNG | $0.025 |
image/z-image | text→image | prompt *, aspect_ratio=1:1|16:9|9:16|3:4|4:3, nsfw_checker=bool | PNG | $0.006 |
image/wan-2.7 | text→image | prompt *, aspect_ratio=1:1|16:9|9:16|4:3|3:4|21:9, resolution=1K|2K|4K, image=url, nsfw_checker=bool | PNG | $0.031 |
image/wan-2.7-pro | text→image | prompt *, aspect_ratio=1:1|16:9|9:16|4:3|3:4|21:9, resolution=1K|2K|4K, image=url, nsfw_checker=bool | PNG | $0.075 |
image/seedream-5.0-pro | text→image | prompt * | JPG | $0.013 |
image/gemini-3.1-flash | text→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 | text→image | prompt *, aspect_ratio=1:1|16:9|9:16|4:3|3:4, resolution=1K|2K|4K | PNG | $0.031 |
🎬 Video
model | Mode | input params | File | Price |
|---|---|---|---|---|
video/veo-3.1-fast | text→video | prompt *, aspect_ratio=16:9|9:16, image=url | MP4 | $0.38 |
video/veo-3.1-quality | text→video | prompt *, aspect_ratio=16:9|9:16, image=url | MP4 | $1.56 |
video/veo-3.1-lite | text→video | prompt *, aspect_ratio=16:9|9:16, image=url | MP4 | $0.19 |
video/gemini-omni | text→video | prompt *, duration=4|6|8|10, aspect_ratio=16:9|9:16, resolution=720p|1080p|4k, image=url, nsfw_checker=bool | MP4 | $0.66 |
video/gemini-omni-flash | text→video | prompt *, attachments=upload[] | MP4 | $0.13 |
video/kling-3.0 | text→video | prompt *, duration=3–15s, aspect_ratio=16:9|9:16|1:1, mode=std|pro|4K, sound=bool, image=url, image2=url, nsfw_checker=bool | MP4 | $0.11/sec |
video/kling-t2v | text→video | prompt *, duration=3–15s, aspect_ratio=16:9|9:16|1:1, resolution=720p|1080p, nsfw_checker=bool | MP4 | $0.11/sec |
video/kling-turbo-i2v | image→video | prompt *, image=url *, duration=3–15s, resolution=720p|1080p, nsfw_checker=bool | MP4 | $0.11/sec |
video/kling-2.6-t2v | text→video | prompt *, duration=5|10, aspect_ratio=16:9|9:16|1:1, sound=bool, nsfw_checker=bool | MP4 | $0.34 |
video/kling-2.6-i2v | image→video | prompt *, image=url *, duration=5|10, sound=bool, nsfw_checker=bool | MP4 | $0.34 |
video/kling-2.5-t2v | text→video | prompt *, duration=5|10, aspect_ratio=16:9|9:16|1:1, nsfw_checker=bool | MP4 | $0.26 |
video/kling-2.5-i2v | image→video | prompt *, image=url *, image2=url, duration=5|10, nsfw_checker=bool | MP4 | $0.26 |
video/kling-i2v | image→video | prompt *, image=url *, image2=url, duration=5|10, nsfw_checker=bool | MP4 | $0.31 |
video/kling-2.1-standard | image→video | prompt *, image=url *, duration=5|10, nsfw_checker=bool | MP4 | $0.16 |
video/kling-2.1-master-t2v | text→video | prompt *, duration=5|10, aspect_ratio=16:9|9:16|1:1, nsfw_checker=bool | MP4 | $1.00 |
video/kling-2.1-master-i2v | image→video | prompt *, image=url *, duration=5|10, nsfw_checker=bool | MP4 | $1.00 |
video/kling-motion | video→video | image=url *, video_url *, prompt, mode=std|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 | text→video | prompt *, duration=2–15s, ratio=16:9|9:16|1:1|4:3|3:4, resolution=720p|1080p, audio_url, nsfw_checker=bool | MP4 | $0.15/sec |
video/wan-2.7-i2v | image→video | prompt *, image=url *, image2=url, duration=2–15s, resolution=720p|1080p, audio_url, nsfw_checker=bool | MP4 | $0.15/sec |
video/wan-2.7-r2v | image→video | prompt *, image=url *, duration=2–10s, aspect_ratio=16:9|9:16|1:1, resolution=720p|1080p, nsfw_checker=bool | MP4 | $0.15/sec |
video/wan-2.7-edit | video→video | prompt *, video_url *, resolution=720p|1080p, audio_setting=auto|origin | MP4 | $1.50 |
video/wan-t2v | text→video | prompt *, duration=5|10|15, resolution=720p|1080p, nsfw_checker=bool | MP4 | $0.44 |
video/wan-i2v | image→video | prompt *, image=url *, duration=5|10|15, resolution=720p|1080p, nsfw_checker=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 | text→video | prompt *, duration=5|10, aspect_ratio=16:9|9:16|1:1, resolution=720p|1080p, nsfw_checker=bool | MP4 | $0.38 |
video/wan-2.5-i2v | image→video | prompt *, image=url *, duration=5|10, resolution=720p|1080p, nsfw_checker=bool | MP4 | $0.38 |
video/wan-2.2-t2v | text→video | prompt *, aspect_ratio=16:9|9:16, resolution=480p|720p, nsfw_checker=bool | MP4 | $0.50 |
video/wan-2.2-i2v | image→video | prompt *, image=url *, resolution=480p|720p, nsfw_checker=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 | 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 | text→video | prompt *, duration=4–15s, aspect_ratio=16:9|9:16|1:1|4:3|21:9, resolution=480p|720p|1080p|4k, generate_audio=bool, image=url, image2=url, nsfw_checker=bool | MP4 | $0.26/sec |
video/seedance-2-fast | text→video | prompt *, duration=4–15s, aspect_ratio=16:9|9:16|1:1, resolution=480p|720p, generate_audio=bool, image=url, image2=url, nsfw_checker=bool | MP4 | $0.21/sec |
video/seedance-2-mini | text→video | prompt *, duration=4–15s, aspect_ratio=16:9|9:16|1:1, resolution=480p|720p, generate_audio=bool, image=url, image2=url, nsfw_checker=bool | MP4 | $0.13/sec |
video/seedance-1.5-pro | text→video | prompt *, duration=4–12s, aspect_ratio=16:9|9:16|1:1|4:3, resolution=480p|720p|1080p, generate_audio=bool, image=url, nsfw_checker=bool | MP4 | $0.025/sec |
video/hailuo-02-t2v | text→video | prompt *, duration=6|10, nsfw_checker=bool | MP4 | $0.19 |
video/hailuo-02-t2v-pro | text→video | prompt *, nsfw_checker=bool | MP4 | $0.36 |
video/hailuo-02-i2v | image→video | prompt *, image=url *, image2=url, duration=6|10, resolution=768P|512P, nsfw_checker=bool | MP4 | $0.19 |
video/hailuo-02-i2v-pro | image→video | prompt *, image=url *, image2=url, nsfw_checker=bool | MP4 | $0.36 |
video/hailuo-2.3-i2v | image→video | prompt *, image=url *, duration=6|10, resolution=768P|1080P, nsfw_checker=bool | MP4 | $0.19 |
video/hailuo-2.3-i2v-pro | image→video | prompt *, image=url *, duration=6|10, resolution=768P|1080P, nsfw_checker=bool | MP4 | $0.28 |
video/happyhorse-1.1-t2v | text→video | prompt *, duration=3–15s, aspect_ratio=16:9|9:16|1:1|4:3|3:4, resolution=720p|1080p, nsfw_checker=bool | MP4 | $0.18/sec |
video/happyhorse-1.1-i2v | image→video | prompt, image=url *, duration=3–15s, resolution=720p|1080p, nsfw_checker=bool | MP4 | $0.18/sec |
video/happyhorse-1.1-r2v | image→video | prompt *, image=url *, duration=3–15s, aspect_ratio=16:9|9:16|1:1, resolution=720p|1080p, nsfw_checker=bool | MP4 | $0.18/sec |
video/happyhorse-t2v | text→video | prompt *, duration=3–15s, aspect_ratio=16:9|9:16|1:1|4:3|3:4, resolution=720p|1080p, nsfw_checker=bool | MP4 | $0.30/sec |
video/happyhorse-i2v | image→video | prompt, image=url *, duration=3–15s, resolution=720p|1080p, nsfw_checker=bool | MP4 | $0.30/sec |
video/happyhorse-edit | video→video | prompt *, video_url *, resolution=720p|1080p, audio_setting=auto|origin | MP4 | $1.50 |
video/grok-t2v | text→video | prompt *, duration=6–30s, aspect_ratio=16:9|9:16|1:1|3:2|2:3, resolution=480p|720p, mode=normal|fun|spicy, nsfw_checker=bool | MP4 | $0.019/sec |
video/grok-i2v | image→video | prompt *, image=url *, duration=6–30s, resolution=480p|720p, mode=normal|fun|spicy, nsfw_checker=bool | MP4 | $0.019/sec |
video/grok-1.5 | text→video | prompt *, duration=1–15s, aspect_ratio=auto|16:9|9:16|1:1, resolution=480p|720p, image=url, nsfw_checker=bool | MP4 | $0.019/sec |
video/omnihuman | avatar (photo+audio) | image=url *, audio_url *, prompt, output_resolution=720|1080 | MP4 | $1.69 |
video/infinitalk | avatar (photo+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 | upscale | video_url *, upscale_factor=2|4 | MP4 | $0.50 |
🎵 Music
model | Mode | input params | File | Price |
|---|---|---|---|---|
music/suno-v5 | music | title *, style *, version=V5_5|V5|V4_5ALL|V4_5PLUS|V4_5|V4, instrumental=bool, prompt | MP3 | $0.075 |
music/suno-cover | music | prompt *, attachments=upload[] *, version=V5_5|V5|V4_5ALL|V4_5PLUS|V4_5|V4, instrumental=bool | MP3 | $0.075 |
music/suno-extend-upload | music | prompt *, attachments=upload[] *, version=V5_5|V5|V4_5ALL|V4_5PLUS|V4_5|V4, continueAt=1–120, instrumental=bool | MP3 | $0.075 |
music/suno-add-vocals | music | prompt *, attachments=upload[] *, version=V4_5PLUS, style, title, negativeTags, vocalGender=f|m | MP3 | $0.075 |
music/suno-add-instrumental | music | prompt *, attachments=upload[] *, version=V4_5PLUS, title, negativeTags | MP3 | $0.075 |
music/suno-mashup | music | prompt *, attachments=upload[] *, version=V5_5|V5|V4_5ALL|V4_5PLUS|V4_5|V4, instrumental=bool | MP3 | $0.075 |
music/suno-sounds | music | prompt *, version=V5_5|V5|V4_5ALL|V4_5PLUS|V4_5|V4, soundLoop=bool, soundTempo=auto|60|80|100|120|140|160, soundKey=auto|C|Dm|Em|F|G|Am|D#m | MP3 | $0.016 |
🎙 Audio
model | Mode | input params | File | Price |
|---|---|---|---|---|
audio/gemini-3.1-flash-tts | text-to-speech | 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|Rapid Fire|The Drift|Staccato, accent=Neutral|American (Gen)|American (Valley)|American (South)|British (RP)|British (Brixton)|Transatlantic|Australian, audio_profile, scene, temperature=0–2 | WAV | $0.006 |
audio/gemini-2.5-pro-tts | text-to-speech | 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|Rapid Fire|The Drift|Staccato, accent=Neutral|American (Gen)|American (Valley)|American (South)|British (RP)|British (Brixton)|Transatlantic|Australian, audio_profile, scene, temperature=0–2 | WAV | $0.006 |
audio/elevenlabs-tts | text-to-speech | text *, voice=James · Husky, Engaging and Bold|Addison · Australian, Audiobook & Podcast|Adeline · Feminine and Conversational|Allison · Calm, Soothing and Meditative|Ana Rita · Smooth, Expressive and Bright|Anika · Animated, Friendly and Engaging|Arabella · Mysterious and Emotive|Aria · Sultry Villain|Bella · Professional, Bright, Warm|Benjamin · Deep, Warm, Calming|Bradford · Expressive and Articulate|Brian · Deep, Resonant and Comforting|Britney · Calm and Calculative Villain|Brittney · Fun, Youthful & Informative|Brock · Commanding and Loud Sergeant|Burt · Deep, Smooth and Clear|Callum · Husky Trickster|Cassidy · Crisp, Direct and Clear|Ed · Late Night Announcer|Edward · Loud, Confident and Cocky|Emma · Adorable and Upbeat|Eve · Authentic, Energetic and Happy|Felix · Warm, Positive & Contemporary|Finn · Youthful, Eager and Energetic|Hank · Deep and Engaging Narrator|Hope · Poetic, Romantic and Captivating|Hope · Bubbly, Gossipy and Girly|Horatius · Energetic Character Voice|Jamahal · Young, Vibrant, and Natural|Jean · Alluring and Playful Femme Fatale|Jeff · Classy, Resonating and Strong|Jessica · Eloquent Villain|Jessica · Chatty and Friendly|John Doe · Deep|John Morgan · Gritty, Rugged Cowboy|Johnny Dynamite · Vintage Radio DJ|Johnny Kid · Serious and Calm Narrator|Kuon · Cheerful, Clear and Steady|Laura · Enthusiast, Quirky Attitude|Leon · Soothing and Grounded|Liam · Energetic, Social Media Creator|Lucy · Fresh & Casual|Lutz · Chuckling, Giggly and Cheerful|Mark · Casual, Relaxed and Light|Mark · Natural Conversations|Marshal · Friendly, Funny Professor|Monika · Deep and Natural|Nathan · Virtual Radio Host|Nathaniel · Engaging, British and Calm|Phil · Explosive, Passionate Announcer|Rachel · Pro British Radio Presenter|Rex Thunder · Deep N Tough|Sam · Support Agent|Spuds · Wise and Approachable|Sven · Emotional and Nice|Taksh · Calm, Serious and Smooth|Theodore · Serene and Grounded|Tiffany · Natural and Welcoming|Tom · Conversations & Books|Viking Bjorn · Epic Medieval Raider|Viraj · Smooth and Gentle|Viraj · Rich and Soft|Wyatt · Wise Rustic Cowboy|Xavier · Dominating, Metallic Announcer, voice_id, speed=0.8|1.0|1.2 | MP3 | $0.037 |
audio/elevenlabs-multilingual | text-to-speech | text *, voice=James · Husky, Engaging and Bold|Addison · Australian, Audiobook & Podcast|Adeline · Feminine and Conversational|Allison · Calm, Soothing and Meditative|Ana Rita · Smooth, Expressive and Bright|Anika · Animated, Friendly and Engaging|Arabella · Mysterious and Emotive|Aria · Sultry Villain|Bella · Professional, Bright, Warm|Benjamin · Deep, Warm, Calming|Bradford · Expressive and Articulate|Brian · Deep, Resonant and Comforting|Britney · Calm and Calculative Villain|Brittney · Fun, Youthful & Informative|Brock · Commanding and Loud Sergeant|Burt · Deep, Smooth and Clear|Callum · Husky Trickster|Cassidy · Crisp, Direct and Clear|Ed · Late Night Announcer|Edward · Loud, Confident and Cocky|Emma · Adorable and Upbeat|Eve · Authentic, Energetic and Happy|Felix · Warm, Positive & Contemporary|Finn · Youthful, Eager and Energetic|Hank · Deep and Engaging Narrator|Hope · Poetic, Romantic and Captivating|Hope · Bubbly, Gossipy and Girly|Horatius · Energetic Character Voice|Jamahal · Young, Vibrant, and Natural|Jean · Alluring and Playful Femme Fatale|Jeff · Classy, Resonating and Strong|Jessica · Eloquent Villain|Jessica · Chatty and Friendly|John Doe · Deep|John Morgan · Gritty, Rugged Cowboy|Johnny Dynamite · Vintage Radio DJ|Johnny Kid · Serious and Calm Narrator|Kuon · Cheerful, Clear and Steady|Laura · Enthusiast, Quirky Attitude|Leon · Soothing and Grounded|Liam · Energetic, Social Media Creator|Lucy · Fresh & Casual|Lutz · Chuckling, Giggly and Cheerful|Mark · Casual, Relaxed and Light|Mark · Natural Conversations|Marshal · Friendly, Funny Professor|Monika · Deep and Natural|Nathan · Virtual Radio Host|Nathaniel · Engaging, British and Calm|Phil · Explosive, Passionate Announcer|Rachel · Pro British Radio Presenter|Rex Thunder · Deep N Tough|Sam · Support Agent|Spuds · Wise and Approachable|Sven · Emotional and Nice|Taksh · Calm, Serious and Smooth|Theodore · Serene and Grounded|Tiffany · Natural and Welcoming|Tom · Conversations & Books|Viking Bjorn · Epic Medieval Raider|Viraj · Smooth and Gentle|Viraj · Rich and Soft|Wyatt · Wise Rustic Cowboy|Xavier · Dominating, Metallic Announcer, voice_id, speed=0.8|1.0|1.2 | MP3 | $0.075 |
audio/elevenlabs-isolation | audio | audio_url * | MP3 | $0.063 |
🛠 Utilities
model | Mode | input params | File | Price |
|---|---|---|---|---|
image/topaz-upscale | upscale | image=url *, upscale_factor=2|4|8 | PNG | $0.063 |
image/recraft-remove-bg | edit | image=url * | PNG | $0.006 |
image/recraft-upscale | upscale | image=url * | PNG | $0.006 |
Examples by mode
Image from text
{ "model": "image/flux2-pro", "input": { "prompt": "neon fox in snow", "aspect_ratio": "16:9", "resolution": "2K" } }Image edit
{ "model": "image/seedream-edit", "input": { "prompt": "remove background, add neon", "image": "https://…/photo.png" } }Image→video (first/last frame, duration, sound)
{ "model": "video/wan-2.7-i2v", "input": {
"prompt": "slow camera push-in", "image": "https://…/first.png",
"image2": "https://…/last.png", "duration": 8, "resolution": "1080p" } }Music
{ "model": "music/suno-v5", "input": { "title": "Northern Lights", "style": "epic orchestral", "instrumental": true, "version": "V5_5" } }Text-to-speech
{ "model": "audio/gemini-3.1-flash-tts", "input": {
"text": "Hello world", "voice": "Zephyr", "style": "Empathetic",
"pace": "Natural", "accent": "Neutral" } }For dialogues, the API also accepts the official speakers (1–2 voices) and dialogue_turns arrays instead of the simple text field.
Avatar (talking video from photo + audio)
{ "model": "video/omnihuman", "input": { "image": "https://…/face.png", "audio_url": "https://…/voice.mp3" } }Statuses and errors
GET /media/job/:id → status field:
| Status | Meaning |
|---|---|
processing | In progress — keep polling |
done | Ready — file in result_url, charge in cost_usd |
failed | Error — reason in error, money refunded |
POST /media/generate response codes: 400 — unknown model or missing required field; 401 — missing/bad key; 402 — insufficient balance; 403 — model not available on the account.
Estimate the price up front
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", "sound": true } }'{ "model": "video/kling-3.0", "usd": 1.6875 }This reference is generated from the service catalog (105 models) and always matches live prices and parameters.