सभी NueForm API endpoints जो resources की lists लौटाते हैं, page-based pagination सपोर्ट करते हैं। यह गाइड query parameters, response format, और सभी results को iterate करने के patterns को कवर करती है।
Query Parameters
दो query parameters के साथ pagination को नियंत्रित करें:
| Parameter | Type | Default | विवरण |
|---|---|---|---|
page | integer | 1 | प्राप्त करने के लिए page number (1-indexed)। |
per_page | integer | 20 | प्रति page items की संख्या। न्यूनतम: 1, अधिकतम: 100। |
यदि per_page 100 से अधिक है, तो API इसे स्वचालित रूप से 100 पर cap करता है। 1 से कम values 1 पर default होती हैं।
Request उदाहरण
/api/v1/forms?page=2&per_page=25curl -X GET "https://app.nueform.com/api/v1/forms?page=2&per_page=25" \
-H "Authorization: Bearer nf_your_api_key_here"
Response Format
Paginated responses में data array के साथ एक meta object शामिल होता है:
{
"data": [
{
"id": "clx1abc2d3e4f5g6h7i8j9k0",
"title": "Customer Feedback",
"status": "published",
"created_at": "2026-01-15T09:30:00.000Z"
},
{
"id": "clx2def3g4h5i6j7k8l9m0n1",
"title": "Employee Survey",
"status": "draft",
"created_at": "2026-01-20T14:00:00.000Z"
}
],
"meta": {
"page": 2,
"per_page": 25,
"total": 73,
"total_pages": 3
}
}
Meta Fields
| Field | Type | विवरण |
|---|---|---|
page | integer | वर्तमान page number। |
per_page | integer | प्रति page items की संख्या (जैसा लागू किया गया)। |
total | integer | सभी pages में कुल items की संख्या। |
total_pages | integer | कुल pages की संख्या (ceil(total / per_page) से गणना)। |
सभी Pages को Iterate करना
जब आपको किसी list endpoint से प्रत्येक item प्राप्त करना हो, तो page total_pages से अधिक होने तक pages को iterate करें।
JavaScript
async function fetchAllForms() {
const allForms = [];
let page = 1;
let totalPages = 1;
do {
const response = await fetch(
`https://app.nueform.com/api/v1/forms?page=${page}&per_page=100`,
{
headers: {
"Authorization": `Bearer ${process.env.NUEFORM_API_KEY}`,
},
}
);
const { data, meta } = await response.json();
allForms.push(...data);
totalPages = meta.total_pages;
page++;
} while (page <= totalPages);
console.log(`Fetched ${allForms.length} forms in total.`);
return allForms;
}
Python
import os
import requests
API_KEY = os.environ["NUEFORM_API_KEY"]
BASE_URL = "https://app.nueform.com/api/v1"
def fetch_all_forms():
all_forms = []
page = 1
total_pages = 1
while page <= total_pages:
response = requests.get(
f"{BASE_URL}/forms",
headers={"Authorization": f"Bearer {API_KEY}"},
params={"page": page, "per_page": 100},
)
body = response.json()
all_forms.extend(body["data"])
total_pages = body["meta"]["total_pages"]
page += 1
print(f"Fetched {len(all_forms)} forms in total.")
return all_forms
Async Generator (JavaScript)
बड़े datasets के लिए, सब कुछ memory में load करने के बजाय items आते ही प्रोसेस करने के लिए async generator का उपयोग करें:
async function* paginatedForms(perPage = 100) {
let page = 1;
let totalPages = 1;
do {
const response = await fetch(
`https://app.nueform.com/api/v1/forms?page=${page}&per_page=${perPage}`,
{
headers: {
"Authorization": `Bearer ${process.env.NUEFORM_API_KEY}`,
},
}
);
const { data, meta } = await response.json();
totalPages = meta.total_pages;
for (const form of data) {
yield form;
}
page++;
} while (page <= totalPages);
}
// उपयोग
for await (const form of paginatedForms()) {
console.log(`Processing: ${form.title}`);
}
Edge Cases
खाली Results
यदि कोई भी item query से match नहीं करता, तो API total: 0 के साथ एक खाली data array लौटाता है:
{
"data": [],
"meta": {
"page": 1,
"per_page": 20,
"total": 0,
"total_pages": 0
}
}
Total से अधिक Page
total_pages से अधिक page number request करने पर एक खाली data array लौटता है। meta values अभी भी समग्र collection को दर्शाती हैं:
{
"data": [],
"meta": {
"page": 10,
"per_page": 20,
"total": 73,
"total_pages": 4
}
}
अमान्य Parameters
अमान्य pagination parameters को gracefully handle किया जाता है:
| Input | व्यवहार |
|---|---|
page=0 या page=-1 | 1 पर default |
page=abc | 1 पर default |
per_page=0 या per_page=-5 | 1 पर default |
per_page=500 | 100 पर cap |
per_page=abc | 20 पर default |
सर्वोत्तम प्रथाएं
Bulk retrieval के लिए अधिकतम per_page का उपयोग करें
सभी resources fetch करते समय, API calls की संख्या कम करने के लिए per_page=100 सेट करें। प्रत्येक call आपकी rate limit के विरुद्ध गिनी जाती है।
Iterate करने से पहले total_pages जांचें
कब रुकना है यह निर्धारित करने के लिए हमेशा meta object से total_pages पढ़ें। अनिश्चित काल तक iterate न करें या fixed number of pages assume न करें।
बड़े datasets के लिए requests के बीच delay जोड़ें
यदि आप कई pages fetch कर रहे हैं, तो rate limits से बचने के लिए requests के बीच एक छोटा delay जोड़ें:
// Page requests के बीच 200ms delay जोड़ें
await new Promise((resolve) => setTimeout(resolve, 200));
उचित होने पर total को cache करें
यदि आपको केवल कुल गिनती चाहिए (जैसे, "47 forms" प्रदर्शित करने के लिए), तो data transfer कम करने के लिए per_page=1 request करें और meta.total पढ़ें:
curl -X GET "https://app.nueform.com/api/v1/forms?per_page=1" \
-H "Authorization: Bearer nf_your_api_key_here"
Pagination results प्रत्येक request के समय data की स्थिति को दर्शाते हैं। यदि page requests के बीच items बनाए या हटाए जाते हैं, तो आपको duplicates दिख सकते हैं या items छूट सकते हैं। Consistent snapshots के लिए, सभी pages जल्दी fetch करें या रियल-टाइम अपडेट के लिए webhooks का उपयोग करें।