मीडिया जनरेशन (वीडियो, चित्र, संगीत)
NordRouter चित्र, वीडियो और संगीत जनरेट कर सकता है — टेक्स्ट मॉडल की तरह ही sk-nr-… कुंजी और उसी बैलेंस से। शुल्क उपयोग के आधार पर है; कोई टोकन या पैकेज नहीं।
अनुरोध केवल बैकएंड से, ब्राउज़र से नहीं
ब्राउज़र से सीधे /media/* पर अनुरोध नहीं किया जा सकता। CORS जाँच के कारण अनुरोध विफल होकर Failed to fetch दिखाएगा।
ऐसा जानबूझकर किया गया है। इस एंडपॉइंट को Authorization हेडर में आपकी कुंजी चाहिए। ब्राउज़र में मौजूद हर चीज़ डेवलपर टूल खोलने वाले किसी भी व्यक्ति को दिख सकती है: कुंजी लीक हो जाएगी और दूसरे लोग आपके बैलेंस से खर्च करने लगेंगे। fetch में हेडर जोड़ने से भी इसकी सुरक्षा नहीं होती।
सही तरीका:
ब्राउज़र → आपका सर्वर (कुंजी यहीं रहती है) → nordrouter.comतैयार फ़ाइल सामान्य लिंक से उपलब्ध होगी। आप इसे सीधे पेज पर <img src> या <video src> में डाल सकते हैं; इसके लिए किसी कॉन्फ़िगरेशन की ज़रूरत नहीं है।
यह कैसे काम करता है
जनरेशन असिंक्रोनस है (वीडियो और संगीत में कुछ सेकंड से लेकर कुछ मिनट तक लग सकते हैं):
- टास्क बनाएँ — मॉडल और पैरामीटर के साथ
POST /media/generateभेजें। - परिणाम की प्रतीक्षा करें —
GET /media/job/:idको तब तक पोल करें, जब तकstatusका मानdoneन हो जाए। - फ़ाइल प्राप्त करें —
result_urlसे (nordrouter.comका लिंक)।
1. टास्क बनाएँ
curl https://nordrouter.com/media/generate \
-H "Authorization: Bearer sk-nr-YOUR-KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "image/nano-banana-2",
"input": { "prompt": "सर्दियों के जंगल में एक आरामदायक झोपड़ी, वॉटरकलर", "resolution": "2k" }
}'जवाब:
{ "id": "beefb531-…", "model": "image/nano-banana-2", "status": "processing",
"poll": "https://nordrouter.com/media/job/beefb531-…" }त्रुटियाँ हमेशा एक ही फ़ॉर्मैट में होती हैं: { "error": "समझने योग्य संदेश", "code": "missing_param" }। कोड में code के आधार पर शर्तें लगाना आसान है (invalid_input, missing_param, unknown_model, insufficient_balance, rate_limited, no_auth…); error उपयोगकर्ता के लिए है।
2. परिणाम की प्रतीक्षा करें
curl https://nordrouter.com/media/job/beefb531-…{ "id": "beefb531-…", "status": "done",
"result_url": "https://nordrouter.com/media/file/beefb531-…",
"cost_usd": 0.052, "error": null }status: processing → done (या failed)। तैयार फ़ाइल result_url पर उपलब्ध होगी।
🎵 Suno हर टास्क में दो ट्रैक जनरेट करता है: पहला
result_urlमें और दूसराresult_url_2में (लिंक का फ़ॉर्मैट वही है)। कीमत पूरे टास्क की है; इसमें दोनों ट्रैक शामिल हैं।
वेबहुक (पोलिंग के बजाय)
अगर आप पोल नहीं करना चाहते, तो POST /media/generate में callback_url फ़ील्ड दें। टास्क पूरा होने पर हम POST अनुरोध के ज़रिए परिणाम खुद भेजेंगे:
curl https://nordrouter.com/media/generate \
-H "Authorization: Bearer sk-nr-YOUR-KEY" -H "Content-Type: application/json" \
-d '{
"model": "image/nano-banana-2",
"input": { "prompt": "…" },
"callback_url": "https://your-server.com/webhooks/nordrouter",
"callback_secret": "ваш-секрет"
}'टास्क का status done या failed होने पर, callback_url पर GET /media/job/:id वाले जवाब के समान बॉडी के साथ POST आएगा। इसमें event फ़ील्ड भी होगा:
{ "event": "media.completed", "id": "beefb531-…", "status": "done",
"result_url": "https://nordrouter.com/media/file/beefb531-…", "cost_usd": 0.052, "error": null }event: media.completed या media.failed।
हस्ताक्षर की जाँच। अगर आपने callback_secret दिया है, तो X-NR-Signature हेडर में sha256=<hmac> आएगा। यह आपके सीक्रेट से अनुरोध की बॉडी पर बनाया गया HMAC-SHA256 है। यह पुष्टि करने के लिए इसकी तुलना करें कि अनुरोध हमारी ओर से आया है:
import hmac, hashlib
expected = "sha256=" + hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
assert hmac.compare_digest(expected, request.headers["X-NR-Signature"])आवश्यकताएँ और विश्वसनीयता:
callback_urlकेवलhttps://और सार्वजनिक पता होना चाहिए (आंतरिक/निजी IP को त्रुटि 400 के साथ अस्वीकार किया जाएगा)।- बढ़ते अंतराल के साथ डिलीवरी के अधिकतम 4 प्रयास किए जाएँगे।
2xxजवाब दें, वरना हम दोबारा प्रयास करेंगे। - वेबहुक से पोलिंग बंद नहीं होती। आप दोनों का उपयोग कर सकते हैं या बैकअप के तौर पर
GET /media/job/:idइस्तेमाल कर सकते हैं।
अधिक जानकारी
टास्क का जीवनचक्र, उदाहरणों के साथ हस्ताक्षर की जाँच और डिलीवरी की विश्वसनीयता के बारे में टास्क और वेबहुक पेज पर पढ़ें।
3. मॉडल और कीमतों की सूची
GET /media/models उपलब्ध मॉडल, उनके पैरामीटर और अनुमानित लागत लौटाता है:
{ "models": [
{ "id": "image/nano-banana-2", "type": "image",
"fields": [ {"name":"prompt","type":"textarea"}, {"name":"resolution","type":"select","options":["1k","2k","4k"]},
{"name":"safety_filter","type":"bool","default":true} ],
"est_usd": 0.052 }
], "retention_days": 14 }पूरी संदर्भ सूची
input पैरामीटर और कीमतों सहित सभी मॉडल मीडिया: सभी मॉडल और बिलिंग पेज पर देखें।
मॉडल
95 मॉडल उपलब्ध हैं — पैरामीटर और कीमतों सहित पूरी अप-टू-डेट सूची हमेशा GET /media/models पर उपलब्ध है। मुख्य मॉडल परिवार:
| प्रकार | परिवार | मोड | लगभग कीमत |
|---|---|---|---|
| 🖼 चित्र | Nano Banana / 2 / Pro (image/nano-banana*) | टेक्स्ट→चित्र, संपादन, 4K तक | $0.025 से |
| 🖼 | Imagen 4 Fast / Ultra (image/imagen4*) | टेक्स्ट→चित्र | $0.025 से |
| 🖼 | GPT Image 1.5 / 2 (image/gpt-image-*) | टेक्स्ट→चित्र, संपादन, 4K तक | $0.025 से |
| 🖼 | Flux 2 Pro / Flex (image/flux2-*) | टेक्स्ट→चित्र, संपादन | $0.03 से |
| 🖼 | Seedream v4 / 4.5 / 5 Lite (image/seedream-*) | टेक्स्ट→चित्र, संपादन | $0.04 से |
| 🖼 | Ideogram v3 / Character (image/ideogram-*) | टेक्स्ट, रीमिक्स, कैरेक्टर | $0.02 से |
| 🖼 | Qwen / Wan Image / Grok / Z-Image | टेक्स्ट→चित्र, संपादन | $0.01 से |
| 🛠 उपयोगिताएँ | Topaz / Recraft (image/*upscale*, image/recraft-remove-bg) | 8K तक अपस्केल, बैकग्राउंड हटाना | $0.01 से |
| 🎬 वीडियो | Veo 3.1 Lite / Fast / Quality (video/veo-3.1-*) | टेक्स्ट/फ़ोटो→वीडियो | $0.19 से |
| 🎬 | Kling 2.1 → 3.0 (video/kling-*) | टेक्स्ट/फ़ोटो→वीडियो, मोशन, अवतार, 4K और 15 सेकंड तक | $0.16 से |
| 🎬 | Wan 2.2 → 2.7 (video/wan-*) | टेक्स्ट/फ़ोटो/वीडियो→वीडियो, speech-to-video | $0.25 से |
| 🎬 | Seedance 1.5 / 2 / Fast / Mini (video/seedance-*) | टेक्स्ट/फ़ोटो→वीडियो, 4K तक, ऑडियो | $0.06 से |
| 🎬 | Hailuo 02 / 2.3 (video/hailuo-*) | टेक्स्ट/फ़ोटो→वीडियो | $0.08 से |
| 🎬 | HappyHorse 1.0 / 1.1 (video/happyhorse-*) | टेक्स्ट/फ़ोटो/रेफ़रेंस→वीडियो, वीडियो संपादन | $0.70 से |
| 🎬 | Grok Video / 1.5 (video/grok-*) | टेक्स्ट/फ़ोटो→वीडियो, 30 सेकंड तक | $0.06 से |
| 🎬 | Gemini Omni (video/gemini-omni) | ऑडियो सहित वीडियो, 4K तक | $0.39 से |
| 🗣 अवतार | Kling Avatar, OmniHuman, InfiniteTalk, Lip Sync | फ़ोटो+ऑडियो→बोलता हुआ वीडियो | $0.19 से |
| 🎵 संगीत | Suno V6 / V6 Wild / V6 Mini (music/suno-*) | टेक्स्ट/शैली→2 ट्रैक, कवर, आगे जारी रखना, वोकल, ट्रैक, ध्वनियाँ | ~$0.08 |
| 🎙 वॉइसओवर | ElevenLabs Turbo / Multilingual (audio/elevenlabs-*) | टेक्स्ट→वाणी, आवाज़ अलग करना | प्रति 1000 अक्षर $0.04 से |
पैरामीटर
पैरामीटर मॉडल के अनुसार अलग-अलग होते हैं — सटीक सूची /media/models में fields फ़ील्ड के तहत है (नाम, प्रकार, विकल्प, डिफ़ॉल्ट)। नाम snake_case शैली में और मान लोअरकेस में होते हैं। सामान्य पैरामीटर:
prompt— विवरण (सभी जनरेटिव मॉडल के लिए)।resolution—1k/2k/4k(चित्र) या480p/720p/768p/1080p/4k(वीडियो)। कीमत रिज़ॉल्यूशन पर निर्भर करती है।aspect_ratio—1:1,16:9,9:16आदि; आकार चुनने वाले मॉडल में1:1-hdभी उपलब्ध है।duration— वीडियो की अवधि सेकंड में (अधिकांश में5/10, Kling 3.0 और Wan 2.7 में15तक, Grok में30तक)। वीडियो का शुल्क प्रति सेकंड लिया जाता है।audio— वीडियो में ऑडियो ट्रैक (true/false)। ऑडियो होने पर कीमत अधिक होती है —/media/estimateका अनुमान इसे ध्यान में रखता है।mode/quality/render_mode— गुणवत्ता स्तर (Kling 3.0 मेंstandard/pro/4k, GPT Image मेंmedium/high, Ideogram मेंfast/balanced/quality)।safety_filter— 18+ फ़िल्टर (डिफ़ॉल्ट रूप से चालू)।enhance_prompt— मॉडल प्रॉम्प्ट में अपने-आप अधिक विवरण जोड़ता है (Qwen, Flux 3)।file_format— फ़ाइल फ़ॉर्मैट (चित्रों मेंpng/jpeg, 3D मेंglb/obj/fbx/stl/usdz)।image— इनपुट चित्र (संपादन, फ़ोटो→वीडियो; सीधा लिंक दें या/media/uploadके ज़रिए अपलोड करें)।video_url/audio_url— इनपुट वीडियो/ऑडियो (video-edit, लिपसिंक, अवतार)।
संगीत: title, style, instrumental, version (v6, v6-wild, v6-mini), advanced (सटीक सेटिंग: अपना शीर्षक, शैली और अवधि duration), exclude_styles, vocal (female/male), continue_from (किस सेकंड से आगे जारी रखना है); ध्वनियों के लिए loop, bpm, tonality; ट्रैक अलग करने के लिए mode (vocals, stems, track) और track (कौन-सा ट्रैक निकालना है)। शैली के सूक्ष्म नियंत्रण: style_weight, weirdness, audio_weight (0…1)।
वॉइसओवर: text, voice (options से आवाज़ का संक्षिप्त नाम, जैसे james, bella, Zephyr), speed; Gemini मॉडल में style, pace, accent, voice_description, scene, temperature। दो आवाज़ों वाला संवाद:
{ "model": "audio/gemini-3.1-flash-tts",
"input": {
"voices": [ { "voice": "Kore", "style": "newscaster" }, { "voice": "Puck", "pace": "fast" } ],
"dialogue": [ { "speaker": 1, "text": "नमस्ते! आज हमारे साथ मेहमान हैं…" }, { "speaker": 2, "text": "बुलाने के लिए धन्यवाद।" } ]
} }किसी विशेष कॉन्फ़िगरेशन की सटीक कीमत चलाने से पहले POST /media/estimate पर उन्हीं model + input के साथ दिखाई जाती है।
पुराने पैरामीटर नाम भी काम करते हैं
19 अक्टूबर 2026 को पैरामीटर के नाम और मान एक समान किए गए (snake_case, लोअरकेस मान)। यदि आपका इंटीग्रेशन दस्तावेज़ के पुराने संस्करण के नाम और मान भेजता है, तो कुछ बदलने की ज़रूरत नहीं है: सर्वर उन्हें भी स्वीकार करता है, और परिणाम तथा कीमत समान रहते हैं। /media/models और इस दस्तावेज़ में केवल नए नाम और मान दिए गए हैं।
🧊 3D मॉडल
टेक्स्ट या फ़ोटो से 3D जनरेशन। आउटपुट में GLB (और अलग-अलग मॉडल के लिए OBJ, FBX, STL, USDZ, USD, 3MF) के साथ एक प्रीव्यू इमेज भी मिलती है: जॉब में कई फ़ाइलें आती हैं, हर फ़ाइल का एक्सटेंशन अलग होता है।
कॉल बाकी मीडिया की तरह ही है: POST /media/generate और स्टेटस के लिए GET /media/job/{id}।
curl -X POST https://nordrouter.com/media/generate -H "Authorization: Bearer $NR_KEY" -H "Content-Type: application/json" -d '{"model":"3d/tripo-text","input":{"prompt":"मैट ग्लेज़ वाली सिरेमिक मग"}}'| id | किससे | ≈ कीमत | विशेषताएँ |
|---|---|---|---|
3d/tripo-text, 3d/tripo-image | टेक्स्ट, फ़ोटो | $0.31 से | सबसे सस्ता, quad-mesh, PBR |
3d/hunyuan-rapid-text, -image | टेक्स्ट, फ़ोटो | $0.43 से | तेज़, फ़ाइल के 5 फ़ॉर्मैट |
3d/seed3d-image | फ़ोटो | $0.50 से | GLB, OBJ, USD, USDZ |
3d/hunyuan-pro-text, -image | टेक्स्ट, फ़ोटो | $0.71 से | 1.5 मिलियन तक पॉलीगॉन |
3d/meshy-text, -image, -multi-image | टेक्स्ट, फ़ोटो, अधिकतम 4 कोण | $0.94 से | 8K तक टेक्सचर, कैरेक्टर पोज़ |
टेक्सचर के रूप में फ़ोटो। 3d/meshy-* मॉडल अलग इमेज (texture_photo) या शब्दों में मटेरियल का विवरण (texture_text) लेते हैं; टेक्सचर ज्यामिति से स्वतंत्र रूप से तय किया जाता है। 3d/meshy-multi-image एक ही वस्तु के अधिकतम चार कोण लेता है, जिससे ज्यामिति अधिक सटीक बनती है।
कीमत जनरेशन के बाद ही पता चलती है
3D की बिलिंग वास्तव में उपयोग किए गए संसाधनों के आधार पर होती है, इसलिए सटीक राशि मॉडल की गणना पूरी होने के बाद पता चलती है। हम अधिकतम संभावित लागत रोकते हैं, और गणना पूरी होने पर वास्तविक राशि काटकर अंतर वापस कर देते हैं। अंतिम राशि हमेशा cost_usd फ़ील्ड में दिखती है।
स्टूडियो में ऐसे मॉडल पर लेबल लगा होता है, और जनरेशन केवल आपकी सहमति के बाद शुरू होती है।
इसमें समय लगता है। 3D जनरेशन में आधे मिनट से लेकर कई मिनट तक लग सकते हैं, जो इमेज या छोटे वीडियो से अधिक है। जॉब को खुला रखना ज़रूरी नहीं: स्टेटस सेव रहता है और वेबहुक उपलब्ध हैं।
लागत और स्टोरेज
- आपके USD बैलेंस से जनरेशन की वास्तविक लागत काटी जाती है; पूरी होने के बाद सटीक राशि
cost_usdमें दिखती है। - असफल जनरेशन पर शुल्क नहीं लगता; रोकी गई राशि अपने आप वापस कर दी जाती है।
- फ़ाइलें हमारे सर्वर पर सीमित समय तक रखी जाती हैं (
/media/modelsमेंretention_daysदेखें); उन्हें सेव करने के लिए डाउनलोड करें।