List endpoints return paginated results. Use query parameters to control which page and how many items to return.
Parameters
| Parameter | Type | Default | Max | Description |
|---|
page | integer | 1 | — | Page number (1-indexed) |
limit | integer | 20 | 100 | Items per page |
Example request
curl "https://api.dronelist.io/v1/equipment?page=2&limit=10" \
-H "X-API-Key: dl_your_key_here"
Every paginated response includes a meta.pagination object:
{
"success": true,
"data": [ ... ],
"meta": {
"pagination": {
"page": 2,
"limit": 10,
"total": 42,
"hasMore": true
}
}
}
| Field | Type | Description |
|---|
page | integer | Current page number |
limit | integer | Items per page |
total | integer | Total number of items across all pages |
hasMore | boolean | true if there are more pages after this one |
Paginated endpoints
| Endpoint | Notes |
|---|
GET /v1/equipment | In-memory pagination |
GET /v1/equipment/:id/flights | Native DB pagination (limit/offset) |
GET /v1/projects | In-memory pagination |
Non-paginated endpoints (GET /v1/services) return all results directly without a meta.pagination wrapper.
Iterating through all pages
async function fetchAll(endpoint, apiKey) {
const items = [];
let page = 1;
let hasMore = true;
while (hasMore) {
const res = await fetch(
`https://api.dronelist.io${endpoint}?page=${page}&limit=100`,
{ headers: { 'X-API-Key': apiKey } }
);
const json = await res.json();
items.push(...json.data);
hasMore = json.meta.pagination.hasMore;
page++;
}
return items;
}
Use limit=100 (the maximum) when iterating to minimize the number of requests.