Export devices
Read devices with your backend's secret key using stable cursor pagination.
Use a secret key from the app you want to export. Mobile keys cannot list or read devices. Keep exported tokens and user identifiers in your own protected storage.
curl 'https://api.carillon.dev/v1/devices?limit=1000' \-H "Authorization: Bearer carillon_sk_live_your_secret_key"The response contains devices and next_cursor. Devices include the full token,
external ID, tags, locale, timezone, platform, version fields and activity timestamps.
Request the next page with ?limit=1000&cursor=NEXT_CURSOR, until next_cursor is null.
Rows are ordered by device ID, independently of last activity. This is a live export, not a frozen snapshot: registrations during an export may appear in later pages. The default page size is 100; the maximum is 1,000. The secret-key rate limit is 600 requests per minute per API instance.
Filter the export
external_id: exact user identifier, URL-encoded when needed.platform:iosorandroid.status:reachable,opted_outorinvalidated.
Filters combine. Keep the same filters when requesting the next page. reachable
requires opt-in, no invalidation and activity within the last 30 days.
status is a filter, not a field: a returned device does not carry it. Derive it from the
fields it does carry, in this order:
| Status | Derived from |
|---|---|
invalidated | invalidated_at is not null; invalidation_reason says why |
opted_out | opted_in is false |
reachable | Neither of the above, and last_active_at is within the last 30 days |
A device that is opted in, not invalidated, and inactive for 30 days or more matches none of the three filters; it is still returned by an unfiltered export.
To read one device, use GET /v1/devices/{id} with the same secret key.
An unknown ID, including an ID from another app, returns 404.
Delete devices
With a secret key carrying the devices:delete scope:
curl -X DELETE https://api.carillon.dev/v1/devices/01937b1e-0000-7000-8000-000000000000 \-H "Authorization: Bearer carillon_sk_live_your_secret_key"204, whether or not the device existed. To delete every device of one user:
curl -X DELETE 'https://api.carillon.dev/v1/devices?external_id=user-42' \-H "Authorization: Bearer carillon_sk_live_your_secret_key"{ "deleted": 2 }Deliveries and the current month's usage are kept; see deleting a device.