n8n OpenRouter इमेज जनरेशन: फ़्री मॉडल वर्कफ़्लो और असली लागत
OpenRouter की सूची में किसी भी इमेज मॉडल पर फ़्री टैग नहीं है, लेकिन 16 फ़्री टेक्स्ट मॉडल आपके प्रॉम्प्ट लिख सकते हैं। यह n8n वर्कफ़्लो उन्हें एक कम-लागत वाली इमेज कॉल, base64 डिकोडिंग, स्पेंड गार्ड और PicassoIA के एक फ़्री रूट के साथ जोड़ता है, जो लागत को लगभग शून्य के आसपास रखता है।
मुफ़्त इमेज जनरेशन मॉडल की खोज OpenRouter पर जल्द ही एक रुकावट पर अटक जाती है। 8 अक्टूबर 2026 को हमने OpenRouter की सार्वजनिक मॉडल सूची को इमेज आउटपुट पर फ़िल्टर करके देखा। उसमें 61 मॉडल आए, और उनमें से एक पर भी :free टैग नहीं था। बिना फ़िल्टर वाली सूची में 16 फ़्री मॉडल थे, और उनमें से हर एक सिर्फ़ टेक्स्ट बनाता है। जो लोग n8n वर्कफ़्लो से बिना पैसे के तस्वीरें बनवाना चाहते थे, उनके लिए यह बुरी खबर लगती है, लेकिन यही एक ऐसे डिज़ाइन की ओर इशारा करती है जो काम करता है: एक फ़्री टेक्स्ट मॉडल प्रॉम्प्ट लिखता है, सबसे सस्ता उपयुक्त इमेज मॉडल उन्हें रेंडर करता है, और एक शून्य-लागत वाला रास्ता बाकी सब चीज़ों के लिए तैयार रहता है।
यह लेख इस वर्कफ़्लो को नोड-दर-नोड बनाता है। आपको ट्रिगर, प्रॉम्प्ट लिखने वाला हिस्सा, OpenRouter के इमेज एंडपॉइंट पर HTTP कॉल, base64 डिकोड, स्टोरेज, और एक स्पेंड गार्ड मिलेगा जो एक बेकाबू लूप को आपका बैलेंस खत्म करने से पहले रोक देता है। इस दौरान आप देखेंगे कि हर हिस्से की लागत कितनी है, कौन-सी सेटिंग्स लोगों को उलझाती हैं, और जब आपको फ़्री इमेज स्टेप चाहिए तो वही काम PicassoIA के ज़रिए कैसे चलाया जाए।
OpenRouter पर "फ़्री" का असली मतलब
मॉडल मार्केटप्लेस पर "फ़्री" शब्द को मनमाने ढंग से फैलाया जाता है, इसलिए कुछ भी वायर करने से पहले इसे साफ़ कर लें।
फ़्री टेक्स्ट मॉडल आपके प्रॉम्प्ट लिखते हैं
OpenRouter ज़ीरो-कॉस्ट मॉडल के स्लग पर :free सफ़िक्स लगाकर उन्हें चिह्नित करता है। जिस दिन हमने जाँच की, उस दिन 16 मॉडल पर यह सफ़िक्स था, जिनमें nvidia/nemotron-3-super-120b-a12b:free, google/gemma-4-31b-it:free, poolside/laguna-s-2.1:free और thinkingmachines/inkling:free शामिल हैं, जो इनपुट के रूप में इमेज और ऑडियो भी स्वीकार करता है। ये सभी टेक्स्ट लौटाते हैं। इमेज वर्कफ़्लो के पहले हिस्से को ठीक यही चाहिए, क्योंकि एक प्रॉम्प्ट कुछ सौ टोकन का होता है।
फ़्री मॉडल बदलते रहते हैं, और उन पर प्रति मिनट और प्रति दिन के अनुरोध की सीमाएँ होती हैं जो खाते में क्रेडिट खरीदने के बाद ढीली हो जाती हैं। इस लेख का हर स्लग एक उदाहरण मानें और किसी एक को हार्ड-कोड करने से पहले लाइव सूची देख लें।
💡 टिप: नोड बनाने से पहले अपना प्रॉम्प्ट लिखने वाला निर्देश टेस्ट करें। उसे PicassoIA पर Gemini 3.5 Flash या Llama 4 Scout Instruct में चिपकाएँ और जो आए उसे पढ़ें।
इमेज मॉडल हर इमेज पर बिल होते हैं
तस्वीरें एक समर्पित एंडपॉइंट https://openrouter.ai/api/v1/images से गुज़रती हैं, जो टेक्स्ट कॉल जैसा ही Bearer टोकन इस्तेमाल करता है। बिलिंग मॉडल पर निर्भर करती है: कुछ प्रति इमेज लेते हैं, कुछ प्रति मेगापिक्सल या प्रति टोकन। OpenRouter के अपने इमेज ट्यूटोरियल के अनुसार यह दायरा एक सेंट से काफ़ी कम से लेकर प्रति इमेज दस सेंट से ज़्यादा तक है। हर रिस्पॉन्स में असली चार्ज वाला एक usage.cost फ़ील्ड होता है, और आपके वर्कफ़्लो को वही नंबर लॉग करना चाहिए।
⚠️ सावधान रहें: टोकन प्राइस फ़ील्ड में 0 होने से कोई मॉडल फ़्री नहीं हो जाता। सार्वजनिक सूची के ज़्यादातर सिर्फ़-इमेज मॉडल प्रॉम्प्ट और कम्पलीशन, दोनों प्राइस के लिए 0 दिखाते हैं, और OpenRouter का इमेज ट्यूटोरियल कहता है कि इनमें से किसी पर भी फ़्री टैग नहीं है। मॉडल पेज पर प्राइसिंग पढ़ें और usage.cost पर भरोसा करें।
सात स्टेप, और हर एक एक n8n नोड या दो छोटे नोड के जोड़े से मेल खाता है:
ट्रिगर: टेस्ट के दौरान मैनुअल, फिर एक शेड्यूल, वेबहुक या नई स्प्रेडशीट पंक्ति।
इनपुट: Edit Fields नोड में सेट किए गए टॉपिक, स्टाइल और आस्पेक्ट रेशियो।
प्रॉम्प्ट राइटर: एक :free मॉडल चलाने वाली LLM चेन।
इमेज कॉल:/api/v1/images पर POST करने वाला HTTP Request नोड।
डिकोड:b64_json को उसके अपने फ़ील्ड में कॉपी करें, फिर उसे फ़ाइल में बदलें।
स्टोर: Google Drive, S3-संगत बकेट या लोकल डिस्क।
गार्ड:usage.cost लॉग करें, विफलता पर फिर से कोशिश करें और कुछ गड़बड़ लगने पर अलर्ट करें।
n8n अपनी AI चेन के लिए एक OpenRouter Chat Model नोड देता है, इसलिए स्टेप 3 में किसी कस्टम HTTP की ज़रूरत नहीं है। सिर्फ़ इमेज कॉल को इसकी ज़रूरत है, क्योंकि चेन नोड टेक्स्ट के लिए बने हैं।
नोड-दर-नोड बनाएँ
एक Manual Trigger से शुरू करें ताकि आप एक बार में एक आइटम चला सकें। उसके बाद एक Edit Fields नोड लगाएँ जो तीन वैल्यू सेट करे: topic (जैसे "धूप वाली खिड़की पर सिरेमिक मग"), style ("प्राकृतिक रोशनी, 50mm, फ़िल्म ग्रेन") और aspectRatio ("16:9")। चेन काम करने लगे तो ट्रिगर को Schedule Trigger या Google Sheets पंक्ति से बदल दें।
फ़्री मॉडल पर प्रॉम्प्ट राइटर
एक Basic LLM Chain जोड़ें और उसमें OpenRouter Chat Model सब-नोड अटैच करें। अपने टोकन के साथ OpenRouter क्रेडेंशियल बनाएँ, फिर :free स्लग में से कोई एक चुनें। सिस्टम मैसेज ऐसा रखें:
You write one image prompt per request. Describe subject, setting,
light, lens and mood in 60 to 90 words. Put no text in the image.
Return only the prompt.
एक अच्छा परिणाम कुछ ऐसा दिखता है: "धूप वाली खिड़की पर काली कॉफ़ी का सिरेमिक मग, भाप एक लिनेन पर्दे की ओर मुड़ती हुई, बाईं ओर से नरम सुबह की रोशनी, 50mm लेंस f/2 पर, शैलो डेप्थ ऑफ़ फ़ील्ड, छोटे-छोटे धब्बों वाला मैट ग्लेज़, शांत और सुकून भरा मूड।" यह छोटा, ठोस है और उस फ़िलर से मुक्त है जिसे इमेज मॉडल अनदेखा कर देते हैं।
{{ $json.topic }} और {{ $json.style }} को यूज़र मैसेज के रूप में पास करें और टेम्परेचर लगभग 0.7 पर रखें। चेन प्रॉम्प्ट को text फ़ील्ड में लौटाती है। आउटपुट टैब जाँचें और अगर आपके n8n वर्ज़न में अलग है तो नाम बदल लें।
इमेज एंडपॉइंट पर HTTP Request
इन सेटिंग्स के साथ एक HTTP Request नोड जोड़ें:
Method: POST
URL:https://openrouter.ai/api/v1/images
Authentication: Generic Credential Type, Header Auth, नाम Authorization, वैल्यू Bearer और उसके बाद आपका टोकन
Send Body: चालू, JSON, "Using JSON"
बॉडी को हाथ से लिखे JSON की जगह एक expression से बनाएँ, क्योंकि प्रॉम्प्ट में ऐसे quotes होते हैं जो सादा टेम्पलेट तोड़ देते हैं:
फ़िल्टर की गई सूची के किसी भी मॉडल के लिए स्लग बदल दें। पैरामीटर सपोर्ट प्रोवाइडर के हिसाब से अलग होता है, इसलिए अगर कोई मॉडल कोई विकल्प अस्वीकार करे तो उसे हटा दें। यह एंडपॉइंट resolution, quality, n को भी स्वीकार करता है, जिससे कई इमेज एक साथ बन सकें, और input_references को भी, जिससे किसी स्रोत तस्वीर से एडिट किया जा सके।
रिस्पॉन्स का आकार यह है (यहाँ वैल्यू प्लेसहोल्डर हैं):
Node settings खोलें और Retry On Fail चालू करें, दो या तीन प्रयास और कुछ सेकंड का इंतज़ार रखें। अस्थायी प्रोवाइडर एरर आम हैं, और जब विफल कॉल बिल नहीं हुई हो तो दोबारा कोशिश करने में कोई खर्च नहीं आता।
फ़ाइल डिकोड और स्टोर करें
एक दूसरा Edit Fields नोड जोड़ें जिसमें दो असाइनमेंट हों: image_base64 को {{ $json.data[0].b64_json }} पर सेट करें और cost को {{ $json.usage.cost }} पर। फिर Convert to File जोड़ें, "Move Base64 String to File" चुनें और इनपुट फ़ील्ड नाम के रूप में image_base64 लिखें। यह फ़ील्ड का नाम है, एन्कोड की गई स्ट्रिंग नहीं, और इस नोड के साथ यही सबसे आम गलती है।
फ़ाइल का नाम {{ $now.toFormat('yyyyMMdd-HHmmss') }}.webp रखें और एक्सटेंशन को उस output_format के अनुरूप रखें जो आपने माँगा था। बेमेल होने पर ऐसी फ़ाइलें बनती हैं जो खुलती नहीं।
अंत में एक Google Drive नोड, किसी S3-संगत बकेट की ओर इशारा करता S3 नोड, या अगर n8n आपकी अपनी मशीन पर चल रहा है तो Read/Write Files from Disk लगाएँ।
खर्च पर नियंत्रण रखें
गलती से लूप करने वाला वर्कफ़्लो "लगभग मुफ़्त" को एक सरप्राइज़ बिल में बदलने का सबसे तेज़ तरीका है।
खर्च की सीमा तय करें और लॉग करें
उस OpenRouter टोकन पर क्रेडिट लिमिट सेट करें जो आप n8n को देते हैं, ताकि सबसे बुरी स्थिति एक ऐसा नंबर हो जो आपने पहले से चुना है। फिर हर रन पर Google Sheets पंक्ति में cost और एक टाइमस्टैम्प जोड़ें। एक IF नोड जो cost की तुलना किसी थ्रेशोल्ड से करे और ईमेल या चैट अलर्ट से जुड़ा हो, वह उस मॉडल को पकड़ लेता है जिसकी लागत अचानक पिछले हफ़्ते से ज़्यादा हो गई है।
फ़्री कॉल धीमी करें
फ़्री मॉडल ज़ोर डालने पर रेट लिमिट एरर देते हैं। प्रॉम्प्ट राइटर के सामने batch size 1 वाला Loop Over Items नोड लगाएँ, लूप के अंदर कुछ सेकंड का Wait नोड जोड़ें, और Retry On Fail चालू रखें। पचास टॉपिक का बैच तब आइटम बारह पर फेल होने के बजाय धीरे-धीरे निकलता है। इमेज कॉल के साथ भी यही करें, क्योंकि वहाँ भी प्रोवाइडर बर्स्ट को थ्रॉटल कर सकते हैं।
ऐसा इमेज मॉडल चुनें जो फ़िट बैठे
कई OpenRouter इमेज स्लग उन परिवारों से हैं जिन्हें आप PicassoIA पर हाथ से आज़मा सकते हैं, और चुनने से पहले लुक परखने का यह एक तेज़ तरीका है।
हीरो इमेज और पढ़ने लायक बारीक डिटेल वाली किसी भी चीज़ के लिए GPT Image 2 जैसा पेड टॉप मॉडल चुनें और हर टॉपिक के लिए एक तस्वीर बनाएँ। ज़्यादा वॉल्यूम के लिए, जैसे थंबनेल और सोशल वैरिएंट, एक छोटा, सस्ता स्लग चुनें और भारी काम फ़्री प्रॉम्प्ट राइटर को करने दें।
चुनने से पहले दो उम्मीदवार स्लग पर दस विशिष्ट टॉपिक चलाएँ और अपनी शीट में cost कॉलम का जोड़ निकालें। सस्ता मॉडल अक्सर थंबनेल पर जीत जाता है और टेक्स्ट रेंडरिंग, हाथों और बारीक प्रोडक्ट डिटेल में हार जाता है, और दस-टॉपिक टेस्ट यह कुछ ही मिनटों में दिखा देता है। जीतने वाला स्लग एक ही जगह रखें, जैसे वर्कफ़्लो की शुरुआत वाले Edit Fields नोड में, ताकि मॉडल बदलना एक-लाइन का बदलाव हो।
प्रकाशित करने से पहले समीक्षा करें
ऑटोमेशन को आँख मूँदकर प्रकाशित नहीं करना चाहिए। परिणाम एक फ़ोल्डर में सेव करें, थंबनेल ग्रिड किसी चैट चैनल पर भेजें और किसी भी इमेज के साइट तक पहुँचने से पहले थम्स अप का इंतज़ार करें। दो मिनट की मानवीय समीक्षा, प्रोडक्ट फ़ोटो में टूटे हुए हाथ से बेहतर है।
PicassoIA के ज़रिए एक फ़्री रूट
PicassoIA एक Replicate-शैली फ़्लो वाला API प्रकाशित करता है। उसके API पेज पर चार मॉडल सूचीबद्ध हैं: टेक्स्ट-टू-इमेज के लिए picassoia/picassoia-image, तस्वीरों को एडिट और मिलाने के लिए picassoia/picassoia-image-editor-pro, picassoia/picassoia-video, और सिंक्रनाइज़्ड ऑडियो वाले वीडियो के लिए picassoia/seedance-2.5-lite। वही पेज कहता है कि "API predictions are currently free" हैं और इनमें क्रेडिट नहीं लगते, और predictions बनाने के लिए Infinite प्लान चाहिए। इन शर्तों पर भरोसा करने से पहले PicassoIA API पेज पर पुष्टि कर लें, क्योंकि प्लान बदलते रहते हैं। एक साथ चल सकने वाली predictions प्रति खाता 5 तक सीमित हैं।
जो स्टाइल शब्द काम आए उन्हें रखें और अपने Edit Fields नोड के style फ़ील्ड में डालें।
बनाएँ, इंतज़ार करें, पोल करें, डाउनलोड करें
PicassoIA के जॉब एसिंक्रोनस होते हैं, इसलिए n8n लेआउट में एक नोड की जगह चार नोड होते हैं:
HTTP Request (create): Bearer हेडर और बॉडी { "input": { "prompt": "...", "aspect_ratio": "16:9", "num_outputs": 1, "output_format": "webp" } } के साथ https://api.picassoia.com/v1/models/picassoia/picassoia-image/predictions पर POST करें। इसे ऊपर की तरह JSON.stringify से बनाएँ।
Wait: पाँच से दस सेकंड।
HTTP Request (poll):https://api.picassoia.com/v1/predictions/{{ $json.id }} पर GET करें।
IF: जब statussucceeded के बराबर हो, तो आगे बढ़ें। जब वह starting या processing हो, तो Wait नोड पर वापस लूप करें। जब वह failed या canceled हो, तो अपने अलर्ट पर भेजें।
सफलता पर output फ़ील्ड में एक URL होता है, या URLs की एक सूची। एक और HTTP Request नोड जोड़ें जिसका रिस्पॉन्स फ़ॉर्मेट File पर सेट हो और उसे डाउनलोड करें, फिर पहले की तरह वही स्टोरेज नोड इस्तेमाल करें।
💡 टिप: तस्वीर बनाने के बजाय उसे एडिट करना है? PicassoIA Image Editor Pro तस्वीरों को एडिट और मिलाने का काम करता है, और बैकग्राउंड बदलने व प्रोडक्ट रीटच के लिए यही मॉडल चुनें।
आपके वर्कफ़्लो द्वारा सेव की गई स्टिल्स एक वीडियो स्टेप को भी फ़ीड कर सकती हैं। Wan 2.7 I2V, LTX 2.3 Fast और Seedance 2.0 जैसे इमेज-टू-वीडियो मॉडल एक तस्वीर को छोटी क्लिप में बदलते हैं, और PicassoIA Video उसी विचार के लिए API रूट है। इसे स्टोरेज नोड के बाद एक दूसरी ब्रांच के रूप में जोड़ें, ताकि एक टॉपिक से इमेज और क्लिप दोनों बनें।
चलता रहे
आम विफलताओं के समाधान
लक्षण
संभावित कारण
समाधान
HTTP 402
खाते में क्रेडिट खत्म हो गए
क्रेडिट जोड़ें, या विफल होने वाले स्टेप को किसी फ़्री रूट पर ले जाएँ
HTTP 429
फ़्री मॉडल की रेट लिमिट
Loop Over Items, एक Wait नोड और Retry On Fail
Invalid JSON body
प्रॉम्प्ट के quotes ने हाथ से लिखे टेम्पलेट को तोड़ा
बॉडी JSON.stringify से बनाएँ
फ़ाइल नहीं खुलती
इनपुट फ़ील्ड का नाम गलत है, या एक्सटेंशन media_type से अलग है
फ़ील्ड नाम image_base64 रखें और एक्सटेंशन को output_format से मिलाएँ
Slug not found
कोई मॉडल नाम बदल गया या बंद हो गया
मॉडल सूची दोबारा लाएँ और स्लग अपडेट करें
Garbled base64
Chat completions रूट ने data URL लौटाया
Edit Fields में data:image/...;base64, प्रीफ़िक्स हटाएँ
chat completions रूट, जो modalities array इस्तेमाल करता है, उन मॉडलों से इमेज पाने का पुराना तरीका है जो टेक्स्ट और तस्वीरें दोनों लौटाते हैं। यह उन मॉडलों के लिए अब भी काम करता है, लेकिन समर्पित इमेज एंडपॉइंट ज़्यादा साफ़ रिस्पॉन्स देता है, और इसी लेख में हर जगह उसी का उपयोग हुआ है।
फ़्री इमेज मॉडल पर नज़र रखें
फ़्री इमेज मॉडल किसी दिन आ सकते हैं, और आप उसकी खबर उसी सुबह सुनना चाहेंगे। एक दूसरा छोटा वर्कफ़्लो बनाएँ:
एक Schedule Trigger जो हर हफ़्ते एक बार चले।
https://openrouter.ai/api/v1/models?output_modalities=image पर एक HTTP Request, जिसे कोई टोकन नहीं चाहिए।
एक Code नोड जो :free पर खत्म होने वाले ids लौटाए।
एक IF नोड जो तभी संदेश भेजे जब वह सूची खाली न हो।
यह पाँच मिनट का काम है, और इसका मतलब है कि इस लेख का मुख्य निष्कर्ष अपने आप दोबारा जाँचा जाता है, पुराना होने के बजाय।
आज PicassoIA पर आज़माएँ
अब आपके वर्कफ़्लो के पास प्रॉम्प्ट के लिए एक फ़्री दिमाग है, एक पेड इमेज स्टेप जिसकी कीमत आप पाई-पाई तक तय कर सकते हैं, और तंग बजट के लिए एक शून्य-लागत ब्रांच। वह लुक जल्दी पाने का सबसे तेज़ तरीका है कि पहले कुछ प्रॉम्प्ट हाथ से चलाएँ। PicassoIA Image खोलें, वह प्रॉम्प्ट चिपकाएँ जो आपकी n8n चेन ने लिखा है, और उसकी तुलना Flux 2 Pro और Nano Banana Pro से करें। जब उनमें से कोई एक वैसी तस्वीर दे जैसी आपके मन में थी, तो उसकी सेटिंग्स वर्कफ़्लो में कॉपी करें और उसे चलने दें।