डेवलपर गाइड
दर सीमाएं और त्रुटियां
PollsLive API प्रति-कुंजी दर सीमाएं लागू करता है और मशीन-पठनीय कोड के साथ एकसमान JSON त्रुटि ऑब्जेक्ट लौटाता है।
दर सीमाएं
सीमाएं प्रति API कुंजी (या प्रति OAuth क्लाइंट) प्रति मिनट लागू होती हैं। सीमा पार करने पर 429 Too Many Requests मिलता है।
| एंडपॉइंट समूह | सीमा | विंडो |
|---|---|---|
सभी /api/v1/ एंडपॉइंट | 120 अनुरोध | 1 मिनट |
POST /api/v1/polls | 20 अनुरोध (120 के अतिरिक्त) | प्रति कुंजी 1 मिनट |
POST /api/v1/media | 30 अनुरोध | 1 मिनट |
GET /api/v1/polls/{id}/export?format=pdf | 10 अनुरोध | प्रति वर्कस्पेस 1 घंटा |
POST /api/oauth/token | 10 अनुरोध | प्रति client_id 1 मिनट |
अपने इंटीग्रेशन के लिए अधिक सीमाएँ चाहिए? हमारी टीम से संपर्क करें।
एक साथ खुली लाइव सेशन एक अलग सीमा है, अनुरोध-दर सीमा नहीं: Free 1 कक्ष, Pro प्रति प्रस्तुतकर्ता लाइसेंस 1, Premium 2। सीमा पर पहुंचने पर session_limit कोड के साथ 403 मिलता है। दूसरा खोलने से पहले Studio से (या end के साथ POST /api/v1/sessions/{id}/control से) कोई कक्ष समाप्त करें।
दर सीमा हेडर
JSON प्रतिक्रियाओं में दर-सीमा मेटाडेटा हेडर होते हैं:
X-RateLimit-Limit: 120
X-RateLimit-Window: 60sसीमा पार करने पर rate_limited कोड के साथ 429 मिलता है। पुनःप्रयास से पहले रुकें। कोई Retry-After हेडर नहीं है।
त्रुटि प्रतिक्रिया प्रारूप
सभी API त्रुटियां एक JSON बॉडी लौटाती हैं जिसमें नेस्टेड error ऑब्जेक्ट होता है, जिसमें मशीन-पठनीय code और मानव-पठनीय message होते हैं:
HTTP/1.1 404 Not Found
Content-Type: application/json
{
"error": {
"code": "not_found",
"message": "Poll not found."
}
}सत्यापन त्रुटियां त्रुटि ऑब्जेक्ट के भीतर details फ़ील्ड के साथ 422 लौटाती हैं:
{
"error": {
"code": "validation_failed",
"message": "Request validation failed.",
"details": {
"fieldErrors": { "title": ["String must contain at least 1 character(s)"] },
"formErrors": []
}
}
}OAuth टोकन त्रुटियां इसके बजाय RFC 6749 §5.2 प्रारूप का पालन करती हैं:
{
"error": "invalid_client",
"error_description": "Invalid client credentials."
}त्रुटि कोड
| HTTP स्थिति | code | अर्थ |
|---|---|---|
| 400 | invalid_json | अनुरोध बॉडी मान्य JSON नहीं है |
| 401 | missing_authorization | कोई Bearer टोकन नहीं दिया गया |
| 401 | invalid_api_key | अज्ञात या गलत API कुंजी |
| 401 | revoked_api_key | कुंजी रद्द कर दी गई थी |
| 401 | expired_api_key | रोटेशन के बाद कुंजी समाप्त हो गई |
| 401 | invalid_oauth_token | OAuth टोकन अमान्य या समाप्त |
| 402 | upgrade_required | कार्रवाई के लिए सशुल्क प्लान (Pro या उससे ऊपर) चाहिए, या ऐसी सुविधा जो प्लान में शामिल नहीं है (जैसे PDF निर्यात) |
| 403 | insufficient_scope | क्रेडेंशियल के पास वह स्कोप नहीं है जो यह एंडपॉइंट मांगता है |
| 403 | session_limit | वर्कस्पेस में पहले से उसके प्लान जितनी समवर्ती लाइव सेशन खुली हैं (POST /sessions) |
| 404 | not_found | संसाधन नहीं मिला |
| 409 | already_voted | इस voterId ने पोल पर पहले ही वोट कर दिया है (POST /votes) |
| 409 | already_responded | इस मतदाता ने स्लाइड का उत्तर पहले ही दे दिया है (POST /responses) |
| 422 | validation_failed | अनुरोध बॉडी स्कीमा सत्यापन में विफल रही |
| 429 | rate_limited | बहुत अधिक अनुरोध। विंडो रीसेट होने के बाद पुनःप्रयास करें |
| 500 | internal_error | अप्रत्याशित सर्वर त्रुटि |
पुनःप्रयास और प्रतीक्षा
उत्पादन एकीकरणों के लिए हम जिटर के साथ घातीय प्रतीक्षा रणनीति की सलाह देते हैं:
async function fetchWithRetry(url, options, maxRetries = 3) {
for (let attempt = 0; attempt <= maxRetries; attempt++) {
const res = await fetch(url, options);
if (res.status === 429) {
// PollsLive does not send Retry-After, so back off exponentially
// (capped at one minute, the length of a rate-limit window).
const backoff = Math.min(1000 * 2 ** attempt + Math.random() * 500, 60000);
await new Promise((r) => setTimeout(r, backoff));
continue;
}
if (res.status >= 500 && attempt < maxRetries) {
const backoff = Math.min(1000 * 2 ** attempt + Math.random() * 500, 30000);
await new Promise((r) => setTimeout(r, backoff));
continue;
}
return res;
}
throw new Error("Max retries exceeded");
}4xx त्रुटियों (429 को छोड़कर) पर पुनःप्रयास न करें: ये आपके अनुरोध में ऐसी समस्या बताती हैं जो दोहराने से हल नहीं होगी।
OAuth त्रुटि प्रारूप
टोकन एंडपॉइंट (POST /api/oauth/token) RFC 6749 प्रारूप में त्रुटियां लौटाता है:
| error | अर्थ |
|---|---|
invalid_request | अनुपस्थित या विकृत पैरामीटर |
invalid_client | अज्ञात client_id या गलत client_secret |
access_denied | क्लाइंट रद्द है, दर-सीमित है (429), या वर्कस्पेस Free प्लान पर है (402) |
unsupported_grant_type | केवल client_credentials समर्थित है |
अभी भी कोई सवाल है?
हमारी टीम मदद करने में खुश होगी।