Agent-readable docs index: /docs/llms.txt. Full docs in one file: /docs/llms-full.txt. Download /docs/docs.zip to grep all markdown files locally.

Channels and media

A connection represents an account inbox and its channel. Use GET /api/v2/connections to discover the connections granted to your key. Each connection reports its supported content types, transport, attachment count, and text limit. Check these capabilities before constructing a message.

Send text and media

Upload bytes to POST /api/v2/media with media:write, then reference the returned opaque ID in an image, file, audio, or video part when sending a message. Sending requires messages:write; accessing the referenced media requires media:read. Uploads remain restricted to the application and granted inboxes. Existing conversation attachments can also be read and reused when authorized.
Messages accept one text part and up to five attachments, subject to the connection's limits. The common text limit is 1,000 characters, and the upload limit is 20 MB. Attachments must match their declared content type. See the quickstart for a PDF example.
ConnectionMedia and channel rules
API chat and website chatText, images, documents, audio, video; customer ingress uses a contact session
Telegram, WhatsApp, emailText and supported media through the existing provider adapters
LinkedInExisting imported threads; up to five supported images or PDFs, 15 MB each
X ChatText on existing imported threads
LINEImages and video
InstagramImages, audio, and video
TikTokText or one supported image/video attachment per message
SMS and TwilioProvider-dependent media; a 5 MB API attachment limit
A connection's runtime capabilities are authoritative. Provider reply windows, permissions, supported MIME types, and account eligibility still apply. Approved WhatsApp templates use a template part with name, language, and variables to initiate or resume eligible conversations.

Start and receive conversations

Create a contact, associate its channel identity, and create a conversation using that identity. Phone identities use E.164 addresses; email identities use an email address. Platform identities come from incoming messages on their provider connection. Creating a local record cannot invent a provider identity or permission to send.
For API and website chat, your trusted backend can create the customer identity and issue a restricted contact session. Customers submit messages through POST /api/v2/conversations/{id}/customer-messages. That route cannot fabricate inbound events on external provider channels.
Use opaque IDs returned by the API. Do not reuse numeric support-app IDs. Recorded audio and video are media messages. See calling for live voice calls and the Ruut Voice media transport.