telephone for PSTN voice, webrtc for voice and chat in the browser, email for asynchronous mail, and text for messages driven through the API. You build and publish an agent once, and the same published version answers across every channel you point at it.
One agent, every channel
Channel is a property of the conversation, not the agent. When you create a conversation you pick achannel, and the agent’s published configuration is resolved for that conversation regardless of which transport it runs on. The same instructions, tools, knowledge, and starting message apply everywhere by default.
You then tune behavior per channel without forking the agent, using two optional maps on the agent config:
| Field | What it tunes | Example settings |
|---|---|---|
channel_overrides | How the agent thinks and responds on a channel (LLM steering) | instructions plus instructions_mode (append or replace), starting_message, max_tool_steps |
channel_properties | How a reply is rendered and delivered on a channel (transport and presentation) | Email: body_format, subject_template, signature, include_unsubscribe_footer; Text: body_template; per-channel enabled |
webrtc are unaffected by an email override.
channel_overrides changes the prompt the model sees; channel_properties changes the message that gets sent. Reach for an override to make the agent terser on email, and a property to set its email signature.The four channels
| Channel | Transport | How it starts | Timing |
|---|---|---|---|
telephone | PSTN voice | A phone number rings the agent, or a campaign dials out | Real-time |
webrtc | Browser voice and chat | A visitor opens your Web Widget | Real-time |
email | Email (via the provider) | Mail arrives at an agent email address, or you start an outbound thread | Asynchronous |
text | First-party API messages | You create the conversation and post messages over the API | Turn-based |
Telephone
Voice over the public phone network. Inbound calls route to the agent attached to a phone number; outbound calls are placed by a campaign or by creating atelephone conversation, which enqueues the call for the dialer (the create call returns 202 with a contact). For telephone, user_id must be a +E.164 phone number.
See Telephony.
WebRTC
Voice and chat that run entirely in the browser, no phone number required. A visitor starts the conversation by opening the Web Widget you embed on your site; the conversation is created immediately. This is the channel for in-app and on-page support. See Web Widgets.email conversation with a to_address; the agent sends the first message and continues the thread as replies arrive. Email rendering is controlled by EmailProperties (for example body_format, subject_template, default_subject, signature).
See Email.
Text
A first-party API channel with no transport mechanics of its own — useful for embedding the agent in your own product surface or for programmatic conversations. Create atext conversation, then drive the exchange by posting each user message to that conversation’s messages endpoint:
interactivity to rich to also receive any widgets the agent emits; plain returns text only.
User PATs (
pat_) require the X-Anyreach-Org header. Organization API keys (ak_) carry their org implicitly, so you can omit it.How conversations begin
Every channel produces a conversation that lands in the same inbox, so a phone call, a browser chat, an email thread, and an API exchange are all reviewed and evaluated the same way.Next steps
Telephony
Inbound and outbound voice over the phone network.
Web Widgets
Embed browser voice and chat on your site.
Answer and start asynchronous email threads.
Conversations
Review every channel in one inbox.

