One entry per address and transport
v2 has no sender object.GET /v2/channels lists every place the project can
send from, one entry per (address, type):
A number that carries WhatsApp and SMS is two entries with the same address.
GET /v2/channels/{address} returns the entries of one address. URL-encode the
address: + is %2B. Numbers match in any common formatting.
Entries with the same v1SenderId belong together: they are one channel group,
the same thing v1 calls a sender. You rarely need to think about groups. They
matter in two places: an agent connected to an address answers on every
transport of its group, and two groups can share an address.
How from is resolved
On POST /v2/messages the sending address comes from, in order:
conversationId: the address the thread was last handled from.from: one of your addresses, in any common formatting.- The project default, the same one v1 uses without a
Zavu-Senderheader.
from is resolved inside your project only. An address no entry has answers
404 not_found, with the address in details.from.
When two groups share an address, for example a number whose WhatsApp was
connected on one sender and SMS on another, channel picks the transport. If
that still does not decide it, the answer is 409 ambiguous_from with
details.candidates[{address, type, v1SenderId}]. Only then does from accept
one of those v1SenderId values.
Connect a channel
POST /v2/channels connects what needs no purchase and no Meta signup:
The new channel joins the project’s default group when that group does not carry
the transport yet. Otherwise it starts a new group, so a second email address or
a second bot is sent from by naming it in
from. For one-way SMS and email, an
address that is already connected answers 200 and changes nothing.
Other transports:
- Two-way SMS and voice come with a number.
GET /v2/numbers/available, thenPOST /v2/numbersbuys the number and turns SMS on in the same call. Buying needs a paid plan. - WhatsApp, Instagram and Messenger connect through Meta, from Accounts
in the dashboard. Once connected they appear in
GET /v2/channels.
Switch a channel on or off
activate and deactivate are the same switch as Activate on Accounts in
the dashboard, with the same price. On a paid plan, activating a connection the
plan does not include charges a month at once; the response says how much in
chargedCents and monthlyCents. sms, sms_oneway and voice have no
switch and are always on.
A connection that would cost money starts inactive. A send without channel
skips it; when it was the only way to reach the recipient, the answer is
409 no_channel with it in details.inactive. A send that names it in
channel is refused with 403 channel_inactive.
Remove a channel
DELETE /v2/channels/{address}/{type} disconnects sms_oneway, telegram and
voice. The others answer 409 disconnect_unavailable with what to do instead:
switch whatsapp, instagram, messenger or email off with deactivate, and
manage a number’s two-way SMS from Phone Numbers in the dashboard.