Carillon docs

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: ios or android.
  • status: reachable, opted_out or invalidated.

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:

StatusDerived from
invalidatedinvalidated_at is not null; invalidation_reason says why
opted_outopted_in is false
reachableNeither 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.

On this page