Chat API
non-streaming বা SSE turns, API-created sessions, file_id image attachments এবং token-based credit settlement-এর জন্য Rivya Chat API ব্যবহার করুন।
শেষ review 2026/05/11
একটি complete non-streaming chat response-এর জন্য POST /api/v1/chat/completions ব্যবহার করুন, অথবা Server-Sent Events-এর জন্য POST /api/v1/chat/completions/stream ব্যবহার করুন।
Chat API session-based। নতুন API chat session শুরু করতে session_id বাদ দিন। একই API-created session চালিয়ে যেতে returned session_id pass করুন।
Current Scope
Chat API v1 support করে:
- non-streaming assistant responses
text/event-streamসহ SSE streaming- API-created chat sessions
- account credit reservation এবং final token-based settlement
- selected model support করলে optional web search, reasoning effort এবং thought mode
- Files API
file_idvalues দিয়ে image attachments
Chat API v1 support করে না:
- user-supplied raw
messageshistory - Studio-only chat sessions continue করা
- arbitrary external attachment URLs
- Chat webhook events
Required Scopes
এই scopes থাকা API key ব্যবহার করুন:
chat:create
chat:readSettings-এ তৈরি নতুন keys defaultভাবে দুইটি scopes অন্তর্ভুক্ত করে। Chat API call করার আগে older keys recreate করতে হতে পারে।
Create A Chat Completion
curl https://rivya.ai/api/v1/chat/completions \
-H "Authorization: Bearer rvya_sk_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: chat-turn-001" \
-d '{
"model": "gpt-5-2-chat",
"message": "Write a concise launch plan for a new product image campaign",
"client_request_id": "chat-001"
}'Response:
{
"id": "chatcmpl_...",
"object": "chat.completion",
"session_id": "session_id",
"model": "gpt-5-2-chat",
"created_at": "2026-05-11T00:00:00.000Z",
"message": {
"id": "assistant_message_id",
"role": "assistant",
"content": "..."
},
"usage": {
"input_tokens": 1200,
"output_tokens": 320,
"total_tokens": 1520
},
"credits": {
"reserved": 3,
"final": 2
}
}Stream A Chat Completion
আপনার server assistant deltas আসার সঙ্গে সঙ্গে পেতে চাইলে POST /api/v1/chat/completions/stream ব্যবহার করুন:
curl -N https://rivya.ai/api/v1/chat/completions/stream \
-H "Authorization: Bearer rvya_sk_..." \
-H "Content-Type: application/json" \
-H "Accept: text/event-stream" \
-H "Idempotency-Key: chat-stream-001" \
-d '{
"model": "gpt-5-2-chat",
"message": "Write a concise launch plan for a new product image campaign",
"client_request_id": "chat-stream-001"
}'Streaming responses Content-Type: text/event-stream; charset=utf-8 ব্যবহার করে।
Events:
| Event | Meaning |
|---|---|
session.created | API key, model, session, attachments, rate limit এবং credit reservation checks pass করেছে। |
message.delta | assistant message-এর display delta। এটি এখনও committed message নয়। |
message.completed | assistant message API-created session-এ committed হয়েছে। |
usage.completed | Token usage এবং final credits settled হয়েছে। |
heartbeat | দীর্ঘ pause-এর সময় keepalive event। |
error | streaming শুরু হওয়ার পর failure হলে public API error envelope। |
done | stream সফলভাবে complete হয়েছে। |
Example stream:
event: session.created
data: {"request_id":"req_...","session_id":"session_id","model":"gpt-5-2-chat"}
event: message.delta
data: {"request_id":"req_...","session_id":"session_id","delta":"Draft ","index":0}
event: message.completed
data: {"request_id":"req_...","session_id":"session_id","message":{"id":"assistant_message_id","role":"assistant","content":"Draft ...","created_at":"2026-05-11T00:00:00.000Z"}}
event: usage.completed
data: {"request_id":"req_...","session_id":"session_id","usage":{"input_tokens":1200,"output_tokens":320,"total_tokens":1520},"credits":{"reserved":3,"final":2}}
event: done
data: {"request_id":"req_...","ok":true}প্রথম SSE event-এর পরে error ঘটলে stream event: error পাঠায় এবং তারপর close করে:
event: error
data: {"error":{"code":"internal_error","message":"The request could not be completed.","requestId":"req_..."}}client completion-এর আগে disconnect করলে Rivya সম্ভব হলে in-flight generation stream stop করে। Partial deltas final assistant message হিসেবে save হয় না। server ইতিমধ্যে message.completed commit করে থাকলে final result পরে GET /api/v1/chat/sessions/{sessionId} দিয়ে read করা যায়।
Continue A Session
returned session_id ব্যবহার করুন:
curl https://rivya.ai/api/v1/chat/completions \
-H "Authorization: Bearer rvya_sk_..." \
-H "Content-Type: application/json" \
-H "Idempotency-Key: chat-turn-002" \
-d '{
"model": "gpt-5-2-chat",
"session_id": "session_id",
"message": "Now turn that into a 5-step execution checklist."
}'session-টি একই Rivya account-এর হতে হবে এবং Public API দিয়ে created হতে হবে। Studio-only chat sessions Chat API return বা continue করে না।
Image Attachments
Chat attachments external URLs নয়, Files API records ব্যবহার করে।
POST /api/v1/filesদিয়ে image upload করুন।- returned
id-টিattachments[].file_idহিসেবে ব্যবহার করুন।
{
"model": "gpt-5-2-chat",
"message": "Review this product photo and suggest a cleaner editorial direction.",
"attachments": [
{
"file_id": "file_..."
}
]
}file-টি একই account-এর হতে হবে, kind: "image" থাকতে হবে এবং available হতে হবে। image attachments support না করা models chat_attachment_not_supported return করে।
Optional Controls
{
"model": "gpt-5-2-chat",
"message": "Compare three launch options.",
"enable_web_search": false,
"reasoning_effort": "default",
"thought_mode": "default"
}Control support model অনুযায়ী বদলায়। আপনার UI-তে controls expose করার আগে /api/v1/models read করুন এবং chat_capabilities check করুন।
List Sessions
chat:read থাকা key দিয়ে GET /api/v1/chat/sessions ব্যবহার করুন।
curl https://rivya.ai/api/v1/chat/sessions \
-H "Authorization: Bearer rvya_sk_..."এটি শুধু API-created sessions return করে:
{
"object": "list",
"data": [
{
"id": "session_id",
"object": "chat.session",
"model": "gpt-5-2-chat",
"tool_slug": null,
"title": "Write a concise launch plan...",
"controls": {
"enable_web_search": false,
"reasoning_effort": null,
"thought_mode": null
},
"created_at": "2026-05-11T00:00:00.000Z",
"updated_at": "2026-05-11T00:00:00.000Z",
"last_message_at": "2026-05-11T00:00:00.000Z"
}
]
}Get A Session
একটি API-created session এবং তার committed messages read করতে GET /api/v1/chat/sessions/{sessionId} ব্যবহার করুন।
curl https://rivya.ai/api/v1/chat/sessions/session_id \
-H "Authorization: Bearer rvya_sk_..."response committed user এবং assistant messages অন্তর্ভুক্ত করে। এটি internal provider fields expose করে না।
Idempotency
প্রতিটি production POST /api/v1/chat/completions এবং POST /api/v1/chat/completions/stream request-এর জন্য Idempotency-Key ব্যবহার করুন।
retry একই key এবং একই body ব্যবহার করলে Rivya another message create বা credits আবার consume না করে stored response return করতে পারে। একই key ভিন্ন input দিয়ে reuse করলে API idempotency_conflict return করে।
streaming retries-এর জন্য Rivya historical token deltas replay করে না। completed replay একটি minimal SSE sequence return করে, যেখানে session.created, message.completed, usage.completed এবং done থাকে।
Common Errors
| Code | Meaning |
|---|---|
chat_model_not_supported | selected model Chat API-এর জন্য available নয়। |
chat_session_conflict | এই request-এর জন্য session ব্যবহার করা যাবে না। |
chat_attachment_not_supported | attachment missing, account-এর নয়, image নয়, বা model support করে না। |
insufficient_credits | turn-এর জন্য account-এ পর্যাপ্ত credits নেই। |
idempotency_conflict | idempotency key ভিন্ন input দিয়ে reuse করা হয়েছে। |