POST /whatsapp/accounts/{id}/register
Register (or re-register) the number for the Cloud API with pin, or a random 6-digit PIN (stored encrypted). Meta allows 10 attempts per 72 hours
BearerAuthAuthorizationBearer <token>API key sk_...
id*stringWhatsApp account id
application/json- body
pin?string^\d{6}$WhatsAppAccount
application/json- response
accountId?stringplatform?"whatsapp""whatsapp"accountName?stringphoneNumberId?stringCloud API phone number id (= platformAccountId)
wabaId?string|nullbusinessId?string|nullexternalId?string|nullstatus?stringphoneNumber?onboarding?curl -X POST 'https://example.com/api/v1/whatsapp/accounts/string/register' \ -H 'Content-Type: application/json' \ -d '{}'{ "accountId": "string", "platform": "whatsapp", "accountName": "string", "phoneNumberId": "string", "wabaId": "string", "businessId": "string", "externalId": "string", "status": "string", "phoneNumber": { "displayPhoneNumber": "string", "verifiedName": "string", "qualityRating": "string", "messagingLimitTier": "string", "nameStatus": "string", "platformType": "string", "codeVerificationStatus": "string", "status": "string", "checkedAt": "2019-08-24T14:15:22Z", "throughput": null }, "onboarding": { "connection": "embedded_signup", "onboarding": "cloud_api", "subscribed": true, "subscribeError": "string", "registered": true, "registerError": "string", "registerSkipped": "string", "onboardedAt": "2019-08-24T14:15:22Z" }}GET /whatsapp/accounts/{id}/phone-number GET
The number: display number, verified name, quality rating, messaging limit tier, name status, status and onboarding state; refresh=true reads it from Meta and saves it
POST /whatsapp/accounts/{id}/messages POST
Send a LIVE WhatsApp message to to (phone), recipient (BSUID) or the participant of conversationId. Free-form types need the person to have written within 24 hours; templates are always allowed (409 outside_messaging_window before calling Meta). 403 approval_required while approval applies. Emits message.sent; statuses follow as message.status