Seedream 5.0 Flash API
ولّد صوراً، أو عدّل المراجع، أو فكك صورة إلى طبقات باستخدام مفتاح واجهة برمجة تطبيقات Seevio الخاص بك. تُشغل المهام بشكل غير متزامن؛ احفظ taskId واستعلم من نقطة نهاية المهمة أو استقبل استدعاءً رجعياً.
POST https://api.seevio.ai/v1/images/generationsالإمكانيات
| الميزة | القيم المدعومة |
|---|---|
| أوضاع التوليد | text-to-image, image-to-image, layer-decomposition |
| دقة المخرجات | auto, 1K, 1.5K, 2K |
| نسبة العرض إلى الارتفاع | 1:1, 4:3, 3:4, 16:9, 9:16, 2:3, 3:2, 21:9 |
| الصور المرجعية | روابط PNG / JPEG / WebP عامة عبر HTTPS، بحجم يصل إلى 30 ميجابايت لكل منها. لا تستخدم صوراً لوضع نص إلى صورة، ومن 1 إلى 10 لوضع صورة إلى صورة، وصورة واحدة بالضبط لتفكيك الطبقات. |
| الوصف التوجيهي (Prompt) | يجب أن يتراوح طول الوصف بين 4 و5000 حرف بعد إزالة المسافات البيضاء من بدايته ونهايته. في وضع layer-decomposition فقط، يمكن إغفال الحقل prompt أو تركه فارغاً. |
| تنسيق الإخراج | png, jpg |
الأسعار والأرصدة
الأسعار أدناه هي لكل صورة مُرجعة. يحجز التوليد العادي صورة واحدة. يحجز تفكيك الطبقات 17 صورة، ويخصم العدد الفعلي للصور المُرجعة (بما في ذلك الصورة الأساسية) ويعيد الأرصدة غير المستخدمة إلى رصيدك الأصلي. يتم استرداد قيمة المهام الفاشلة بالكامل.
| دقة المخرجات | الأسعار والأرصدة |
|---|---|
| auto | 2 رصيد |
| 1K | 2 رصيد |
| 1.5K | 2 رصيد |
| 2K | 2 رصيد |
عند الدقة الافتراضية 2K، يحجز تفكيك الطبقات 34 رصيد. وإذا تم إرجاع أربع صور، تكون الرسوم النهائية 8 رصيد ويتم إرجاع 26 رصيد.
خاصية تكرار الطلبات المتطابقة بشكل آمن غير مدعومة. كل طلب POST صالح ينشئ مهمة جديدة مدفوعة. إذا كانت نتيجة الإرسال غير مؤكدة، فاستعلم عن taskId المسترجع؛ حيث إن إعادة محاولة إرسال POST قد تنشئ مهمة أخرى.
المصادقة
أنشئ مفتاح API في لوحة التحكم. يظهر المفتاح الكامل مرة واحدة فقط. احتفظ به في خادمك وأرسله كرمز حامل (Bearer token) مع كل طلب.
رابط الأساس (Base URL)
https://api.seevio.aiAuthorization: Bearer sk_live_your_api_key
Content-Type: application/jsonقم بتعيين متغير البيئة SEEVIO_API_KEY قبل تشغيل هذه الأمثلة. يتم تشغيل أمثلة JavaScript على خادمك باستخدام Node.js؛ وتستخدم أمثلة Python حزمة requests.
جسم الطلب (Request body)
| الحقل | النوع | مطلوب | الوصف والقيود |
|---|---|---|---|
model | string | نعم | معرّف النموذج. لاستخدام Seedream 5.0 Flash، عيّن قيمة هذا الحقل إلى seedream-5-0-flash. |
callback_url | string | لا | نقطة نهاية HTTPS عامة لاستلام استجابات POST عند الاكتمال أو الفشل. الشبكات الخاصة والاستضافة المحلية (localhost) غير مسموح بها. مثال: https://example.com/webhooks/seevio |
input | object | نعم | إعدادات التوليد. الوصف النصي مطلوب في وضعي تحويل النص إلى صورة وتحويل الصورة إلى صورة؛ وهو اختياري في تفكيك الطبقات. |
معلمات الإدخال
| الحقل | النوع | مطلوب | افتراضي | الوصف والقيود |
|---|---|---|---|---|
input.prompt | string | مشروط | — | يجب أن يتراوح طول الوصف بين 4 و5000 حرف بعد إزالة المسافات البيضاء من بدايته ونهايته. في وضع layer-decomposition فقط، يمكن إغفال الحقل prompt أو تركه فارغاً. مثال: A minimalist ceramic teapot on a stone pedestal, soft studio lighting |
input.generation_type | string | لا | text-to-image | استخدم text-to-image لإنشاء صورة جديدة، وimage-to-image لتعديل الصور المرجعية، وlayer-decomposition لفصل صورة واحدة إلى عناصر قابلة لإعادة الاستخدام. القيم المدعومة text-to-image | image-to-image | layer-decomposition |
input.image_urls | string[] | مشروط | [] | روابط PNG / JPEG / WebP عامة عبر HTTPS، بحجم يصل إلى 30 ميجابايت لكل منها. لا تستخدم صوراً لوضع نص إلى صورة، ومن 1 إلى 10 لوضع صورة إلى صورة، وصورة واحدة بالضبط لتفكيك الطبقات. مثال: ["https://example.com/teapot.png"] |
input.aspect_ratio | string | لا | 1:1 | نسبة العرض إلى الارتفاع القيم المدعومة 1:1 | 4:3 | 3:4 | 16:9 | 9:16 | 2:3 | 3:2 | 21:9مثال: 1:1 |
input.resolution | string | لا | 2K | يدعم وضع نص إلى صورة وصورة إلى صورة الدقات 1K و 1.5K و 2K. ويقبل تفكيك الطبقات أيضاً القيمة auto. القيمة الافتراضية: 2K. القيم المدعومة auto | 1K | 1.5K | 2Kمثال: 2K |
input.output_format | string | لا | png | تنسيق المخرجات المطلوب. بالنسبة لتفكيك الطبقات، يعيد خيار png صورة أساسية بتنسيق PNG، بينما يعيد خيار jpg صورة أساسية بتنسيق JPEG. يتم إرجاع جميع الطبقات المفصولة بتنسيق PNG مع الحفاظ على الشفافية. القيم المدعومة png | jpgمثال: png |
ينشئ كل طلب مهمة واحدة. وتُرجع ميزتا تحويل النص إلى صورة وتحويل الصورة إلى صورة صورة واحدة؛ بينما تُرجع ميزة تفكيك الطبقات (layer-decomposition) ما بين 1 إلى 17 صورة، بما في ذلك الصورة الأساسية. لا ترسل aspect_ratio مع ميزة تفكيك الطبقات.
البدء السريع
أرسل هذا الطلب البسيط، واحفظ الـ taskId المسترجع، ثم استخدم مثال الاستعلام عن المهمة أدناه. قيمة الرصيد في استجابة الإنشاء تمثل المبلغ المحجوز.
curl --fail-with-body https://api.seevio.ai/v1/images/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedream-5-0-flash",
"input": {
"prompt": "A minimalist ceramic teapot on a stone pedestal, soft studio lighting",
"aspect_ratio": "1:1",
"resolution": "2K",
"output_format": "png",
"generation_type": "text-to-image"
}
}'مثال على استجابة إنشاء المهمة
{
"taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"credits": 2
}تحويل النص إلى صورة
ولّد صوراً، أو عدّل المراجع، أو فكك صورة إلى طبقات باستخدام مفتاح واجهة برمجة تطبيقات Seevio الخاص بك. تُشغل المهام بشكل غير متزامن؛ احفظ taskId واستعلم من نقطة نهاية المهمة أو استقبل استدعاءً رجعياً.
curl --fail-with-body https://api.seevio.ai/v1/images/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedream-5-0-flash",
"input": {
"prompt": "A minimalist ceramic teapot on a stone pedestal, soft studio lighting",
"aspect_ratio": "1:1",
"resolution": "2K",
"output_format": "png",
"generation_type": "text-to-image"
}
}'تحويل صورة إلى صورة
لتعديل الصور، اضبط generation_type على image-to-image ووفر الروابط في image_urls. تستخدم جميع المعلمات الأخرى نفس العقد البرمجي.
استبدل عناوين URL الخاصة بالوسائط في example.com بملفات HTTPS الخاصة بك والمتاحة للعامة. عناوين URL التجريبية مخصصة لتوضيح هيكلية الطلب وليست أصولاً صالحة للتنزيل.
curl --fail-with-body https://api.seevio.ai/v1/images/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedream-5-0-flash",
"input": {
"prompt": "Change the teapot to matte sage green. Preserve its shape and the studio lighting.",
"aspect_ratio": "1:1",
"resolution": "2K",
"output_format": "png",
"generation_type": "image-to-image",
"image_urls": [
"https://example.com/teapot.png"
]
}
}'تفكيك الطبقات
اضبط generation_type على layer-decomposition ووفر عنوان URL واحدًا فقط للصورة. لا تُرسل aspect_ratio. يتحكم output_format في تنسيق الصورة الأساسية فقط. يتم إرجاع الطبقات المفصولة دائمًا بتنسيق PNG مع الحفاظ على الشفافية. احفظ كل عنوان URL مُعاد ضمن data.results.
curl --fail-with-body https://api.seevio.ai/v1/images/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedream-5-0-flash",
"input": {
"generation_type": "layer-decomposition",
"image_urls": [
"https://example.com/teapot.png"
],
"resolution": "2K",
"output_format": "png"
}
}'يمكن أن يعيد تفكيك الطبقات روابط صور متعددة في data.results: الصورة الأساسية والطبقات المنفصلة. يشير كل رابط إلى صورة منفصلة. يختلف عدد النتائج حسب المهمة (من 1 إلى 17 صورة إجمالاً)؛ قم بمعالجة المصفوفة بأكملها بدلاً من الاقتصار على data.results[0]. تحتوي كل من استجابة الاستعلام عن المهمة المكتملة وإشعار Webhook عند الاكتمال على هذه المصفوفة. تحتوي استجابة الإنشاء الأولية على taskId والأرصدة المحجوزة، ولا تحتوي على روابط الصور.
مثال على استجابة إنشاء المهمة
{
"taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"credits": 34
}تفكيك طبقات مكتمل: روابط صور متعددة
توضح هذه الاستجابة التوضيحية أربع صور مخرجات: صورة أساسية واحدة وثلاث طبقات. قد تعيد مهمتك عدداً مختلفاً. عند الدقة المطلوبة 2K، يمثل credits التكلفة النهائية لجميع الصور الأربع؛ وقد تم إرجاع الجزء غير المستخدم من حجز الـ 17 صورة الأولي.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1789171200,
"model": "seedream-5-0-flash",
"credits": 8,
"failed_code": null,
"status": "completed",
"billing_status": "charged",
"failed_reason": null,
"data": {
"results": [
"https://cdn.seevio.ai/api/images/example/base.png",
"https://cdn.seevio.ai/api/images/example/layer-1.png",
"https://cdn.seevio.ai/api/images/example/layer-2.png",
"https://cdn.seevio.ai/api/images/example/layer-3.png"
],
"image_expires_at": "2026-10-12T00:00:00.000Z",
"processing_time": 12
}
}معالجة كل صورة مُرجعة
const response = await fetch(
"https://api.seevio.ai/v1/tasks/TASK_ID",
{ headers: { Authorization: `Bearer ${process.env.SEEVIO_API_KEY}` } }
);
if (!response.ok) throw new Error(await response.text());
const task = await response.json();
if (task.status === "completed") {
// Process every returned image, including the base image.
// The number of URLs varies; do not read only results[0].
for (const [index, imageUrl] of task.data.results.entries()) {
console.log({ taskId: task.id, index, imageUrl });
// Download or store this image in your application.
}
} else if (task.status === "failed") {
throw new Error(task.failed_reason || "Image generation failed.");
}
// If queued or generating, poll again after at least 5 seconds.الاستعلام عن مهمة
GET https://api.seevio.ai/v1/tasks/{taskId}استبدل معرف المثال بـ taskId المسترجع من عملية الإنشاء. تعيد الاستعلامات فقط المهام المملوكة لمستخدم مفتاح API؛ وتعيد المعرفات غير المعروفة أو التي لا يمكن الوصول إليها خطأ HTTP 404.
استعلم كل 10–20 ثوانٍ كخطوة أولى، وتراجع مؤقتًا عند تلقي HTTP 429، وتوقف عندما تصبح الحالة completed أو failed. يُفضل استخدام خطاطيف الويب (webhooks) في بيئة الإنتاج. يقوم كل مثال كود أدناه باستعلام واحد.
curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer $SEEVIO_API_KEY"| الحالة | القيم المسموح بها والمتطلبات |
|---|---|
| queued | تم القبول وفي انتظار التقديم. |
| generating | عملية التوليد قيد المعالجة حاليًا. |
| completed | نجاح نهائي. قم بتنزيل data.results قبل انتهاء الصلاحية. |
| failed | فشل نهائي. تحقق من failed_reason و billing_status. |
| الحقل | النوع | القيم المسموح بها والمتطلبات |
|---|---|---|
| id | string | معرف المهمة. هذا هو taskId المسترجع من استجابة الإنشاء. |
| created_at | number | وقت إنشاء المهمة بثواني Unix. |
| model | string | معرف النموذج العام المستخدم لهذه المهمة. |
| billing_status | string | reserved (محجوز)، charged (مخصوم)، refunded (مسترد)، أو refund_failed (فشل الاسترد). |
| credits | number | تظهر استجابة الإنشاء والمهمة المعلقة الأرصدة المحجوزة. عند الاكتمال، يمثل credits الرسوم الفعلية؛ حيث تم بالفعل إرجاع الأرصدة المحجوزة غير المستخدمة. يبقى مبلغ الحجز الأصلي معروضاً في هذا الحقل للمهام الفاشلة. |
| failed_reason | string | null | سبب الفشل للمهام الفاشلة؛ ويكون null في الحالات الأخرى. تحذف استجابات الاستعلام الفاشلة حقل data. |
| failed_code | string | null | رمز الخطأ. راجع failed_reason للاطلاع على تفاصيل الخطأ. |
| data | object | يكون متواجدًا في استعلامات المهام غير الفاشلة. يحتوي على تفاصيل المخرجات والمعالجة. |
| data.results | string[] | جميع روابط (URLs) الصور الناتجة، بما في ذلك الصورة الأساسية لتفكيك الطبقات. تكون هذه القيمة فارغة قبل اكتمال المهمة وبعد انتهاء صلاحيتها. |
| data.image_expires_at | string | null | وقت انتهاء صلاحية الصور بتنسيق ISO 8601، أو null إذا لم يتوفر بعد. |
| data.processing_time | number | null | مدة معالجة المهمة بالثواني عند توفرها، وإلا ستكون القيمة فارغة (null). |
في قائمة الانتظار
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1789171200,
"model": "seedream-5-0-flash",
"credits": 2,
"failed_code": null,
"status": "queued",
"billing_status": "reserved",
"failed_reason": null,
"data": {
"results": [],
"image_expires_at": null,
"processing_time": null
}
}اكتملت
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1789171200,
"model": "seedream-5-0-flash",
"credits": 2,
"failed_code": null,
"status": "completed",
"billing_status": "charged",
"failed_reason": null,
"data": {
"results": [
"https://cdn.seevio.ai/api/images/example.png"
],
"image_expires_at": "2026-10-12T00:00:00.000Z",
"processing_time": 12
}
}فشلت
عندما ترجع نتيجة الاستعلام status=failed، فهذا يعني أن عملية الإنشاء قد انتهت دون نجاح. يمكنك قراءة سبب الفشل من failed_reason وحالة الفوترة من billing_status لمعرفة تفاصيل عملية الاسترداد. في هذا المثال، تعني refunded أنه تمت إعادة الرصيد المحجوز. يحتفظ الحقل credits بالقيمة الأصلية المحجوزة، ولا تتضمن الاستجابة أي بيانات في data.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1789171200,
"model": "seedream-5-0-flash",
"credits": 2,
"failed_code": "400",
"status": "failed",
"billing_status": "refunded",
"failed_reason": "The input or output was flagged as sensitive. Please try again with different inputs."
}تتوفر روابط النتائج لمدة 30 يومًا من تاريخ التخزين. بعد انتهاء هذه المدة، ستكون قيمة results فارغة.
خطاطيف الويب (Webhooks)
اضبط callback_url في طلب الإنشاء لتلقي طلب JSON POST عند اكتمال المهمة أو فشلها. يجب إرجاع استجابة بترميز 2xx في غضون 15 ثانية. تتم إعادة المحاولة للإرسال الفاشل؛ لذا يرجى معالجة الطلبات المتكررة بشكل متطابق (idempotently) باستخدام معرف المهمة.
يجب أن تدعم نقطة نهاية الاستدعاء الذاتي (Callback endpoint) استقبال طلبات من نوع POST مع نص طلب بتنسيق JSON (Content-Type: application/json).
إنشاء مهمة مع تعيين خطاف الويب (callback)
curl --fail-with-body https://api.seevio.ai/v1/images/generations \
-H "Authorization: Bearer $SEEVIO_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"model": "seedream-5-0-flash",
"input": {
"prompt": "A minimalist ceramic teapot on a stone pedestal, soft studio lighting",
"aspect_ratio": "1:1",
"resolution": "2K",
"output_format": "png",
"generation_type": "text-to-image"
},
"callback_url": "https://example.com/webhooks/seevio"
}'تستخدم الاستدعاءات الراجعة (callbacks) بنية استجابة استعلام المهمة؛ وتتضمن إشعارات الفشل التي رُدّت قيمتها الحقل credits_refunded في المستوى الأعلى أيضاً. استخدم id لتحديد المهمة وstatus للتمييز بين الاكتمال والفشل. قد تتكرر الإشعارات، لذا عالجها اعتماداً على id وstatus بحيث لا يؤدي تكرارها إلى تكرار الأثر. الاستدعاءات الراجعة غير موقعة؛ تحقق من المهمة عبر نقطة نهاية الاستعلام التي تتطلب المصادقة. فشل تسليم الإشعار لا يؤدي إلى ردّ قيمة مهمة ناجحة.
اكتملت المهمة: بيانات الاستدعاء الذاتي الناجح
يشير created_at إلى وقت إنشاء الحدث، وtask_created_at إلى وقت إنشاء المهمة، بالثواني وفق Unix. تعرض الأمثلة الحقول الموصى بها؛ وقد تتضمن الاستجابات حقولاً إضافية.
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1789171212,
"model": "seedream-5-0-flash",
"credits": 2,
"failed_code": null,
"status": "completed",
"billing_status": "charged",
"failed_reason": null,
"data": {
"results": [
"https://cdn.seevio.ai/api/images/example.png"
],
"image_expires_at": "2026-10-12T00:00:00.000Z",
"processing_time": 12
},
"task_created_at": 1789171200
}فشلت المهمة: بيانات استدعاء ذاتي غير ناجح
{
"id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"created_at": 1789171212,
"model": "seedream-5-0-flash",
"credits": 2,
"failed_code": "400",
"status": "failed",
"billing_status": "refunded",
"failed_reason": "The input or output was flagged as sensitive. Please try again with different inputs.",
"task_created_at": 1789171200,
"credits_refunded": 2
}مثال للمستقبل (Receiver)
export async function POST(request: Request) {
const callbackData = await request.json();
if (callbackData.status === "completed") {
const imageUrls = callbackData.data.results;
// Save the image URLs and mark this task as completed in your application.
console.log(callbackData.id, imageUrls);
}
if (callbackData.status === "failed") {
const { failed_reason, credits_refunded } = callbackData;
// Record the failure reason and refunded credits for this task.
console.error(callbackData.id, failed_reason, credits_refunded);
}
return new Response(null, { status: 200 });
}يقرأ نموذج Next.js هذا نص استجابة JSON للتعامل مع المهام المكتملة والفاشلة مباشرةً. يُرجى إضافة ميزة الحفظ الدائم وتجنب تكرار معرفات المهام (Task-ID) في تطبيقك، مع جدولة المهام البطيئة في قائمة انتظار قبل تأكيد الاستدعاء الذاتي.
الأخطاء
تحتوي أخطاء HTTP على كائن خطأ يضم الرمز (code) والرسالة (message). يمكن للمهمة المقبولة بنجاح أن تفشل لاحقًا؛ لذا استعلم عن المهمة أو تعامل مع خطاك الراجع للفشل.
{
"error": {
"code": "invalid_request",
"message": "input.prompt is required."
}
}| HTTP | الحقل | الإجراء المطلوب |
|---|---|---|
| 400 | invalid_request | قم بتصحيح الـ JSON، أو الوصف المفقود، أو نطاق المعلمات، أو رابط الوسائط قبل إعادة المحاولة. |
| 401 | invalid_api_key | تحقق من الرمز الحامل (Bearer token) وما إذا كان مفتاح الـ API نشطًا. |
| 402 | insufficient_credits | أضف رصيدًا أو قلل من تكلفة المهمة. قد تتضمن الاستجابة المبالغ المطلوبة والمتاحة. |
| 403 | forbidden | يرجى التحقق من القيود المفروضة على الحساب والموضحة في رسالة الخطأ. |
| 404 | not_found | تحقق من معرف المهمة وتأكد من أن المفتاح ينتمي لمستخدم المهمة. |
| 429 | rate_limited | انتظر للمدة المحددة في Retry-After قبل إعادة المحاولة. |
| 500 | internal_error | تحقق من رسالة الخطأ وسجلات الـ API. أعد المحاولة بحذر؛ حيث يمكن أن يؤدي إعادة إرسال طلب الإنشاء إلى إنشاء مهمة أخرى خاضعة للرسوم. |
تستخدم الأخطاء الصيغة error.code و error.message: 400 invalid_request، 401 invalid_api_key، 402 insufficient_credits، 403 forbidden، 404 not_found، 429 rate_limited، 500 internal_error. ويعني الخطأ 402 insufficient_credits أن رصيدك الحالي غير كافٍ لإتمام هذا الطلب.
حدود معدل الطلبات
إنشاء المهام: يتيح كل مفتاح واجهة برمجة تطبيقات (API key) ما يصل إلى 100 طلب في الدقيقة افتراضيًا. حدود معدل الطلبات المخصصة غير متوفرة حاليًا.
الاستعلام عن المهام: يتيح كل مفتاح واجهة برمجة تطبيقات (API key) ما يصل إلى 120 طلبًا في الدقيقة افتراضيًا. ويتم احتساب طلبات الاستعلام وطلبات إنشاء المهام بشكل منفصل.
تتشارك طلبات إنشاء الصور والفيديو نفس حد معدل الطلبات الخاص بمفتاح واجهة برمجة التطبيقات API key.
يتضمن خطأ HTTP 429 الرأس Retry-After: 60 لعمليات الإنشاء، والرأس Retry-After: 5 للاستعلامات. استخدم التراجع التدريجي وتجنب الاستقصاء بمعدل أكبر من اللازم.
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 60{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded."
}
}