Export VIP user messages to CSV
Export all VIP user messages in a window to a CSV and return `{ totalCount, csvUrl }`. Same filters and 31-day cap as the list route, but returns every matching row rather than a capped page. `scope=all` widens the export to **every conversation active in the window**, not only marked VIPs; the response then carries `scanCapped: true` if the 25k-conversation scan guardrail was hit (coverage partial). Each scope exports to its own deterministic filename (`vip_messages_…` / `all_messages_…`), so re-exports overwrite within a scope but a VIP export never clobbers an all-audience one.
/vip-messages/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 conversations to scan: vip (default) — only conversations marked VIP for the workspace; all — every conversation active in the window (the channel's whole audience).
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 or a custom AI label id.
Narrow to one entry kind.
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-messages/export?workspaceId=AbC123XyZ&mediumId=FB_PAGE_123456789012345&startDate=2026-06-01&endDate=2026-06-30"{ "totalCount": 0, "csvUrl": "string", "scanCapped": true}{ "message": "string"}{ "message": "string"}{ "message": "string"}{ "message": "string"}{ "error": [ { "message": "string", "path": [ "string" ], "type": "string", "context": {} } ]}{ "message": "string"}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.
AI conversation-label overview
Per-day (or per-week) counts of AI conversation labels for one VIP workspace's conversations on one channel. An `activity` baseline (all user messages) lets label counts be read as rates. UTC buckets; window capped at 31 days. `scope=all` widens the scan from the workspace's VIP set to **every conversation active in the window** (the channel's whole audience) — same buckets and activity baseline, so label counts can be read as rates over ALL active conversations. A very large channel can hit the 25k-conversation scan guardrail; the response then carries `scanCapped: true` and every number is a floor.