API reference
The supported public endpoints, required scopes, response envelope, and format conventions.
Base URL#
All requests use HTTPS. Send Bearer authentication for every endpoint. JSON requests require Content-Type: application/json; send operations also require Idempotency-Key. These are server-to-server APIs; do not expose keys in browser applications.
https://turbinewhats.app/api/v1Supported endpoints#
The catalog below describes the public v1 surface. Workspace-only configuration endpoints use browser authentication and are not presented as a public API.
/channelsreadList sessions owned by your account and allowed by this key.
Request and response details/channelsmanageCreate a session and queue its preparation. An account-wide management key is required.
Request and response details/channels/{id}/qrmanageRetrieve the pairing QR code after session preparation.
Request and response details/channels/{id}/startmanageStart an existing session. Pairing may be required.
Request and response details/channels/{id}/deletemanageQueue session deletion and logout. This does not cancel billing.
Request and response details/messages/documentsend · paidQueue a PDF document provided as base64.
Request and response details/messages/{id}readRead a message state using its TurbineWhats.app message ID.
Request and response details/channels/{id}/contactsreadRead contact data available from the connected account.
Request and response details/channels/{id}/groupsreadRead groups available from the connected account.
Request and response details/channels/{id}/chatsreadRead chats available from the connected account.
Request and response detailsResponse conventions#
Successful responses use a data envelope. Creating a session returns HTTP 200 and a queued state. Queuing a message returns HTTP 202; that status also applies when an idempotent replay returns an existing message state.
Errors use an error envelope with code and message. Session and message IDs are TurbineWhats.app UUIDs. Times are serialized as ISO date-time strings. Request field names use snake_case; the gateway-derived QR response uses qrCode and status.