A number is a WhatsApp account linked to your business. Messages are always sent from, and received by, one of your numbers.
The number object#
{
"id": "01a0f44d-c969-75b1-955d-3841d817f711",
"label": "Front desk",
"phoneNumber": "+12125550147",
"status": "CONNECTED",
"mode": "API",
"connectedAt": "2026-10-01T10:01:12.000Z",
"lastDisconnectedAt": null,
"createdAt": "2026-10-01T10:00:00.000Z"
}| Status | Meaning |
|---|---|
PENDING | Not connected. Start pairing to get a QR code. |
CONNECTING | A QR code is live and waiting to be scanned. |
CONNECTED | Linked and working. |
RECONNECTING | Briefly offline; WaConnect reconnects by itself. |
LOGGED_OUT | The user removed WaConnect from Linked devices on their phone. Connect it again to continue. |
mode is always API here: API keys only see API numbers. phoneNumber is filled in once the number connects.
List numbers#
https://api.waconnect.ai/v1/numbersReturns an array of number objects, oldest first. A key limited to some numbers only lists those numbers; to it, every other number of your business answers 404.
Create a number#
https://api.waconnect.ai/v1/numbersCreates a number, starts pairing and returns it with a connectUrl — the hosted page that shows its QR code. See Connect a number. When the key is limited to some numbers, the new number is added to its list, so the key can use it straight away.
curl https://api.waconnect.ai/v1/numbers \
-H "Authorization: Bearer wc_live_your_key" \
-H "Content-Type: application/json" \
-d '{"label":"Front desk"}'Body
labelstringrequired- A name you'll recognise, up to 40 characters.
Returns 201 with the number and connectUrl. Answers 402 when you're out of credits.
Get a number#
https://api.waconnect.ai/v1/numbers/:idThe number object plus its connection history: the 20 most recent events, newest first, and totalEvents, the number of events since the number was created. Use it to show a timeline of when a number connected, dropped and came back.
{
"id": "01a0f44d-c969-75b1-955d-3841d817f711",
"label": "Front desk",
"phoneNumber": "+12125550147",
"status": "CONNECTED",
"mode": "API",
"connectedAt": "2026-10-01T10:01:12.000Z",
"lastDisconnectedAt": "2026-10-03T08:15:40.000Z",
"createdAt": "2026-10-01T10:00:00.000Z",
"events": [
{ "id": "01a0f6c2-1f0e-7a33-8b5e-6c1d2e3f4a5b", "type": "RECONNECTED", "message": null, "createdAt": "2026-10-03T08:16:02.000Z" },
{ "id": "01a0f6c1-9d2a-7c10-a4f1-2b3c4d5e6f70", "type": "RECONNECTING", "message": "Code 428", "createdAt": "2026-10-03T08:15:40.000Z" },
{ "id": "01a0f44e-0b7d-7e21-9c3a-1d2e3f4a5b6c", "type": "CONNECTED", "message": "+12125550147", "createdAt": "2026-10-01T10:01:12.000Z" },
{ "id": "01a0f44d-d102-7f8e-b6a9-0c1d2e3f4a5b", "type": "QR_REQUESTED", "message": null, "createdAt": "2026-10-01T10:00:00.000Z" }
],
"totalEvents": 4
}Event fields#
| Field | Type | Meaning |
|---|---|---|
id | string | The event's id. Ids sort by time. |
type | string | What happened. See the table below. |
message | string or null | Extra detail, depending on type. |
createdAt | string | When it happened (ISO 8601, UTC). |
type | Meaning | message |
|---|---|---|
QR_REQUESTED | A QR code was requested to connect the number. | null |
CONNECTED | The phone scanned the QR code and the number connected. | The phone number, e.g. +12125550147. |
RECONNECTING | The connection dropped; WaConnect is reconnecting by itself. | WhatsApp's disconnect code, e.g. Code 428, or null. |
RECONNECTED | The connection came back without a new QR code. | null |
LOGGED_OUT | WaConnect was removed from Linked devices on the phone. Connect it again to continue. | Removed from the phone’s linked devices |
New event types may be added; show an unknown type as it is. Older events beyond the latest 20 aren't returned; totalEvents tells you how many there are in all.
Get the QR code#
https://api.waconnect.ai/v1/numbers/:id/qrThe current QR code as text, for drawing it in your own UI.
{ "status": "CONNECTING", "qr": "2@AbC…", "generatedAt": "2026-10-01T10:00:05.000Z", "expired": false }| Field | Meaning |
|---|---|
qr | The text to encode as a QR code, or null when there's none right now. |
generatedAt | When this code was issued. WhatsApp replaces it about every 20 seconds. |
expired | true when pairing timed out — request a new connect link. |
New connect link#
https://api.waconnect.ai/v1/numbers/:id/connect-linkStarts a fresh QR code and returns a new connectUrl; the previous link stops working. Use it when a code expired or a link was used.
{ "connectUrl": "https://waconnect.ai/connect/Lx8…_U" }Answers 409 with the code NUMBER_ALREADY_CONNECTED if the number is already connected.
Remove a number#
https://api.waconnect.ai/v1/numbers/:idLogs the number out of WhatsApp and removes it. Answers 202: removal finishes a moment later, and the number.removed webhook is sent with reason: "deleted". Chat history is kept and reattaches if the same phone is connected again.