الصور
إنشاء صورة
إنشاء صورة بناءً على نص توجيهي (prompt)
نظرة عامة
استخدم GET /v1/models?recommended_for=image للحصول على نماذج الصور الحالية، ثم أرسل الـ model المختار بشكل صريح.
gpt-image-2 هو نموذج GPT Image يعتمد على نظام تسعير الرموز (tokens). يتبع TokenLab تفصيل الاستخدام الرسمي لـ OpenAI لرموز إدخال النص، وإدخال الصورة، ورموز الإدخال المخزنة مؤقتاً (cached input)، ورموز إخراج الصورة؛ ولا تتم محاسبته كنموذج بسعر ثابت لكل صورة.
بالنسبة لإنشاء الصور باستخدام gpt-image-2، فإن المعلمات (parameters) العامة المدعومة هي 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-nano-banana-2.1وgemini-3-pro-imageوnano-banana-2.1وnano-banana-proكلاً منaspect_ratioبالإضافة إلىresolution(1k,2k,4k) لعملياتها العامة من نص إلى صورة، ومن صورة إلى صورة، وتعديل الصور. - تدعم
nano-banana-2كلاً منaspect_ratioوresolution(1k,2k,4k) لكل من عمليات إنشاء من نص إلى صورة ومن صورة إلى صورة. - تدعم
gemini-3.1-flash-lite-imageوnano-banana-2-liteعمليات من نص إلى صورة، ومن صورة إلى صورة، وتعديل الصور بدقة1kفقط. - تدعم
nano-bananaخاصيةaspect_ratioولكنها لا تكشف عن اختيارresolutionعام. - بالنسبة لعمليات من صورة إلى صورة مع
gemini-3.1-flash-imageأوgemini-nano-banana-2.1أوgemini-3.1-flash-lite-imageأوgemini-3-pro-image، استخدم هذا الـ endpoint معoperation: "image-to-image"وصور مرجعية. أرسل طلبات تعديل الصور لهذه النماذج إلى/v1/images/edits. - بالنسبة لطلبات الصور المرجعية لـ Nano Banana، استخدم
nano-banana-2أوnano-banana-2.1أوnano-banana-2-liteأوnano-banana-proعلى هذا الـ endpoint (/v1/images/generations) معoperation: "image-to-image"وimage_urls. تستخدم طلبات تعديل الصور لـnano-banana-2وnano-banana-2.1وnano-banana-2-liteوnano-banana-proهذا الـ endpoint أيضاً، معoperation: "image-edit". لا ترسل طلبات الصور المرجعية لـ Nano Banana إلى/v1/images/edits. - يمكن توفير الصور المرجعية على هذا الـ endpoint كـ
image_url/image_urlsبتنسيق JSON، أو كملفimageمتعدد الأجزاء (multipart). لا يتم قبولimages[]وfile_idعلى/v1/images/generations؛ قم بإنشاء مراجع/v1/filesفقط لنماذج/v1/images/editsالتي توثقimages[].file_id.
بالنسبة لعائلات صور Google، يفضل استخدام aspect_ratio وإرسال resolution فقط عندما يدعمها النموذج بشكل صريح.
تدعم نماذج صور xAI Grok Imagine (grok-imagine-image و grok-imagine-image-2.0 و grok-imagine-image-pro القديم) خاصية aspect_ratio بالإضافة إلى resolution (1k, 2k). يتم الاحتفاظ بـ grok-imagine-image-pro كمعرف توافق لـ grok-imagine-image-2.0.
جسم الطلب (Request Body)
مهلة الطلب المتزامن (Synchronous request timeout): تعيد بعض طلبات الصور الصورة النهائية بشكل مضمن وتنتظر حتى انتهاء الإنشاء. قد تستغرق الطلبات عالية الدقة أو عالية الجودة ما يقرب من دقيقة أو أكثر، لذا اضبط مهلة عميل HTTP الخاص بك على 120s على الأقل. إذا كان رد الإنشاء يتضمن status: "pending" أو task_id أو poll_url، فاتبع poll_url المرجعة بدلاً من ذلك.
النموذج المراد استخدامه (على سبيل المثال، gpt-image-2 أو flux-pro-1.1 أو nano-banana-pro). استعلم عن GET /v1/models?recommended_for=image للحصول على القائمة الموصى بها حالياً.
وصف نصي للصورة المطلوبة.
رابط HTTPS عام لصورة مرجعية لعمليات الإنشاء من صورة إلى صورة. بالنسبة لطلبات الصور المرجعية لـ Nano Banana، اضبط operation على image-to-image؛ قد تتضمن nano-banana-pro خاصية resolution.
روابط HTTPS عامة لصور مرجعية. استخدم هذا لصورة مرجعية واحدة أو أكثر في طلبات JSON. لا يتم دعم file_id و images[] على هذا الـ endpoint.
روابط صور مرجعية إضافية للنماذج التي تميز بين المدخلات الأساسية والمراجع.
ملف صورة مرجعية متعدد الأجزاء (multipart) لعمليات الإنشاء من صورة إلى صورة. استخدم هذا عندما تكون الصورة المصدر خاصة أو محمية برأس (header). هذا يختلف عن file_id الخاص بـ /v1/files، والذي لا يتم قبوله على هذا الـ endpoint.
1عدد الصور المراد إنشاؤها (1-10، يعتمد على النموذج).
حجم الصورة. استخدم هذا لعائلات الصور بنمط OpenAI والنماذج الأخرى التي تقبل أحجام بكسل دقيقة.
بالنسبة لـ gpt-image-2، تقبل size القيمة auto أو WIDTHxHEIGHT. يجب أن تكون الأبعاد المخصصة مضاعفات للرقم 16، ويجب أن يكون طول أطول حافة 3840 بكسل كحد أقصى، ويجب أن تكون نسبة الطول إلى العرض 3:1 كحد أقصى، ويجب أن يكون إجمالي البكسلات بين 655,360 و 8,294,400. لا تعد aspect_ratio و resolution جزءاً من تفاصيل نموذج TokenLab الحالية لـ gpt-image-2.
بالنسبة لنماذج صور Google ذات مستويات الدقة (gemini-3.1-flash-image و gemini-nano-banana-2.1 و gemini-3-pro-image و gemini-3.1-flash-lite-image و nano-banana-2 و nano-banana-2.1 و nano-banana-pro)، تقبل size حجم إخراج من جدول أحجام النموذج، مثل 1376x768 (16:9 بدقة 1K)، أو مستوى دقة: 1K أو 2K أو 4K. يرسل TokenLab المستوى كـ resolution، لذا فإن الطلب وسعره هما نفس الطلب مع resolution. المستوى الذي لا يدعمه النموذج (على سبيل المثال 2K على gemini-3.1-flash-lite-image)، أو المستوى المختلف عن resolution، يعيد 400 مع رمز invalid_image_size_contract و allowed_resolutions الخاصة بالنموذج. بالنسبة لهذه النماذج، الصيغة الموصى بها هي aspect_ratio مع resolution.
محدد نسبة العرض إلى الارتفاع الذي يعتمد على النموذج.
تشمل قيم عائلة صور Google الشائعة 1:1 و 16:9 و 9:16 و 3:2 و 2:3.
دقة الإخراج التي تعتمد على النموذج. تدعم gemini-3.1-flash-image و gemini-nano-banana-2.1 و gemini-3-pro-image و nano-banana-2 و nano-banana-2.1 و nano-banana-pro دقة 1k و 2k و 4k؛ تدعم نماذج Grok Imagine دقة 1k و 2k. احذف هذا الحقل ما لم يدعمه النموذج والعملية المحددان بشكل صريح.
جودة الصورة. تستخدم نماذج GPT Image مثل gpt-image-2 قيم auto أو low أو medium أو high. قد تستخدم نماذج أخرى قيماً مختلفة؛ تحقق من تفاصيل النموذج قبل إرسال قيمة غير افتراضية.
كيفية إرجاع الصور: url أو b64_json.
- محذوف: عندما يعيد النموذج بايتات الصورة، تكون كل صورة في
data[].b64_json، وأيضاً فيdata[].urlعندما يقوم TokenLab بتخزينها. عندما يعيد النموذج رابطاً، تكون كل صورة فيdata[].url. url: تكون كل صورة فيdata[].urlفقط.b64_json: تكون كل صورة فيdata[].b64_jsonفقط كبيانات Base64.
الروابط هي روابط نتائج وسائط TokenLab. تظل صالحة لمدة 30 يوماً. انظر الاحتفاظ بالبيانات.
falseاضبطه على true مع gpt-image-2 أو نماذج صور FLUX/BFL الرسمية لإنشاء مهمة أولاً. تعيد مهام الصور غير المتزامنة المكتملة روابط بغض النظر عن response_format المطلوب؛ استخدم الطلبات المتزامنة عندما تحتاج إلى b64_json.
محدد نمط اختياري. أرسل هذا فقط عندما يوثقه النموذج المختار بشكل صريح؛ احذفه لـ gpt-image-2 ما لم تنص بيانات تعريف النموذج على خلاف ذلك.
معرف فريد للمستخدم النهائي.
الاستجابة (Response)
الاستجابة المضمنة (Inline Response)
طابع زمني Unix للإنشاء.
مصفوفة من الصور التي تم إنشاؤها.
يحتوي كل كائن على:
url(string): رابط نتيجة وسائط TokenLab للصورة، صالح لمدة 30 يوماً. غير موجود عندما يكونresponse_formatهوb64_json. عند حذفresponse_format، يكون مفقوداً إذا لم يتمكن TokenLab من تخزين الصورة.b64_json(string): بيانات الصورة بتنسيق Base64. موجود عندما يكونresponse_formatهوb64_json، أو عند حذفه ويعيد النموذج بايتات الصورة.revised_prompt(string): مراجعة اختيارية للنص التوجيهي، عندما يعيد النموذج المختار واحدة.
استجابة المهمة غير المتزامنة (Async Task Response)
اضبط async: true مع gpt-image-2 أو نماذج صور FLUX/BFL الرسمية لإنشاء مهمة بدلاً من انتظار الصورة النهائية في طلب الإنشاء. تتضمن الاستجابة status: "pending" و task_id و poll_url. قم بعمل استطلاع (poll) لـ /v1/tasks/{task_id} حتى تصل المهمة إلى completed أو failed.
تعيد مهام الصور غير المتزامنة روابط الصور النهائية فقط. إذا كنت بحاجة إلى بيانات صورة b64_json خام، استخدم طلباً متزامناً.
قد تقوم الفوترة بحجز المبلغ المقدر عند إنشاء المهمة. تتم محاسبة المهام المكتملة بناءً على الاستخدام الفعلي، ويتم تحرير أو استرداد المهام الفاشلة أو التي انتهت مهلتها.
طابع زمني Unix للإنشاء.
معرف مهمة فريد للاستطلاع.
الحالة الأولية: pending.
رابط نسبي للاستطلاع عن النتائج، على سبيل المثال /v1/tasks/{id}.
فارغة بينما تكون المهمة قيد الانتظار. تعيد مهام الصور المكتملة روابط الصور التي تم إنشاؤها في 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'];مثال عائلة صور تعتمد على النسبة فقط: بالنسبة لـ nano-banana، أرسل aspect_ratio ولكن احذف resolution:
{
"model": "nano-banana",
"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"
}مثال تحميل مباشر متعدد الأجزاء للصور المصدر الخاصة أو المحلية. لا تمرر 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"، فاتبع poll_url وقم بالاستطلاع حتى الاكتمال.
التعامل مع الاستجابات القائمة على المهام
بالنسبة لنماذج الصور، تحقق دائماً مما إذا كانت الاستجابة تحتوي على 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 task-based
if data.get("status") in ("pending", "processing"):
task_id = data["task_id"]
poll_url = data.get("poll_url")
print(f"Image 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:
# Inline response
return data["data"][0]["url"]
# الاستخدام
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