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 VIP user message in the window. Rows carry the full message `text` plus a `kind` (text | postback | attachment | other) and `source`. Paged with a `before` timestamp cursor (echo `nextCursor` back as `before`). `workspaceId`, `mediumId`, `from`, and `to` are all **required**; the window is capped at 31 days. The workspace must be a VIP workspace and the channel must be connected to it.
/vip-messagesAuthorization
x-api-key x-date x-signature Your API key (the ApiKeys document id).
In: header
Current timestamp in ISO-8601 (must be fresh — within −5s..+60s of server time).
In: header
HMAC-SHA256 of the x-date string keyed by your secret, lowercase hex.
In: header
Query Parameters
The VIP workspace id (from GET /workspaces).
The channel id (from GET /channels).
Window start — ISO date (e.g. 2026-06-01).
Window end — ISO date (a date-only value is inclusive of that whole day).
A built-in label value (e.g. frustrated) or a custom AI label id.
Narrow to one entry kind.
Max messages per page.
Opaque page cursor — a previous response's nextCursor (an epoch-ms timestamp).
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/vip-messages?workspaceId=string&mediumId=string&from=2019-08-24T14%3A15%3A22Z&to=2019-08-24T14%3A15%3A22Z"{ "items": [ { "timestamp": 0, "date": "2019-08-24T14:15:22Z", "conversationId": "string", "userName": "string", "kind": "text", "source": "string", "labels": [ "string" ], "customLabelIds": [ "string" ], "text": "string" } ], "returned": 0, "mayHaveMore": true, "nextCursor": "string"}{ "message": "string"}{ "message": "string"}{ "message": "string"}{ "message": "string"}{ "error": [ { "message": "string", "path": [ "string" ], "type": "string", "context": {} } ]}Export VIP user messages to CSV
Export all VIP user messages in a window to a CSV uploaded to Storage, and return `{ totalCount, csvUrl }`. Same VIP-workspace gate, optional `label` / `contentType` filters, and 31-day cap as the list route — it returns every matching row rather than a capped page. `workspaceId`, `mediumId`, `from`, and `to` are **required**.
Export VIP users to CSV
Export all matched VIP users to a CSV uploaded to Storage, and return `{ totalCount, csvUrl }`. Same VIP-workspace gate + birthday filters as the list route; serializes every matched row rather than a page. `workspaceId` and `mediumId` are **required**.