Pagination
List endpoints in the neuroflash API support pagination using page and size query parameters.
Request Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number (1-based) |
size | integer | 20 | Number of items per page (max varies by endpoint, typically 200) |
sort | string | varies | Field to sort by (e.g., name, createdAt, updatedAt) |
order | string | varies | Sort direction: asc or desc |
Response Format
Paginated responses include a page object with metadata:
{
"data": [
{ "id": "abc-123", "name": "Example item" },
{ "id": "def-456", "name": "Another item" }
],
"page": {
"size": 20,
"totalElements": 42,
"totalPages": 3,
"currentPage": 1
}
}
| Field | Description |
|---|---|
data | Array of resources for the current page |
page.size | Number of items per page |
page.totalElements | Total number of items across all pages |
page.totalPages | Total number of pages |
page.currentPage | Current page number (1-based) |
Example: Paginating Through Results
- cURL
- Python
- Node.js
- Go
# Get the first page (20 items)
curl "https://app.neuroflash.com/api/digital-twin-service/v1/workspaces/{workspace_id}/static-groups/millennials/twins?page=1&size=20" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
# Get the second page
curl "https://app.neuroflash.com/api/digital-twin-service/v1/workspaces/{workspace_id}/static-groups/millennials/twins?page=2&size=20" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"
import requests
BASE_URL = "https://app.neuroflash.com/api"
headers = {"Authorization": f"Bearer {token}"}
def get_all_twins(workspace_id, group_key):
"""Fetch all twins across all pages."""
all_twins = []
page = 1
while True:
response = requests.get(
f"{BASE_URL}/digital-twin-service/v1/workspaces/{workspace_id}/static-groups/{group_key}/twins",
headers=headers,
params={"page": page, "size": 50},
)
data = response.json()
all_twins.extend(data["data"])
if page >= data["page"]["totalPages"]:
break
page += 1
return all_twins
twins = get_all_twins("your-workspace-id", "millennials")
print(f"Total twins: {len(twins)}")
const BASE_URL = "https://app.neuroflash.com/api";
async function getAllTwins(workspaceId, groupKey) {
const allTwins = [];
let page = 1;
while (true) {
const response = await fetch(
`${BASE_URL}/digital-twin-service/v1/workspaces/${workspaceId}/static-groups/${groupKey}/twins?page=${page}&size=50`,
{ headers: { Authorization: `Bearer ${token}` } }
);
const data = await response.json();
allTwins.push(...data.data);
if (page >= data.page.totalPages) break;
page++;
}
return allTwins;
}
const baseURL = "https://app.neuroflash.com/api"
func getAllTwins(token, workspaceID, groupKey string) ([]json.RawMessage, error) {
var allTwins []json.RawMessage
page := 1
for {
url := fmt.Sprintf("%s/digital-twin-service/v1/workspaces/%s/static-groups/%s/twins?page=%d&size=50",
baseURL, workspaceID, groupKey, page)
req, _ := http.NewRequest("GET", url, nil)
req.Header.Set("Authorization", "Bearer "+token)
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
var result struct {
Data []json.RawMessage `json:"data"`
Page struct {
TotalPages int `json:"totalPages"`
} `json:"page"`
}
json.NewDecoder(resp.Body).Decode(&result)
allTwins = append(allTwins, result.Data...)
if page >= result.Page.TotalPages {
break
}
page++
}
return allTwins, nil
}
Filtering and Sorting
Many list endpoints support additional query parameters for filtering and sorting. Check each endpoint's documentation for available options.
# List twins sorted by name descending, 10 per page
curl "https://app.neuroflash.com/api/digital-twin-service/v1/workspaces/{workspace_id}/static-groups/gen_z/twins?page=1&size=10&order=desc" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN"