ZeepNotti Docs
API Reference

Devices

Register, update, and remove devices (FCM/APNS tokens) for push delivery.

GET
/v1/apps/{app_id}/devices

Lists devices newest-first, optionally filtered by ?external_user_id= (exact) or ?search= (exact external_user_id OR substring match over tags; search takes precedence when both are present), paginated via ?limit=&cursor=.

Authorization

Path Parameters

app_id*string

App ID

Query Parameters

external_user_id?string

Filter by external user ID (exact match; ignored when search is present)

search?string

Search by external user ID (exact) or tags (substring); takes precedence over external_user_id

limit?integer

Page size (1-100, default 50)

cursor?string

Pagination cursor

Response Body

application/json

curl -X GET "https://example.com/v1/apps/string/devices"
{}
POST
/v1/apps/{app_id}/devices

Registers (upserts) a device token for the App. SDK-facing: authenticated by REST or Client key, never an admin session.

Authorization

Path Parameters

app_id*string

App ID

Request Body

application/json

Device token, platform, and optional external user ID / tags

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/v1/apps/string/devices" \  -H "Content-Type: application/json" \  -d '{}'
{  "app_id": "string",  "created_at": "string",  "external_user_id": "string",  "id": "string",  "platform": "string",  "subscribed": true,  "tags": {    "property1": null,    "property2": null  },  "token": "string",  "updated_at": "string"}
GET
/v1/apps/{app_id}/devices/{id}

Fetches a single device by ID, scoped to the App.

Authorization

Path Parameters

app_id*string

App ID

id*string

Device ID

Response Body

application/json

curl -X GET "https://example.com/v1/apps/string/devices/string"
{  "app_id": "string",  "created_at": "string",  "external_user_id": "string",  "id": "string",  "platform": "string",  "subscribed": true,  "tags": {    "property1": null,    "property2": null  },  "token": "string",  "updated_at": "string"}
PATCH
/v1/apps/{app_id}/devices/{id}

Updates a device's subscription flag, tags, or external user ID. When authenticated by a Client key, the request must also carry the device's own token as proof of ownership.

Authorization

Path Parameters

app_id*string

App ID

id*string

Device ID

Request Body

application/json

Fields to update

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X PATCH "https://example.com/v1/apps/string/devices/string" \  -H "Content-Type: application/json" \  -d '{}'
{  "app_id": "string",  "created_at": "string",  "external_user_id": "string",  "id": "string",  "platform": "string",  "subscribed": true,  "tags": {    "property1": null,    "property2": null  },  "token": "string",  "updated_at": "string"}
DELETE
/v1/apps/{app_id}/devices/{id}

Soft-deletes a device. Session-only (no REST/Client key path). Fails if the device still has delivery records.

Authorization

SessionAuth

Path Parameters

app_id*string

App ID

id*string

Device ID

Response Body

curl -X DELETE "https://example.com/v1/apps/string/devices/string"
Empty