Browse documentation
How it works

Chat & channels

Where you can talk to the AI team, what a conversation holds, what happens when a connection drops mid-answer, and what each channel reserves before it streams.

The chat is the main interface: you ask, the team acts. It is not the only one.

The channels

| Channel | Where | |---|---| | Web | The dashboard chat | | WhatsApp | Through the platform's WhatsApp integration | | Voice | Spoken, through the voice endpoint | | MCP | Your own client — Claude, ChatGPT, Cursor, Claude Code |

They share one memory and one credit balance. A fact learned on WhatsApp is known in the dashboard; see Memory.

A REST channel with sk_ keys existed and was removed. If you find a reference to it, it describes code that no longer exists. The MCP server is the programmatic surface now.

Conversations

A conversation holds its messages, its branches and its context. It belongs to an organization, and the tenant check that guards a new message is the same one that guards reading the history, not a similar one written twice.

If the connection drops mid-answer

A generation that was streaming when your connection died can be resumed: the stream is replayed from where it stopped.

Two properties of that path are worth stating, because they are the ones a user would worry about.

It cannot bill you twice. There is no model call and no ledger write on the resume path: it reads recorded bytes and writes them out. A resumed answer is a replay of one already paid for.

It cannot cross a tenant. Resuming goes through the same ownership check as posting. A conversation that fails it gets "nothing to resume" rather than an error that would confirm the id exists.

Every channel reserves before it streams

A metered channel reserves credits rather than reading the balance and hoping.

Reading first is a read-then-allow: several simultaneous turns read the same balance and each one can spend all of it, which leaves the organization one full overdraft per extra turn. Instead a reservation takes a per-organization lock, re-reads the balance underneath it, and writes a hold, so the next turn already sees a reduced balance.

This is why the guardrails in Credits & metering hold under concurrency and not only in a single-turn demo.

Attachments

A file attached in the chat is stored on Vercel Blob at a public URL and purged after 30 days. The purge bounds the exposure; it does not make the object private in the meantime. See Data & privacy.

Built on these docs?

Drop into the forum if something's unclear or wrong. Docs improve faster when readers flag the gaps.

Open the forum