NueForm API उचित उपयोग और प्लेटफॉर्म स्थिरता सुनिश्चित करने के लिए rate limits लागू करता है। Limits प्रति user account sliding window 60 सेकंड के आधार पर लागू होती हैं।
Plan के अनुसार Limits
| Plan | Requests प्रति मिनट | Window |
|---|---|---|
| Pro | 100 | 60 सेकंड (sliding) |
| Enterprise | 500 | 60 सेकंड (sliding) |
Rate limits account level पर लागू होती हैं, प्रति API key नहीं। यदि आपके पास एक से अधिक keys हैं, तो वे एक ही rate limit quota साझा करती हैं।
Rate Limit Headers
प्रत्येक API response में rate limit headers शामिल होते हैं ताकि आप अपने usage की रियल-टाइम निगरानी कर सकें:
| Header | विवरण | उदाहरण |
|---|---|---|
X-RateLimit-Limit | प्रति window अनुमत अधिकतम requests | 100 |
X-RateLimit-Remaining | वर्तमान window में शेष requests | 87 |
X-RateLimit-Reset | Window reset होने का ISO 8601 timestamp | 2026-02-28T14:30:45.000Z |
Response headers का उदाहरण:
HTTP/1.1 200 OK
Content-Type: application/json
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 2026-02-28T14:30:45.000Z
जब आप Rate Limited हों
यदि आप अपनी rate limit पार कर जाते हैं, तो API 429 Too Many Requests response लौटाता है। Response में standard rate limit headers के साथ एक Retry-After header भी शामिल होता है जो बताता है कि retry करने से पहले कितने सेकंड प्रतीक्षा करनी है।
Response
{
"error": {
"code": "RATE_LIMITED",
"message": "Rate limit exceeded. Please try again later.",
"status": 429
}
}
429 Response पर Headers
HTTP/1.1 429 Too Many Requests
Content-Type: application/json
X-RateLimit-Limit: 100
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 2026-02-28T14:31:12.000Z
Retry-After: 27
Retry-After value आपकी वर्तमान window में सबसे पुरानी request expire होने और capacity free होने तक के सेकंडों की संख्या है।
Usage की निगरानी
Limit तक पहुँचने से बचने के लिए rate limit headers का सक्रिय रूप से उपयोग करें:
JavaScript
async function callApi(url, options = {}) {
const response = await fetch(url, {
...options,
headers: {
"Authorization": `Bearer ${process.env.NUEFORM_API_KEY}`,
"Content-Type": "application/json",
...options.headers,
},
});
// Rate limit status log करें
const remaining = response.headers.get("X-RateLimit-Remaining");
const limit = response.headers.get("X-RateLimit-Limit");
console.log(`Rate limit: ${remaining}/${limit} remaining`);
if (response.status === 429) {
const retryAfter = parseInt(response.headers.get("Retry-After"), 10);
console.warn(`Rate limited. Retrying in ${retryAfter} seconds...`);
await new Promise((resolve) => setTimeout(resolve, retryAfter * 1000));
return callApi(url, options); // Retry
}
return response;
}
Python
import os
import time
import requests
API_KEY = os.environ["NUEFORM_API_KEY"]
BASE_URL = "https://app.nueform.com/api/v1"
def call_api(path, method="GET", **kwargs):
url = f"{BASE_URL}{path}"
headers = {
"Authorization": f"Bearer {API_KEY}",
"Content-Type": "application/json",
}
response = requests.request(method, url, headers=headers, **kwargs)
# Rate limit status log करें
remaining = response.headers.get("X-RateLimit-Remaining")
limit = response.headers.get("X-RateLimit-Limit")
print(f"Rate limit: {remaining}/{limit} remaining")
if response.status_code == 429:
retry_after = int(response.headers.get("Retry-After", 5))
print(f"Rate limited. Retrying in {retry_after} seconds...")
time.sleep(retry_after)
return call_api(path, method, **kwargs) # Retry
return response
सर्वोत्तम प्रथाएं
Exponential backoff implement करें
जब आपको 429 response मिले, तो तुरंत retry करने के बजाय exponential backoff का उपयोग करें। Retry-After value से शुरू करें और प्रत्येक बाद के retry के साथ delay बढ़ाएं।
async function fetchWithBackoff(url, options = {}, maxRetries = 3) {
for (let attempt = 0; attempt <= maxRetries; attempt++) {
const response = await fetch(url, {
...options,
headers: {
"Authorization": `Bearer ${process.env.NUEFORM_API_KEY}`,
"Content-Type": "application/json",
...options.headers,
},
});
if (response.status !== 429) {
return response;
}
if (attempt === maxRetries) {
throw new Error("Max retries exceeded due to rate limiting");
}
const retryAfter = parseInt(
response.headers.get("Retry-After") || "5",
10
);
const backoff = retryAfter * Math.pow(2, attempt);
console.warn(`Rate limited. Retry attempt ${attempt + 1} in ${backoff}s`);
await new Promise((resolve) => setTimeout(resolve, backoff * 1000));
}
}
Responses cache करें
Locally responses cache करके अनावश्यक API calls से बचें। Form definitions और theme configurations कम ही बदलती हैं और caching के लिए अच्छे उम्मीदवार हैं।
const cache = new Map();
const CACHE_TTL = 5 * 60 * 1000; // 5 मिनट
async function getCachedForm(formId) {
const cacheKey = `form_${formId}`;
const cached = cache.get(cacheKey);
if (cached && Date.now() - cached.timestamp < CACHE_TTL) {
return cached.data;
}
const response = await fetch(
`https://app.nueform.com/api/v1/forms/${formId}`,
{
headers: {
"Authorization": `Bearer ${process.env.NUEFORM_API_KEY}`,
},
}
);
const { data } = await response.json();
cache.set(cacheKey, { data, timestamp: Date.now() });
return data;
}
रियल-टाइम data के लिए webhooks का उपयोग करें
नए form responses के लिए API को poll करने के बजाय, submissions आने पर नोटिफिकेशन प्राप्त करने के लिए webhooks सेट अप करें। यह दोहराए जाने वाले polling requests को खत्म करता है और data तेज़ी से deliver करता है।
जब संभव हो batch operations करें
यदि आपको एक से अधिक resources प्राप्त करने हैं, तो प्रत्येक resource के लिए अलग-अलग requests करने के बजाय pagination के साथ list endpoints का उपयोग करें।
/api/v1/forms?per_page=100X-RateLimit-Remaining header की निगरानी करें
अपनी शेष quota track करें और limit तक पहुँचने से पहले अपनी requests को throttle करें। यदि X-RateLimit-Remaining 10 से नीचे गिरता है, तो requests के बीच एक छोटा delay जोड़ने पर विचार करें।
Rate limits सभी users के लिए प्लेटफॉर्म की सुरक्षा करती हैं। जो applications लगातार rate limits पार करते हैं या उन्हें circumvent करने का प्रयास करते हैं, उनका API एक्सेस suspend किया जा सकता है। यदि आपको उच्च limits चाहिए, तो Enterprise plan पर अपग्रेड करने या support से संपर्क करने पर विचार करें।
अपनी Rate Limit अपग्रेड करना
यदि आपको 100 requests प्रति मिनट से अधिक चाहिए, तो 500 requests प्रति मिनट के लिए Enterprise plan पर अपग्रेड करें। Enterprise से अधिक limits के लिए, custom arrangements पर चर्चा करने के लिए हमारी sales team से संपर्क करें।
| Plan | Rate Limit | मूल्य |
|---|---|---|
| Pro | 100 req/min | $29/month |
| Enterprise | 500 req/min | $99/month |
| Custom | परक्राम्य | Sales से संपर्क करें |