إنشاء توليد
أرسل مهام توليد Rivya API غير المتزامنة باستخدام model وprompt وparams وIdempotency-Key وحقول الاستجابة العامة.
آخر مراجعة في 2026/05/10
استخدم POST /api/v1/generations لإرسال مهمة توليد غير متزامنة للصورة أو الفيديو أو الصوت.
بالنسبة إلى نماذج الدردشة، استخدم Chat API. لا ينشئ POST /api/v1/generations جلسات دردشة أو رسائل مساعد.
Endpoint
POST https://rivya.ai/api/v1/generationsHeaders مطلوبة:
Authorization: Bearer rvya_sk_...
Content-Type: application/jsonHeader موصى به:
Idempotency-Key: your-unique-request-keyجسم الطلب
{
"model": "z-image",
"prompt": "A clean editorial product image on a soft studio background",
"params": {
"aspect_ratio": "1:1"
},
"client_request_id": "order-123-preview"
}الحقول:
model: معرف نموذج عام مطلوبprompt: نص الموجه، وهو مطلوب في كثير من النماذجparams: كائن معاملات خاص بالنموذجclient_request_id: معرف تتبع اختياري من نظامك
اقرأ مرجع Model API من أجل params الخاصة بكل نموذج.
الملفات المرجعية داخل Params
بالنسبة إلى النماذج التي تقبل وسائط مرجعية مرفوعة، استدع أولا Files API. ثم مرر نتيجة الرفع عبر params الخاصة بالنموذج؛ لا تضف حقل files على المستوى الأعلى إلى طلب التوليد.
استخدم params.referenceMediaItems للتكاملات الجديدة:
{
"model": "nano-banana-2",
"prompt": "Restyle this product photo for a clean editorial catalog page",
"params": {
"referenceMediaItems": [
{
"url": "https://...",
"kind": "image",
"name": "reference.png",
"mimeType": "image/png"
}
]
}
}بالنسبة إلى مدخلات الصوت أو الفيديو التي تتطلب التحقق من المدة، أدرج duration_token العائد من /api/v1/files باسم durationToken في عنصر referenceMediaItems المرتبط.
مثال curl
curl https://rivya.ai/api/v1/generations \
-H "Authorization: Bearer rvya_sk_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: product-preview-001" \
-d '{
"model": "z-image",
"prompt": "A clean editorial product image on a soft studio background",
"params": {
"aspect_ratio": "1:1"
}
}'مثال JavaScript
const response = await fetch("https://rivya.ai/api/v1/generations", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.RIVYA_API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": "product-preview-001"
},
body: JSON.stringify({
model: "z-image",
prompt: "A clean editorial product image on a soft studio background",
params: { aspect_ratio: "1:1" }
})
});
const generation = await response.json();
console.log(generation.id, generation.status);مثال Python
import os
import requests
response = requests.post(
"https://rivya.ai/api/v1/generations",
headers={
"Authorization": f"Bearer {os.environ['RIVYA_API_KEY']}",
"Content-Type": "application/json",
"Idempotency-Key": "product-preview-001",
},
json={
"model": "z-image",
"prompt": "A clean editorial product image on a soft studio background",
"params": {"aspect_ratio": "1:1"},
},
timeout=30,
)
generation = response.json()
print(generation["id"], generation["status"])الاستجابة
{
"id": "task_public_id",
"status": "queued",
"model": "z-image",
"reserved_credits": 1,
"final_credits": 0,
"created_at": "2026-05-10T00:00:00.000Z",
"updated_at": "2026-05-10T00:00:00.000Z",
"result": null,
"error": null
}احفظ id واستطلع حالة التوليد. إذا ضبطت API Webhooks، يمكن لـ Rivya أيضا إرسال حدث generation.succeeded أو generation.failed موقع عندما تصل المهمة إلى حالة نهائية.
Idempotency
استخدم Idempotency-Key لإعادة المحاولة. إذا أعيد تشغيل المفتاح نفسه وجسم الطلب نفسه، يمكن لـ Rivya إعادة الاستجابة العامة المخزنة بدلا من إنشاء مهمة مكررة.
إذا أعيد استخدام المفتاح نفسه مع إدخال مختلف، يعيد API الخطأ idempotency_conflict.