الانتقال إلى الوثائق
في هذه الصفحة

Seedream 5.0 Pro API

ولّد صوراً، أو عدّل المراجع، أو فكك صورة إلى طبقات باستخدام مفتاح واجهة برمجة تطبيقات Seevio الخاص بك. تُشغل المهام بشكل غير متزامن؛ احفظ taskId واستعلم من نقطة نهاية المهمة أو استقبل استدعاءً رجعياً.

POST https://api.seevio.ai/v1/images/generations

الإمكانيات

الميزةالقيم المدعومة
أوضاع التوليدtext-to-image, image-to-image, layer-decomposition
دقة المخرجات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 صورة، ويخصم العدد الفعلي للصور المُرجعة (بما في ذلك الصورة الأساسية) ويعيد الأرصدة غير المستخدمة إلى رصيدك الأصلي. يتم استرداد قيمة المهام الفاشلة بالكامل.

دقة المخرجاتالأسعار والأرصدة
1K4 رصيد
1.5K4 رصيد
2K8 رصيد

عند الدقة الافتراضية 2K، يحجز تفكيك الطبقات 136 رصيد. وإذا تم إرجاع أربع صور، تكون الرسوم النهائية 32 رصيد ويتم إرجاع 104 رصيد.

خاصية تكرار الطلبات المتطابقة بشكل آمن غير مدعومة. كل طلب POST صالح ينشئ مهمة جديدة مدفوعة. إذا كانت نتيجة الإرسال غير مؤكدة، فاستعلم عن taskId المسترجع؛ حيث إن إعادة محاولة إرسال POST قد تنشئ مهمة أخرى.

المصادقة

أنشئ مفتاح API في لوحة التحكم. يظهر المفتاح الكامل مرة واحدة فقط. احتفظ به في خادمك وأرسله كرمز حامل (Bearer token) مع كل طلب.

رابط الأساس (Base URL)

https://api.seevio.ai
Authorization: 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 Pro، عيّن قيمة هذا الحقل إلى seedream-5-0-pro.

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 (جودة أساسية) و2K (جودة عالية). يدعم تفكيك الطبقات 1K و1.5K و2K. القيمة الافتراضية: 2K.

القيم المدعومة
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-pro",
  "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": 8
}

تحويل النص إلى صورة

ولّد صوراً، أو عدّل المراجع، أو فكك صورة إلى طبقات باستخدام مفتاح واجهة برمجة تطبيقات 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-pro",
  "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-pro",
  "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-pro",
  "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": 136
}

تفكيك طبقات مكتمل: روابط صور متعددة

توضح هذه الاستجابة التوضيحية أربع صور مخرجات: صورة أساسية واحدة وثلاث طبقات. قد تعيد مهمتك عدداً مختلفاً. عند الدقة المطلوبة 2K، يمثل credits التكلفة النهائية لجميع الصور الأربع؛ وقد تم إرجاع الجزء غير المستخدم من حجز الـ 17 صورة الأولي.

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1789171200,
  "model": "seedream-5-0-pro",
  "credits": 32,
  "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.
الحقلالنوعالقيم المسموح بها والمتطلبات
idstringمعرف المهمة. هذا هو taskId المسترجع من استجابة الإنشاء.
created_atnumberوقت إنشاء المهمة بثواني Unix.
modelstringمعرف النموذج العام المستخدم لهذه المهمة.
billing_statusstringreserved (محجوز)، charged (مخصوم)، refunded (مسترد)، أو refund_failed (فشل الاسترد).
creditsnumberتظهر استجابة الإنشاء والمهمة المعلقة الأرصدة المحجوزة. عند الاكتمال، يمثل credits الرسوم الفعلية؛ حيث تم بالفعل إرجاع الأرصدة المحجوزة غير المستخدمة. يبقى مبلغ الحجز الأصلي معروضاً في هذا الحقل للمهام الفاشلة.
failed_reasonstring | nullسبب الفشل للمهام الفاشلة؛ ويكون null في الحالات الأخرى. تحذف استجابات الاستعلام الفاشلة حقل data.
failed_codestring | nullرمز الخطأ. راجع failed_reason للاطلاع على تفاصيل الخطأ.
dataobjectيكون متواجدًا في استعلامات المهام غير الفاشلة. يحتوي على تفاصيل المخرجات والمعالجة.
data.resultsstring[]جميع روابط (URLs) الصور الناتجة، بما في ذلك الصورة الأساسية لتفكيك الطبقات. تكون هذه القيمة فارغة قبل اكتمال المهمة وبعد انتهاء صلاحيتها.
data.image_expires_atstring | nullوقت انتهاء صلاحية الصور بتنسيق ISO 8601، أو null إذا لم يتوفر بعد.
data.processing_timenumber | nullمدة معالجة المهمة بالثواني عند توفرها، وإلا ستكون القيمة فارغة (null).

في قائمة الانتظار

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1789171200,
  "model": "seedream-5-0-pro",
  "credits": 8,
  "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-pro",
  "credits": 8,
  "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-pro",
  "credits": 8,
  "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-pro",
  "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-pro",
  "credits": 8,
  "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-pro",
  "credits": 8,
  "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": 8
}

مثال للمستقبل (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الحقلالإجراء المطلوب
400invalid_request
قم بتصحيح الـ JSON، أو الوصف المفقود، أو نطاق المعلمات، أو رابط الوسائط قبل إعادة المحاولة.
401invalid_api_key
تحقق من الرمز الحامل (Bearer token) وما إذا كان مفتاح الـ API نشطًا.
402insufficient_credits
أضف رصيدًا أو قلل من تكلفة المهمة. قد تتضمن الاستجابة المبالغ المطلوبة والمتاحة.
403forbidden
يرجى التحقق من القيود المفروضة على الحساب والموضحة في رسالة الخطأ.
404not_found
تحقق من معرف المهمة وتأكد من أن المفتاح ينتمي لمستخدم المهمة.
429rate_limited
انتظر للمدة المحددة في Retry-After قبل إعادة المحاولة.
500internal_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."
  }
}