चित्र निर्माण (OpenAI Images API)
OpenAI Images API प्रारूप में समकालिक चित्र निर्माण: पैरामीटर, अधिकतम 300 सेकंड की प्रतीक्षा, केवल पूरे हुए चित्र के लिए बिलिंग, Cherry Studio सेटअप। संपादन असमकालिक /api/media/generate के माध्यम से होता है।
POST /v1/images/generations OpenAI Images API प्रारूप में चित्र बनाता है: आप अनुरोध भेजते हैं और उसी उत्तर में चित्र वापस प्राप्त करते हैं। यह POST /api/media/generate वाली उसी कतार पर बना अडैप्टर है: मॉडल, कीमत, शेष राशि की जाँच, आपूर्तिकर्ता फेलओवर और शुल्क साझा होते हैं, इसलिए दोनों पतों पर एक ही निर्माण की लागत समान होती है।
curl https://getvibeapi.com/v1/images/generations \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"nano-banana","prompt":"a red bicycle on a bridge","n":1,"size":"1024x1024"}'उत्तर (HTTP 200):
{
"created": 1792706400,
"data": [{ "url": "https://getvibeapi.com/media/r/…/0.png" }]
}कुंजी को Authorization: Bearer sk-pv-… या x-api-key के रूप में भेजें। आधिकारिक OpenAI SDK बिना किसी बदलाव के काम करता है:
from openai import OpenAI
client = OpenAI(base_url="https://getvibeapi.com/v1", api_key="sk-pv-...", timeout=600)
image = client.images.generate(model="nano-banana", prompt="a red bicycle on a bridge", size="1024x1024")
print(image.data[0].url)बॉडी पैरामीटर
| Parameter | Type | विवरण |
|---|---|---|
modelreq. | string | /api/media-catalog से प्राप्त चित्र मॉडल आईडी (kind: "image"), जैसे nano-banana, gpt-image-2, flux-2। विक्रेता-पूर्वसर्ग वाली आईडी (google/nano-banana) और पिन किया गया वैरिएंट (gpt-image-2:network) भी स्वीकार किए जाते हैं। वीडियो और ऑडियो मॉडल यहाँ 400 के साथ अस्वीकार किए जाते हैं। |
promptreq. | string | चित्र का विवरण। |
n | number | केवल 1: प्रत्येक निर्माण अपनी अलग कीमत वाला अलग कार्य होता है। कई चित्रों के लिए कई अनुरोध भेजें। |
size | string | पहलू अनुपात के रूप में मान्य: 1024x1024 → 1:1, 1792x1024 → 16:9, 1024x1792 → 9:16, 1536x1024 → 3:2, 1024x1536 → 2:3; अन्य मानों को ठीक उसी अनुपात में घटाया जाता है (1920x1080 → 16:9)। मॉडल द्वारा उपलब्ध न कराया गया अनुपात समर्थित आकारों की सूची के साथ अस्वीकार कर दिया जाता है — निकटतम मिलान का कोई प्रतिस्थापन नहीं होता। "auto" या फ़ील्ड का न होना मॉडल का डिफ़ॉल्ट दर्शाता है। |
quality | string | केवल उन मॉडलों के लिए जिनके कैटलॉग में quality पैरामीटर है; असमर्थित मान अस्वीकार कर दिया जाता है। "auto" इसे छोड़ देता है। |
response_format | "url" | "b64_json" | डिफ़ॉल्ट रूप से url। b64_json प्रतिक्रिया के मुख्य भाग में फ़ाइल लौटाता है (20 MB तक)। |
user | string | स्वीकार किया गया और अनदेखा किया गया। |
अज्ञात फ़ील्ड और background, style, output_format, output_compression, moderation, stream तथा partial_images को नाम के आधार पर 400 के साथ अस्वीकार किया जाता है, चुपचाप हटाया नहीं जाता—वरना आप ऐसी छवि के लिए भुगतान करेंगे, जिसे आपने मांगा ही नहीं था। जिन मॉडलों को स्रोत छवि की आवश्यकता होती है (संपादन, अपस्केलिंग, इनपेंटिंग), वे इस पते पर काम नहीं करते, क्योंकि यहां छवि भेजने का कोई तरीका नहीं है; POST /api/media/generate का उपयोग करें।
प्रतीक्षा और समय-समाप्ति
कार्य पूरा होने तक अनुरोध खुला रखा जाता है, अधिकतम 300 सेकंड तक। मॉडल के आधार पर सामान्य समय 15 से 85 सेकंड है; सबसे धीमे मॉडलों पर अलग-अलग निर्माण में 3–4 मिनट लगते हैं। अपने क्लाइंट का समय-समाप्ति मान कम से कम 300 सेकंड पर सेट करें (OpenAI SDK का डिफ़ॉल्ट 600 है)।
- हर उत्तर, जिसमें कार्य बनाए जाने के बाद की त्रुटियाँ भी शामिल हैं, कार्य आईडी वाली
x-pv-media-job-idहेडर रखता है। - यदि कार्य 300 सेकंड के भीतर पूरा नहीं हुआ, तो उत्तर
504होता है, जिसमेंcause: image_generation_timeoutऔर संदेश में कार्य आईडी होती है। निर्माण चलता रहता है: इसेGET /api/media/jobs/{id}से प्राप्त करें। - यदि कनेक्शन टूट जाता है (ऐप का समय-समाप्ति, नेटवर्क), तो कार्य फिर भी पूरा किया जाता है।
GET /v1/images/generations?limit=20(अधिकतम 100) इस कुंजी के हाल के चित्रों को उनकी स्थिति, लिंक और लिए गए शुल्कcost_rubके साथ सूचीबद्ध करता है।
बिलिंग
सबमिशन पर कोई शुल्क नहीं लिया जाता। केवल सफलतापूर्वक पूरा हुए निर्माण पर शुल्क लिया जाता है, जिसकी कीमत /api/media-catalog और POST /api/media/price उद्धरण में समान होती है। असफल निर्माण 502 लौटाता है, जिसमें "कोई शुल्क नहीं लिया गया" लिखा होता है, और इसकी कोई लागत नहीं होती। लिया गया शुल्क x-pv-cost-rub हेडर में लौटाया जाता है। यदि शेष राशि निर्माण को पूरा करने के लिए पर्याप्त नहीं है, तो कोई कार्य शुरू होने से पहले ही 402 उत्तर दिया जाता है।
data[].url में दिए गए लिंक हमारे डोमेन पर जाते हैं और निर्माण पूरा होने के बाद 7 दिनों तक सक्रिय रहते हैं, फिर 410 media_result_expired का उत्तर देते हैं। फ़ाइलों को अपनी ओर सुरक्षित रखें।त्रुटियाँ
| Parameter | Type | विवरण |
|---|---|---|
400 | invalid_request_error | Invalid body: unknown_parameter, unsupported_parameter, unsupported_n, unsupported_size, unsupported_quality, unsupported_model_kind. Fix the request. |
401 / 403 | authentication_error / permission_error | अमान्य कुंजी, या कॉल करने वाला IP कुंजी की अनुमति सूची में नहीं है। |
402 | insufficient_quota | इस निर्माण के लिए पर्याप्त शेष राशि नहीं है। कोई कार्य नहीं बनाया गया। |
404 | not_found_error | model_not_found — ऐसा कोई छवि मॉडल नहीं है। /api/media-catalog देखें। |
429 | rate_limit_error | मीडिया दर सीमा; Retry-After के बाद पुनः प्रयास करें। |
502 | upstream_error | निर्माण विफल हुआ। कोई शुल्क नहीं लिया गया; आप पुनः प्रयास कर सकते हैं। |
503 | upstream_error | इस समय किसी भी आपूर्तिकर्ता के यहाँ मॉडल उपलब्ध नहीं है। कोई कार्य नहीं बनाया गया; बाद में पुनः प्रयास करें या कोई दूसरा मॉडल चुनें। |
504 | upstream_error | model_not_found — कार्य अभी चल रहा है; x-pv-media-job-id से प्राप्त id द्वारा इसे प्राप्त करें। |
डेस्कटॉप ऐप (Cherry Studio और अन्य)
ऐसा कोई भी ऐप काम करता है जो OpenAI-संगत प्रदाता के माध्यम से चित्र बना सके। उदाहरण के रूप में Cherry Studio का उपयोग करें:
- OpenAI प्रकार का एक प्रदाता जोड़ें, जिसका API पता
https://getvibeapi.comहो (ऐप स्वयं/v1जोड़ता है) और अपनीsk-pv-…कुंजी दें। https://getvibeapi.com/api/media-catalogसे किसी आईडी का उपयोग करके मॉडल को हाथ से जोड़ें, केवलkind: "image"वाली प्रविष्टियाँ लें; उदाहरण के लिएnano-bananaयाgpt-image-2। ऐप की मॉडल सूची में टेक्स्ट मॉडल दिखते हैं; मीडिया मॉडल इसमें नहीं होते।- ऐप के चित्रकारी / चित्र निर्माण फ़ीचर से निर्माण करें, सामान्य चैट से नहीं। चैट अनुरोध को
/v1/chat/completionsपर भेजती है, जहाँ चित्र मॉडल काम नहीं करते। - यदि ऐप आपको अनुरोध का समय-समाप्ति मान सेट करने देता है, तो उसे कम से कम 300 सेकंड पर सेट करें। जिस चित्र के लिए ऐप ने प्रयास छोड़ दिया है, वह
GET /v1/images/generationsपर सूचीबद्ध होता है। ऐप से पुनः प्रयास करने पर नया निर्माण होता है, जिसका शुल्क अलग से लिया जाता है।
ऐसे ऐप्स में अपलोड की गई तस्वीर को संपादित करने वाले मोड को /v1/images/edits कहा जाता है, जिसे भी उपलब्ध कराया जाता है (नीचे देखें)।
Editing: /v1/images/edits
POST /v1/images/edits OpenAI SDK अनुरोध (multipart/form-data: image में फ़ाइल, या image[] में कई फ़ाइलें, जिनमें prompt, model, size, quality और response_format शामिल हैं) या images: [{"image_url": "…"}] वाला JSON लेता है। यह ऊपर दिए गए जेनरेशन की तरह काम करता है: source image के साथ POST /api/media/generate के समान प्रतिक्रिया, समान प्रतीक्षा, समान x-pv-media-job-id और समान कीमत; असफल संपादन के लिए शुल्क नहीं लिया जाता। मॉडल का संपादन मोड कैटलॉग से चुना जाता है। mask को 400 unsupported_parameter के साथ अस्वीकार किया जाता है, और ऐसा मॉडल जो कोई source image नहीं लेता, model_cannot_edit के साथ। masked edit के लिए POST /api/media/generate का उपयोग करें और GET /api/media/jobs/{id} को पोल करें — async generation guide देखें। Video को समकालिक रूप से जनरेट नहीं किया जाता: /v1/video/generations और /v1/videos भी 410 के साथ उत्तर देते हैं (विवरण)।
Nano Banana Pro id
catalog और नए code में nano-banana-pro उपयोग करें। मौजूदा async clients को migrate करने के लिए, value gemini-3-pro-image अभी भी केवल /api/media/generate request के model field में स्वीकार की जाती है और उसी public model पर resolve होती है। यह discovery या pricing में publish नहीं की जाती।