Register a WhatsApp number via API and SDK
Released: July 21, 2026
Registration Added
Section titled “Registration ”You can now register a WhatsApp number for Cloud API sending
directly from the Public API — the same “Register” action that was
previously dashboard-only. Use it to finish onboarding a number that
Meta reports as not yet CONNECTED, or to recover a number that a send
degraded with a “number not registered” error.
The account must already exist (onboard it through a
setup link first). Then find its
phone_number_id and register it with the number’s 6-digit
two-step-verification PIN.
curl -X POST https://api.kirimdev.com/v1/106540352242922/register \ -H "Authorization: Bearer $KIRIM_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "pin": "123456" }'PIN semantics mirror Meta. If the number already has two-step
verification, the PIN must match the existing one; if it does not,
the PIN you send becomes the number’s permanent PIN. A wrong PIN,
cooldown, or other Meta rejection returns 422 whatsapp_registration_failed
with a descriptive message; an unknown or cross-org phone_number_id
returns 404 resource_not_found.
Since a 6-digit PIN is guessable, the endpoint is throttled per number:
5 failed attempts within ~15 minutes lock the number out with
429 too_many_registration_attempts (before Meta is contacted), and a
concurrent second call returns 409 registration_in_progress.
Unlike the other /v1/{phone_number_id}/* endpoints, register
deliberately accepts numbers that are not yet connected — that is
the whole point of the call.
SDK Added
Section titled “SDK ”const result = await kirim.phoneNumbers('106540352242922').register('123456')console.log(result.status, result.meta_status) // "connected" "CONNECTED"Accounts now expose meta_status Added
Section titled “Accounts now expose meta_status ”GET /v1/accounts rows gain a meta_status field — Meta’s own
phone-number status (CONNECTED, PENDING, UNVERIFIED, …), or null
if never fetched. It sits alongside the existing status (Kirimdev’s
lifecycle state) so you can tell which numbers need registration:
A number likely needs
registerwhenstatusis notconnectedormeta_statusis notCONNECTED.
Pass ?status=all to include numbers still finishing onboarding.