Digital Agency Tools Docs

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, default 1.
  • per_page — default 25, maximum 100. 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"