สร้างงาน Generation
ส่งงาน generation แบบ asynchronous ผ่าน Rivya API พร้อม model, prompt, params, Idempotency-Key และฟิลด์ response สาธารณะ
ตรวจล่าสุดเมื่อ 2026/05/10
ใช้ POST /api/v1/generations เพื่อส่งงานสร้างภาพ วิดีโอ หรือเสียงแบบ asynchronous
สำหรับโมเดล chat ให้ใช้ Chat API POST /api/v1/generations จะไม่สร้าง chat sessions หรือ assistant messages
Endpoint ของ API
POST https://rivya.ai/api/v1/generationsheaders ที่จำเป็น:
Authorization: Bearer rvya_sk_...
Content-Type: application/jsonheader ที่แนะนำ:
Idempotency-Key: your-unique-request-keyเนื้อหา Request Body
{
"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"
}Fields:
model: public model ID ที่จำเป็นprompt: ข้อความ prompt ที่หลายโมเดลต้องใช้params: object parameter เฉพาะโมเดลclient_request_id: trace ID จากระบบของคุณ แบบเลือกใส่ได้
อ่าน Model API Reference สำหรับ params เฉพาะโมเดล
Reference Files ใน Params
สำหรับโมเดลที่รับ uploaded reference media ให้เรียก Files API ก่อน จากนั้นส่งผลลัพธ์ upload ผ่าน params ของโมเดล อย่าเพิ่ม field files ระดับบนสุดใน generation request
ใช้ params.referenceMediaItems สำหรับ integrations ใหม่:
{
"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"
}
]
}
}สำหรับ input แบบ audio หรือ video ที่ต้องตรวจ duration ให้ใส่ 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"])Response ของ API
{
"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 แล้ว poll สถานะงาน Generation หากคุณตั้งค่า API Webhooks Rivya สามารถส่ง event generation.succeeded หรือ generation.failed แบบลงลายเซ็นเมื่อ task เข้าสู่ terminal state ได้ด้วย
Idempotency เพื่อป้องกันคำขอซ้ำ
ใช้ Idempotency-Key สำหรับการลองใหม่ หาก key เดิมและ request body เดิมถูก replay Rivya สามารถคืน public response ที่บันทึกไว้แทนการสร้าง task ซ้ำ
หาก key เดิมถูกใช้ซ้ำกับ input ที่ต่างกัน API จะคืน idempotency_conflict
หน้าที่เกี่ยวข้อง
สถานะงาน Generation
ตรวจซ้ำงาน generation ของ Rivya API ด้วย public task ID, อ่านสถานะ queued, processing, succeeded และ failed แล้วใช้ result URLs
Model API Reference ของ Rivya
ค้นหา Rivya API model IDs, availability, modes ที่รองรับ, parameter tables, prompt limits, reference media rules และลิงก์รายละเอียดโมเดล