Pagination & filtering
Every list endpoint pages the same way, sorts the same way, and can return only what changed since your last sync.
Pages
page— 1-based, default1.per_page— default25, maximum100. Larger values are clamped to 100, not rejected.
The answer carries meta.pagination. Keep requesting the next page
while has_more is true.
Request
curl "https://api.digitalagency.tools/v1/contacts?page=2&per_page=50" \
-H "Authorization: Bearer $DA_API_KEY"
meta
"meta": {
"request_id": "req_…",
"pagination": {
"page": 2,
"per_page": 50,
"count": 50,
"total": 137,
"total_pages": 3,
"has_more": true
}
}
Sorting
sort=field sorts ascending; prefix a minus, sort=-field,
for descending. Each endpoint documents its sortable fields in the
reference; an unknown field answers
invalid_request and lists the allowed ones.
Filtering
Filters are plain query parameters, documented per endpoint — for contacts,
q, type, crm_status and email.
Filters combine with AND.
Newest clients first
curl "https://api.digitalagency.tools/v1/contacts?type=client&sort=-created_at" \
-H "Authorization: Bearer $DA_API_KEY"
Incremental sync with updated_since
Pass an ISO 8601 date-time to get only records changed at or after it. Store the
time you started each sync and use it as the next
updated_since, so nothing changed mid-sync is missed.
Deletions do not appear in a list; subscribe to the
*.deleted webhooks to hear about them.
Request
curl "https://api.digitalagency.tools/v1/contacts?updated_since=2026-11-01T00:00:00Z&sort=updated_at" \
-H "Authorization: Bearer $DA_API_KEY"