Conectar um número
Cadastra o número de WhatsApp de uma loja na conta compartilhada, pede o código de verificação e conclui o registro na Cloud API.
Para uma loja atender no WhatsApp ela precisa de um número cadastrado na conta empresarial (WABA) da plataforma. O operador pode fazer isso em nome de qualquer loja, sem trocar de painel. O processo tem três passos e uma consulta:
- Cadastrar
POST /setup/registeradiciona o número à WABA, grava o perfil comercial e cria a credencial da loja como pendente. Devolve ophone_number_idque os passos seguintes usam. - Pedir o código
POST /setup/request-codefaz a Meta enviar um código por SMS ou ligação ao telefone. - Verificar
POST /setup/verifyconfirma o código, registra o número na Cloud API com um PIN aleatório de 6 dígitos, ativa a credencial e tenta criar a rota de callback. - Acompanhar
GET /setup/statusconsulta a situação do número na Meta quando quiser.
Todas as chamadas exigem root_admin com o privilégio manage_whatsapp_platform. As rotas aceitam o mesmo store_id (UUID da loja ou storefront_id numérico) para dizer de qual loja é o número.
Cadastrar o número
/api/v1/admin/whatsapp-platform/setup/registerAdminCadastrar o número de uma loja na WABA
Adiciona o telefone à WABA da plataforma (ou reaproveita, se uma tentativa anterior já o adicionou), aplica o perfil comercial, cria a credencial pendente da loja e registra a rota de callback. Neste fluxo de operador a rota do número é sempre gravada, mesmo que ele já aponte para outro destino: veja o aviso no fim da página.
Corpo da requisição
store_idstringobrigatóriostorefront_id numérico. Loja desconhecida devolve 400.vendor_iduuidcountry_codestringpadrão: 55+.phone_numberstringobrigatóriodisplay_namestringobrigatórioverified_name).display_name_2stringdisplay_name_3stringcategorystringRETAIL, GROCERY, AUTO).descriptionstringaddressstringemailstringwebsitestringwebsite_2stringusernamestringprofile_picture_urlstringreplace_existingbooleanpadrão: falseExemplo de requisição
curl -X POST "$BASE_URL/api/v1/admin/whatsapp-platform/setup/register" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"store_id": "8d1f6a52-3b0e-4e57-9f31-2c4a7b9d0e11",
"country_code": "55",
"phone_number": "11 99999-8888",
"display_name": "Loja Exemplo",
"category": "RETAIL",
"email": "contato@lojaexemplo.com.br",
"website": "https://lojaexemplo.com.br"
}'Resposta
{
"success": true,
"data": {
"phone_number_id": "109876543210987",
"business_phone": "+5511999998888",
"already_existed": false,
"status": "pending_verification"
}
}Campos da resposta
successbooleantrue em caso de sucesso.data.phone_number_idstringdata.business_phonestring+ DDI e número, só dígitos.data.already_existedbooleantrue quando o número já estava na WABA de uma tentativa anterior.data.statusstringpending_verificationpending_verification neste passo.Pedir o código de verificação
/api/v1/admin/whatsapp-platform/setup/request-codeAdminFazer a Meta enviar o código por SMS ou voz
A Meta envia um código de verificação ao telefone. Há limites de frequência próprios da plataforma, por método: no mínimo 60 segundos entre dois pedidos do mesmo método, dobrando a cada bloqueio imposto pela Meta (120 s, 240 s...) até 900 s. Se a Meta bloqueia por excesso, a plataforma segura novos pedidos por 15 min, 30 min, 1 h, 2 h, 6 h e por fim 24 h. SMS e voz têm contagens separadas. Se o número já estiver VERIFIED, a chamada responde sucesso sem enviar nada.
Corpo da requisição
store_idstringobrigatóriostorefront_id.phone_number_idstringobrigatóriomethodstringpadrão: SMSSMSVOICEVOICE vira SMS.{ "success": true }{
"error": "Aguarde 47 segundos para solicitar um novo código via SMS, ou tente outro método.",
"kind": "rate_limited",
"retry_after_seconds": 47,
"method": "SMS"
}O texto do aviso é montado pelo servidor em português (para voz, diz "ligação" no lugar de "SMS"). Use retry_after_seconds e method para decidir quando liberar o botão de reenvio, ou troque para VOICE.
Verificar o código
/api/v1/admin/whatsapp-platform/setup/verifyAdminConfirmar o código e registrar o número na Cloud API
Confirma o código recebido, registra o número na Cloud API com um PIN aleatório de 6 dígitos (a verificação em duas etapas), ativa a credencial da loja, reaplica o perfil comercial e tenta criar a rota de callback do número. O PIN é guardado e devolvido na resposta: anote-o, o seller pode precisar dele no gerenciador da Meta.
Corpo da requisição
store_idstringobrigatóriostorefront_id.phone_number_idstringobrigatóriocodestringobrigatório{
"success": true,
"two_step_pin": "482915",
"register_ok": true,
"data": { "two_step_pin": "482915", "register_ok": true }
}Campos da resposta
successbooleantrue quando o código foi aceito.two_step_pinstringregister_okbooleantrue quando a Meta aceitou o registro (ou disse que o número já estava registrado). false indica que o código foi aceito mas o registro falhou: repita o passo.dataobjecttwo_step_pin e register_ok.Consultar o número
/api/v1/admin/whatsapp-platform/setup/statusAdminVer a situação de um número na Meta
Consulta a Meta e devolve o nome verificado, o telefone exibido e a situação do código. Serve para acompanhar o fim do processo ou para saber se o número já está VERIFIED antes de pedir outro código.
Parâmetros de consulta
store_idstringobrigatóriostorefront_id.phone_number_idstringobrigatório{
"success": true,
"data": {
"phone_number_id": "109876543210987",
"verified_name": "Loja Exemplo",
"display_phone_number": "+55 11 99999-8888",
"code_verification_status": "VERIFIED"
}
}Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Corpo inválido | {"error":"Invalid request body"} |
| 400 | phone_number_id ausente (request-code, status) | {"error":"phone_number_id is required"} |
| 400 | phone_number_id ou code ausente (verify) | {"error":"phone_number_id and code are required"} |
| 400 | store_id vazio ou loja inexistente | {"error":"whatsapp root setup: store id required"} (vazio) ou {"error":"whatsapp root setup: store \"x\" not found: ..."} |
| 400 | Loja sem seller e vendor_id omitido (register) | {"error":"whatsapp root setup: no vendor found for store, pass vendor_id explicitly: ..."} |
| 401 / 403 | Sem token / sem ser root_admin com manage_whatsapp_platform | {"error":"insufficient permissions"} |
| 409 | O número já tem WhatsApp ativo (whatsapp_exists), foi apagado há pouco (phone_deleted), a conta atingiu o limite (limit_reached) ou o número já pertence a outro seller ou loja (number_in_use, number_in_use_other_store) | {"error":"Este número já possui uma conta WhatsApp ativa. ...","kind":"whatsapp_exists"} |
| 429 | Espera obrigatória entre pedidos de código | veja acima |
| 503 | Credenciais da plataforma ausentes ou token inválido ou expirado (config_missing) | {"error":"Configure o token de acesso da plataforma ...","kind":"config_missing"} |
| 500 | phone_number ou display_name ausentes no cadastro, código errado, ou qualquer recusa da Meta | {"error":"whatsapp self-setup: display name required"} |
As mensagens com kind são redigidas em português pelo servidor.