NueForm

Rate Limits

NueForm API rate limits, response headers के साथ अपने usage की निगरानी कैसे करें, और अपनी quota के भीतर रहने की सर्वोत्तम प्रथाएं समझें।

NueForm API उचित उपयोग और प्लेटफॉर्म स्थिरता सुनिश्चित करने के लिए rate limits लागू करता है। Limits प्रति user account sliding window 60 सेकंड के आधार पर लागू होती हैं।

Plan के अनुसार Limits

PlanRequests प्रति मिनटWindow
Pro10060 सेकंड (sliding)
Enterprise50060 सेकंड (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 अनुमत अधिकतम requests100
X-RateLimit-Remainingवर्तमान window में शेष requests87
X-RateLimit-ResetWindow reset होने का ISO 8601 timestamp2026-02-28T14:30:45.000Z

Response headers का उदाहरण:

text
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

json
{
  "error": {
    "code": "RATE_LIMITED",
    "message": "Rate limit exceeded. Please try again later.",
    "status": 429
  }
}

429 Response पर Headers

text
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

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

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 बढ़ाएं।

javascript
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 के लिए अच्छे उम्मीदवार हैं।

javascript
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 का उपयोग करें।

GET/api/v1/forms?per_page=100
पर एक single call 100 अलग-अलग calls से कहीं अधिक कुशल है।

X-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 से संपर्क करें।

PlanRate Limitमूल्य
Pro100 req/min$29/month
Enterprise500 req/min$99/month
Customपरक्राम्यSales से संपर्क करें
अंतिम अपडेट: 6 अप्रैल 2026