الصور
إنشاء صورة
ينشئ صورة بناءً على prompt
نظرة عامة
للوكلاء البرمجيين، اكتشف أولًا القائمة القصيرة الموصى بها للصور باستخدام GET /v1/models?recommended_for=image، ثم أرسل model المختار صراحةً إلى هذه النقطة النهائية.
gpt-image-2 هو نموذج GPT Image تُحسب تكلفته حسب الـ tokens. تتبع TokenLab تفاصيل usage الرسمية من OpenAI لتسوية tokens إدخال النص، وإدخال الصور، والإدخال المخزن مؤقتًا عند الإبلاغ عنه، وtokens إخراج الصور؛ ولا يتم التعامل معه كنموذج بسعر ثابت لكل صورة.
بالنسبة إلى إنشاء الصور باستخدام gpt-image-2، تدعم الواجهة العامة المعلمات prompt وn وsize وquality وresponse_format وasync وbackground وoutput_format وoutput_compression أو compression وmoderation وuser. يقبل background القيمتين auto وopaque، ولا يدعم transparent. إذا لم ترسل size أو quality تستخدم TokenLab القيمة auto؛ ويجب أن تستخدم قيم size المخصصة عقد WIDTHxHEIGHT المرن الموضح أدناه.
input_fidelity ليس جزءا من الحقول المدعومة الحالي في TokenLab لـ gpt-image-2؛ احذفه وإلا سيعيد الطلب 400 unsupported_parameter.
ملاحظات سلوك النموذج
لا تشترك نماذج صور Google Gemini في مجموعة واحدة من خيارات المعلمات:
- تدعم
gemini-3.1-flash-imageوgemini-3-pro-imageوnano-banana-proكلًا منaspect_ratioوresolution(1kو2kو4k) في عمليات text-to-image وimage-edit/image-to-image العامة. - يدعم
nano-banana-2كلًا منaspect_ratioوresolution(1kو2kو4k) في عمليات text-to-image وimage-to-image. - تدعم
gemini-2.5-flash-imageوnano-bananaوnano-banana-editالحقلaspect_ratioلكنها لا تعرض اختيارresolutionعامًا. - لطلبات Nano Banana مع صورة مرجعية، استخدم
nano-banana-editأوnano-banana-proعلى هذه الواجهة (/v1/images/generations) معoperation: "image-to-image"وimage_urls. لا ترسل طلبات Nano Banana المرجعية إلى/v1/images/edits. - يمكن إرسال الصور المرجعية في هذه الواجهة عبر JSON
image_url/image_urlsأو كملف multipart باسمimage. لا تقبل/v1/images/generationsالحقولimages[]أوfile_id؛ تُستخدم مراجع/v1/filesفقط مع نماذج/v1/images/editsالتي توثقimages[].file_idصراحةً.
لأسَر صور Google، فضّل aspect_ratio وأرسل resolution فقط عندما يذكرها النموذج صراحةً.
نماذج صور xAI Grok Imagine (grok-imagine-image وgrok-imagine-image-quality وgrok-imagine-image-pro القديم) تدعم aspect_ratio مع resolution (1k و2k). يبقى grok-imagine-image-pro كمعرّف توافق لـ grok-imagine-image-quality.
جسم الطلب
مهلة الطلبات المتزامنة: قد تعيد بعض طلبات الصور الصورة النهائية inline وتنتظر اكتمال التوليد. قد تستغرق طلبات الدقة العالية أو الجودة العالية ما يقارب دقيقة أو أكثر، لذا اضبط مهلة عميل HTTP على 120s على الأقل. إذا احتوت استجابة الإنشاء على status: "pending" أو task_id أو poll_url، فاتبع poll_url المُعاد بدلًا من الانتظار.
النموذج المطلوب استخدامه، مثل gpt-image-2 أو flux-pro أو nano-banana-pro. استخدم GET /v1/models?recommended_for=image للحصول على قائمة التوصيات الحالية.
وصف نصي للصورة المطلوبة.
رابط HTTPS عام لصورة مرجعية في توليد image-to-image. في طلبات Nano Banana المرجعية، اجعل operation تساوي image-to-image؛ يمكن لـ nano-banana-pro تضمين resolution، بينما يجب على nano-banana-edit حذفها.
روابط HTTPS عامة لصور مرجعية. استخدمها لصورة مرجعية واحدة أو أكثر في طلبات JSON. لا تدعم هذه الواجهة file_id أو images[].
روابط صور مرجعية إضافية خاصة بالنموذج للمزوّدين الذين يميزون بين صورة الإدخال الأساسية والصور المرجعية.
ملف صورة مرجعية multipart لتوليد image-to-image. استخدمه عندما تكون الصورة المصدر خاصة أو تتطلب ترويسات. هذا يختلف عن file_id من /v1/files؛ هذه الواجهة لا تقبل file_id.
1عدد الصور المطلوب إنشاؤها (1-10، بحسب النموذج).
حجم الصورة. استخدمه لعائلات الصور بأسلوب OpenAI والنماذج الأخرى التي تقبل أحجام بكسل دقيقة.
بالنسبة إلى gpt-image-2، تقبل size القيمة auto أو WIDTHxHEIGHT. يجب أن يكون كل من البعدين من مضاعفات 16، وألا يتجاوز أطول ضلع 3840px، وألا تتجاوز نسبة الضلع الطويل إلى القصير 3:1، وأن يكون إجمالي عدد البكسلات بين 655,360 و8,294,400. لا تُعد aspect_ratio وresolution جزءًا من الحقول المدعومة الحالي في TokenLab لـ gpt-image-2.
بالنسبة إلى عائلات صور Google Gemini، يتم التعامل مع size كاسم بديل للتوافق يطابق عقد aspect_ratio العام للنموذج، وresolution عند دعمه. لهذه النماذج، يُفضّل إرسال aspect_ratio مباشرةً.
محدد نسبة الأبعاد بحسب النموذج.
القيم الشائعة في عائلات صور Google تشمل 1:1 و 16:9 و 9:16 و 3:2 و 2:3.
تعتمد دقة الإخراج على النموذج. تدعم gemini-3.1-flash-image وgemini-3-pro-image وnano-banana-2 وnano-banana-pro القيم 1k و2k و4k؛ وتدعم نماذج صور Grok Imagine القيمتين 1k و2k. لا ترسل هذا الحقل إلا إذا كان النموذج والعملية يدعمانه صراحةً.
جودة الصورة. تستخدم نماذج GPT Image مثل gpt-image-2 القيم auto أو low أو medium أو high. قد تستخدم عائلات صور أخرى قيمًا خاصة بالمزوّد؛ راجع metadata النموذج المحدد قبل إرسال قيم غير افتراضية.
urlتنسيق الاستجابة: url أو b64_json. القيمة الافتراضية هي url.
يعيد url روابط الصور في data[].url، ويعيد b64_json بيانات الصور بترميز Base64 في data[].b64_json.
falseاضبطه على true مع gpt-image-2 أو نماذج الصور الرسمية FLUX/BFL لإنشاء مهمة أولاً. تعيد مهام الصور غير المتزامنة المكتملة روابط URL بغض النظر عن response_format المطلوب؛ استخدم الطلبات المتزامنة إذا كنت تحتاج إلى b64_json.
محدد نمط اختياري. أرسله فقط عندما يوثّقه النموذج المحدد صراحة؛ احذفه مع gpt-image-2 ما لم تذكر metadata النموذج خلاف ذلك.
معرّف فريد للمستخدم النهائي.
الاستجابة
الاستجابة المضمنة
الطابع الزمني Unix لوقت الإنشاء.
مصفوفة من الصور المُنشأة.
يحتوي كل كائن على:
url(string): عنوان URL للصورة المُنشأةb64_json(string): صورة مرمّزة بـ Base64 (إذا تم طلبها)revised_prompt(string): نسخة prompt معدّلة اختيارية عندما يعيدها النموذج المحدد
استجابة المهمة غير المتزامنة
اضبط async: true مع gpt-image-2 أو نماذج الصور الرسمية FLUX/BFL لإنشاء مهمة بدلاً من انتظار الصورة النهائية داخل طلب الإنشاء. تتضمن الاستجابة status: "pending" وtask_id وpoll_url. استعلم عن /v1/tasks/{task_id} حتى تصل المهمة إلى completed أو failed.
تعيد مهام الصور غير المتزامنة روابط URL للصور النهائية فقط. إذا كنت تحتاج إلى بيانات b64_json الخام، فاستخدم طلبًا متزامنًا.
قد يتم حجز التكلفة المقدّرة عند إنشاء المهمة. تُحاسب المهام المكتملة حسب الاستخدام الفعلي، وتُحرر أو تُسترد تكلفة المهام الفاشلة أو المنتهية بالمهلة.
طابع Unix الزمني لوقت الإنشاء.
معرّف المهمة الفريد للاستطلاع.
الحالة الأولية: pending.
عنوان URL نسبي للاستطلاع للحصول على النتائج، على سبيل المثال /v1/tasks/{id}.
يبقى فارغًا أثناء كون المهمة قيد الانتظار. وتُرجِع مهام الصور المكتملة عناوين URL للصور المُولَّدة في data[].url.
عند تلقي status: "pending"، استخدم poll_url أو GET /v1/tasks/{task_id} لاسترداد النتيجة.
الطلب
curl -X POST "https://api.tokenlab.sh/v1/images/generations" \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{
"model": "gemini-3-pro-image",
"prompt": "A cinematic portrait of a white cat sitting on a rainy windowsill",
"aspect_ratio": "16:9",
"resolution": "2k"
}'from openai import OpenAI
client = OpenAI(
api_key="sk-your-api-key",
base_url="https://api.tokenlab.sh/v1"
)
response = client.images.generate(
model="gemini-3-pro-image",
prompt="A cinematic portrait of a white cat sitting on a rainy windowsill",
extra_body={"aspect_ratio": "16:9", "resolution": "2k"}
)
print(response.data[0].url)import OpenAI from 'openai';
const client = new OpenAI({
apiKey: 'sk-your-api-key',
baseURL: 'https://api.tokenlab.sh/v1'
});
const response = await client.images.generate({
model: 'gemini-3-pro-image',
prompt: 'A cinematic portrait of a white cat sitting on a rainy windowsill',
aspect_ratio: '16:9',
resolution: '2k'
});
console.log(response.data[0].url);<?php
$ch = curl_init('https://api.tokenlab.sh/v1/images/generations');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer sk-your-api-key'
],
CURLOPT_POSTFIELDS => json_encode([
'model' => 'gemini-3-pro-image',
'prompt' => 'A cinematic portrait of a white cat sitting on a rainy windowsill',
'aspect_ratio' => '16:9',
'resolution' => '2k'
])
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
echo $data['data'][0]['url'];مثال لعائلة صور تدعم النسبة فقط: بالنسبة إلى gemini-2.5-flash-image أو nano-banana أو nano-banana-edit، أرسل aspect_ratio لكن احذف resolution:
{
"model": "gemini-2.5-flash-image",
"prompt": "A clean editorial product shot of a citrus soda can",
"aspect_ratio": "16:9"
}مثال Nano Banana Pro مع صورة مرجعية: أرسل الطلب إلى /v1/images/generations وليس إلى /v1/images/edits. resolution اختياري ويمكن ضبطه على 1k أو 2k أو 4k:
{
"model": "nano-banana-pro",
"prompt": "Create a clean cinematic character image based on the reference images",
"operation": "image-to-image",
"image_urls": ["https://example.com/reference-1.png"],
"aspect_ratio": "1:1",
"resolution": "2k"
}للصور المصدر الخاصة أو المحلية، استخدم رفع multipart مباشرًا. لا ترسل file_id إلى /v1/images/generations:
curl -X POST "https://api.tokenlab.sh/v1/images/generations" \
-H "Authorization: Bearer sk-your-api-key" \
-F "model=nano-banana-pro" \
-F "prompt=Create a clean cinematic character image based on this reference" \
-F "operation=image-to-image" \
-F "image=@reference.png" \
-F "aspect_ratio=1:1" \
-F "resolution=2k"الاستجابة
{
"created": 1706000000,
"data": [
{
"url": "https://...",
"revised_prompt": "A fluffy white cat with bright eyes sitting peacefully on a wooden windowsill, watching raindrops stream down the glass window..."
}
]
}النماذج المتاحة
استخدم GET /v1/models?recommended_for=image لمعرفة نماذج الصور وقدراتها وأسعارها الحالية.
النماذج غير المتزامنة تُرجع status: "pending" وتتطلب polling. راجع حالة الصورة لمعرفة كيفية استرجاع النتائج.
التعامل مع الاستجابات غير المتزامنة
بالنسبة للنماذج غير المتزامنة، تحقّق مما إذا كانت الاستجابة تحتوي على status: "pending" / status: "processing":
import requests
import time
def generate_image(prompt, model="gpt-image-2"):
# Create image request
response = requests.post(
"https://api.tokenlab.sh/v1/images/generations",
headers={"Authorization": "Bearer sk-your-api-key"},
json={"model": model, "prompt": prompt, "async": True},
timeout=120
)
response.raise_for_status()
data = response.json()
# Check if async
if data.get("status") in ("pending", "processing"):
task_id = data["task_id"]
poll_url = data.get("poll_url")
print(f"Async task started: {task_id}")
# Poll for result
while True:
status_resp = requests.get(
f"https://api.tokenlab.sh{poll_url}" if poll_url else f"https://api.tokenlab.sh/v1/tasks/{task_id}",
headers={"Authorization": "Bearer sk-your-api-key"},
timeout=30
)
status_resp.raise_for_status()
status_data = status_resp.json()
if status_data["status"] == "completed":
return status_data["data"][0]["url"]
elif status_data["status"] == "failed":
raise Exception(status_data.get("error", "Generation failed"))
time.sleep(3)
else:
# Sync response
return data["data"][0]["url"]
# Usage
url = generate_image("a beautiful sunset over mountains", model="gpt-image-2")
print(f"Generated image: {url}")ينشئ Hy Image 3.5 Preview صورًا مربعة بدقة 1024 بكسل انطلاقًا من النص، ويعدّل الصور المرجعية وفق تعليمات مكتوبة. يفيد في إعداد المسودات البصرية وتحسين التكوين.
{
"model": "hy-image-v3.5-preview",
"prompt": "A yellow lemon on a white table",
"size": "1024x1024",
"n": 1,
"response_format": "url"
}التفويض
BearerAuth مصادقة مفتاح API. قم بإنشاء أو إدارة مفاتيح API في Dashboard > API > API Keys.
الموضع: header
الترويسات
سياسة التسليم لكل طلب. تتجاوز إعدادات API key و Workspace الافتراضية. يحاول النظام تلقائياً استخدام TokenLab Verified أولاً، وقد ينتقل مرة واحدة إلى Official فقط قبل المخرجات، أو قبول الطلب، أو إنشاء مورد دائم.
القيم المتاحة
- "auto"
- "verified"
- "official"
الاستجابة
application/json
application/json
application/json
application/json
application/json
application/json
application/json