---
title: "Register a connected WhatsApp number on the Cloud API"
method: POST
path: "/v1/accounts/{accountId}/whatsapp/register"
tags: ["WhatsApp"]
---

# Register a connected WhatsApp number on the Cloud API

`POST /v1/accounts/{accountId}/whatsapp/register`

## Request

- Base URL: `https://zernio.com/api`
- URL: `https://zernio.com/api/v1/accounts/{accountId}/whatsapp/register`
- Auth: HTTP bearer

Re-runs Meta's Cloud API registration for a WhatsApp account that is already connected.
Use it when the number has its own two-step verification PIN: the connect flows register
with a default PIN, Meta rejects that with error 133005, and the number then fails every
send with the misleading '(#200) You do not have the necessary permission to send messages'
while the account still shows as connected. The PIN is used for this call only and is not stored.

## Path parameters

- `accountId` string, required

## Request body

- object
  - `pin` string: The 6-digit two-step verification PIN set on the number. Omitting it applies Zernio's managed default registration PIN, the same one every Embedded Signup connect sets automatically.

## Response `200`

Number registered on the WhatsApp Cloud API

- object
  - `registered` boolean
  - `accountId` string
  - `phoneNumberId` string

## Other responses

- `400`: Invalid request
- `401`: Invalid or expired credentials
- `404`: WhatsApp account not found
- `422`: Meta rejected the registration (e.g. PIN mismatch), or the number cannot be registered through the API.

## Changes

- **2026-10-06** `f8c8f34fb41a`: 1 warning
  - added the new `account` enum value to the `details/budgetScope` response property for the response status `400`
- **2026-10-02** `d556591af3f6`: 1 info
  - added the optional property `docUrl` to the response with the `400` status
- **2026-09-30** `16a7b9d5373e`: 1 info
  - removed the `platform` enum value from the `details/budgetScope` response property for the response status `400`
- **2026-09-25** `2c04683ce694`: 4 info
  - added the optional property `details/adAccountId` to the response with the `400` status
  - added the optional property `details/createdObjects` to the response with the `400` status
  - added the optional property `details/stage` to the response with the `400` status
  - added the optional property `details/unconfirmedWrite` to the response with the `400` status
- **2026-09-16** `3e6ddf2a99ea`: 1 info
  - added the optional property `details/budgetScope` to the response with the `400` status

[Operation history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/accounts/:accountId/whatsapp/register/post.md)

---

[API](https://skmtc.dev/zernio/apis/zernio-api.md) · [All operations](https://skmtc.dev/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zernio/apis/zernio-api/revisions/4e74db179e73?raw)
