# Channels

WhatsApp and Instagram are set up in the inbox, not over HTTP: connecting
your own number or account needs Meta's consent screen, and a test phone or
account is proven by something only its owner can do.

- **Test phones and accounts** are verified on the inbox's **Test** page, in
  its **WhatsApp** and **Instagram** tabs. A phone scans a QR code there and
  sends the code it carries to Vatio's preview number on WhatsApp; the message
  verifies it. An Instagram account is shown a code and DMs it to Vatio's
  sandbox account; the DM verifies it.
- **Your own number or account** is connected in **Channels**, once you
  publish.

`GET /status` says where to go for this workspace:

| Field | Value |
|---|---|
| `published` | `true` once live has a deployment |
| `whatsapp_url` | Test → WhatsApp before publishing, Channels → WhatsApp after |
| `instagram_url` | Test → Instagram before publishing, Channels → Instagram after |
| `integrations_url` | Test before publishing, Channels after |

## Who the agent answers on WhatsApp

| Method | Path | Body / answer |
|---|---|---|
| GET | `/whatsapp` | `{ "display_phone_number", "live", "agent_numbers": [...] }` |
| PATCH | `/whatsapp` | `{ "agent_numbers": ["+56912345678"] }` replaces the list; `[]` is everyone |

On the workspace's own number: with a list, the agent answers only those
numbers, plus the numbers of the workspace's
[routines](https://vatio.ai/docs/integrations/claude-routines), and everyone else's messages reach
the inbox unanswered. A number not in international format is `422`, and a
workspace with no number of its own `409 whatsapp_not_connected`. **Live**
stays a switch in the inbox, under **Channels → WhatsApp**.

The endpoints that used to do this — `/whatsapp_account`,
`/instagram_account`, `/test_phone_numbers`, `/test_instagram_accounts` —
answer `410 Gone` with the code `moved_to_console` (a name kept for older
CLIs) and the link to the page in the inbox.
