API Errors and Limits
Rivya API public error codes, HTTP status values, rate limits, idempotency conflicts এবং retry decisions handle করুন।
শেষ review 2026/05/11
Rivya API JSON-এ stable public error codes return করে। integration contract হিসেবে error.code value ব্যবহার করুন।
Error Shape
{
"error": {
"code": "api_key_missing",
"message": "A valid Bearer API key is required.",
"requestId": "req_..."
}
}failed API request তদন্তের জন্য Rivya support-কে বলার সময় আপনার logs-এ requestId রাখুন।
Stable Error Codes
| Code | HTTP status | Meaning | Suggested action |
|---|---|---|---|
public_api_disabled | 503 | Public API calls temporarily disabled। | পরে retry করুন বা Studio manually ব্যবহার করুন। |
api_key_missing | 401 | request-এ Bearer API key নেই। | Authorization: Bearer rvya_sk_... পাঠান। |
api_key_invalid | 401 | key verify করা যাচ্ছে না। | key check করুন এবং দরকার হলে rotate করুন। |
api_key_revoked | 401 | key Settings-এ revoked হয়েছে। | new key তৈরি করুন। |
api_key_expired | 401 | key আর valid নয়। | new key তৈরি করুন। |
api_scope_denied | 403 | key-তে required scope নেই। | needed scope সহ key তৈরি করুন। |
rate_limited | 429 | current window-এ too many requests। | back off করে পরে retry করুন। |
validation_failed | 400 | body, model, prompt বা params invalid। | model reference-এর সঙ্গে body compare করুন। |
not_found | 404 | requested task নেই বা account-এর নয়। | public task ID এবং account boundary check করুন। |
webhook_url_rejected | 400 | webhook endpoint URL allowed নয়। | credentials, fragments, localhost বা private network addresses ছাড়া HTTPS public URL ব্যবহার করুন। |
chat_model_not_supported | 400 | selected model Chat API-এর জন্য available নয়। | /api/v1/models read করুন এবং available chat model বেছে নিন। |
chat_session_conflict | 409 | chat session এই request-এর জন্য ব্যবহার করা যাবে না। | একই account এবং model-এর API-created session ব্যবহার করুন। |
chat_attachment_not_supported | 400 | chat attachment supported নয়। | Files API দিয়ে image upload করুন এবং তার file_id pass করুন। |
idempotency_conflict | 409 | একই idempotency key ভিন্ন input দিয়ে reuse করা হয়েছে। | new key ব্যবহার করুন বা exact same body resend করুন। |
insufficient_credits | 402 | account-এ যথেষ্ট credits নেই। | credits যোগ করুন বা lower-cost request বেছে নিন। |
internal_error | 500 | request complete করা যায়নি। | idempotency সহ retry করুন বা requestId দিয়ে support-এ contact করুন। |
Rate Limits
Rivya প্রতি API key অনুযায়ী application-level Public API rate limits apply করে। default production limit PUBLIC_API_RATE_LIMIT_PER_MINUTE দিয়ে configured।
rate_limited পেলে exponential backoff ব্যবহার করুন। tight loop-এ retry করবেন না।
Idempotent Retries
প্রতিটি production POST /api/v1/generations এবং POST /api/v1/chat/completions request-এর সঙ্গে Idempotency-Key পাঠান।
Recommended pattern:
- প্রতি logical generation request-এর জন্য unique key generate করুন
- একই body retry করার সময়ই শুধু same key reuse করুন
- returned public task ID আপনার job record-এ store করুন
- Chat API-এর জন্য একই conversation continue করতে চাইলে returned
session_idstore করুন - এক key ভিন্ন model, prompt বা params-এর জন্য reuse করবেন না
submission-এর পরে network fail করলে same body এবং same Idempotency-Key দিয়ে retry করুন। Rivya duplicate task create না করে stored public response return করতে পারে।
Retry Decisions
এগুলো backoff সহ retry করুন:
public_api_disabledrate_limitedinternal_error- temporary network failures
input না বদলে এগুলো retry করবেন না:
api_key_invalidapi_key_revokedapi_scope_deniedvalidation_failedwebhook_url_rejectedchat_model_not_supportedchat_session_conflictchat_attachment_not_supportedidempotency_conflictinsufficient_credits