---
title: "Request a Meta re-verification code for a BYO WhatsApp number"
method: POST
path: "/v1/accounts/{accountId}/whatsapp/request-code"
tags: ["WhatsApp"]
---

# Request a Meta re-verification code for a BYO WhatsApp number

`POST /v1/accounts/{accountId}/whatsapp/request-code`

For a bring-your-own WhatsApp number (its own WABA, migrated off another BSP) that
Meta demoted to re-verification, this requests a new OTP from Meta. The code lands
on the customer's own handset, so verifying it is necessarily self-service; call
POST /v1/accounts/{accountId}/whatsapp/verify-code with the code once it arrives.
Rate-limited to one request per 10 minutes per account, and Meta enforces its own
cooldown on top of that.

## Path parameters

- `accountId` string, required

## Request body

- object
  - `method` 'SMS' | 'VOICE'
  - `language` string — Meta locale code for the verification message, e.g. en_US.

## Response `200`

Code requested, or the number was already CONNECTED and no code was needed.

- object
  - `requested` boolean
  - `alreadyActive` boolean
  - `method` string
  - `accountId` string
  - `phoneNumberId` string

## Other responses

- `400` — Invalid request
- `401` — Unauthorized
- `404` — Resource not found
- `409` — Meta already reports this number as VERIFIED. Call POST /v1/accounts/{accountId}/whatsapp/register instead.
- `422` — The account has no phone number bound yet, it runs in coexistence with the WhatsApp Business app, or Meta rejected the code request.
- `429` — Our own 10-minute-per-account cooldown is active, or Meta has escalated to a multi-hour lockout after repeated attempts.
- `503` — Meta could not dispatch a code for this number yet. Retry shortly.

## Changes

- **2026-09-16** `3e6ddf2a99ea` — 3 info
  - added the optional property `details/budgetScope` to the response with the `400` status
  - added the optional property `details/budgetScope` to the response with the `429` status
  - added the optional property `details/budgetScope` to the response with the `503` status
- **2026-09-15** `0dba7d004d75` — 6 info
  - added the optional property `details/quotaExhausted` to the response with the `400` status
  - added the optional property `details/quotaExhausted` to the response with the `429` status
  - added the optional property `details/quotaExhausted` to the response with the `503` status
  - added the optional property `details/quotaScope` to the response with the `400` status
  - …2 more
- **2026-09-09** `222e3a38a382` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/accounts/:accountId/whatsapp/request-code/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/dd3865482f9f?raw)
