Export VIP users to CSV
Export all matched VIP users to a CSV and return `{ totalCount, csvUrl }`. Same filters as the list route, but returns every matched row rather than a page. `scope=all` widens the export to **every conversation on the channel** (the whole audience), not only marked VIPs. Each scope exports to its own deterministic filename (`vip_users_…` / `all_users_…`), so re-exports overwrite within a scope but a VIP export never clobbers an all-audience one.
/vip-users/exportBeta
Authorization
x-api-key x-date x-signature x-api-version Your API key (the ApiKeys document id).
In: header
Current timestamp as an IMF-fixdate string (GMT, US locale) "EEE, dd MMM yyyy HH:mm:ss z", e.g. "Sun, 06 Dec 2020 12:59:11 GMT". 30-second TTL.
In: header
HMAC-SHA256 of the x-date string keyed by your secret, lowercase hex.
In: header
API version you're coding against — currently 1. Required; a missing or unsupported value returns 400 with Missing or unsupported x-api-version header. Supported versions: 1.
In: header
Query Parameters
The VIP workspace id (from GET /workspaces).
The channel id (from GET /channels).
Which users to read: vip (default) — only users marked VIP for the workspace; all — every conversation on the channel (the whole audience).
When true, only users with a known birthday.
Only users whose birthday is in this calendar month.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
Try it
read-onlyKept in this tab only and signed in your browser — your secret never leaves your device.
Query
Enter your key and secret to send.
curl -X GET "https://example.com/vip-users/export?workspaceId=AbC123XyZ&mediumId=FB_PAGE_123456789012345"{ "totalCount": 0, "csvUrl": "string"}{ "message": "string"}{ "message": "string"}{ "message": "string"}{ "message": "string"}{ "error": [ { "message": "string", "path": [ "string" ], "type": "string", "context": {} } ]}{ "message": "string"}List VIP users
The VIP users (players marked VIP for the workspace) on one channel, highest-LTV first, with their profile and personal info (including birthday). Paginated via `limit` + `offset` (`total`, `nextOffset`). VIP workspaces only. `scope=all` widens the read from the workspace's VIP set to **every conversation on the channel** (the whole audience) — same field set, filters, sort, and pagination. A channel bigger than the 25k scan guardrail comes back with `scanCapped: true` (then `total` is a floor). `compact=true` is a bulk projection: each row is trimmed to `conversationId` + `cuid` + `birthday`, and `limit` caps — and defaults — at 5000, so a whole audience fits in one response (CUID joins, birthday sweeps). Same envelope, scan, filters, sort, and pagination; the response stays plain JSON.
List VIP user messages
VIP user messages in a window, newest first. With `label` set, only messages carrying that built-in label value or custom AI label id — the drill-down behind a label-overview count; without it, every message in the window. Paged with a `before` timestamp cursor (echo a response's `nextCursor` back). Window capped at 31 days; VIP workspaces only. `scope=all` widens the scan from the workspace's VIP set to **every conversation active in the window** (the channel's whole audience) — same filters, text derivation, and pagination. A very large channel can hit the 25k-conversation scan guardrail; the response then carries `scanCapped: true` and the window's coverage is partial.