Templates gerenciados
Cria templates na Meta e acompanha, edita, sincroniza e exclui os que a loja administra.
O template gerenciado é o registro local de um template: a plataforma o cria na Meta, guarda o status de aprovação e adiciona configurações próprias (destino do botão, textos padrão, o que o seller pode alterar). Pode ser universal (T, da loja toda) ou de um seller (V). Depois de criar, a Meta analisa o template (minutos a horas) e o status muda de P para A ou R: use a sincronização para atualizar.
Listar
Ordenados por escopo, nome e idioma. Com vendor_id, devolve os universais mais os desse seller.
/api/v1/admin/whatsapp/templates/managedAdminLista os templates gerenciados
Parâmetros de consulta
approvedstring11 devolve só os aprovados.vendor_idstringExemplo de requisição (Listar)
curl "$BASE_URL/api/v1/admin/whatsapp/templates/managed?approved=1" \
-H "Authorization: Bearer $TOKEN"Resposta (Listar)
{
"templates": [
{
"id": "9a2b7c1e-3d4f-4a5b-8c6d-7e8f9a0b1c2d",
"name": "venddor_welcome_loja",
"language": "pt_BR",
"category": "UTILITY",
"status": "A",
"status_label": "APPROVED",
"scope": "T",
"meta_template_id": "1234567890123456",
"components": [
{
"type": "BODY",
"text": "Olá{{1}}! Bem-vindo(a) à *{{2}}*."
}
],
"body_param_defaults": [],
"cta_purpose": "store",
"cta_label": "Ver loja",
"seller_body_template": "",
"allow_seller_edit_params": true,
"allow_seller_edit_cta": true,
"created_at": "2026-10-11T20:00:00Z",
"updated_at": "2026-10-11T20:00:00Z"
}
]
}Campos da resposta
templatesarrayTemplates gerenciados.
idstringnamestringlanguagestringcategorystringstatusstringPARXP pendente de análise, A aprovado, R rejeitado, X desativado/pausado.status_labelstringPENDING, APPROVED, REJECTED, DISABLED.scopestringTVT template universal da loja; V template de um seller.vendor_idstringscope é V.meta_template_idstringcomponentsarraybody_param_defaultsarraycta_purposestringstore, cart ou checkout.cta_labelstringseller_body_templatestringallow_seller_edit_paramsbooleanallow_seller_edit_ctabooleanrejection_reasonstringquality_scorestringsynced_atstringcreated_atstringupdated_atstringErros (Listar)
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O módulo WhatsApp Commerce está desligado na loja, o usuário não é administrador ou não tem o privilégio exigido. | {"error":"module_disabled","module":"whatsapp-commerce"} ou {"error":"insufficient privileges","required":"manage_settings"} ou {"error":"admin access required"} |
Criar
Envia o template à Meta para análise e grava o registro local como pendente. Você pode informar components no formato da Meta, ou só body_text (e opcionalmente um botão de link dinâmico) e a plataforma monta a estrutura.
/api/v1/admin/whatsapp/templates/managedAdminCria um template na Meta e o registra na loja
Corpo da requisição
namestringobrigatóriolanguagestringpadrão: pt_BRcategorystringpadrão: UTILITYUTILITYMARKETINGAUTHENTICATIONbody_textstring{{1}}. Obrigatório se não enviar components.componentsarraybody_text.url_button_labelstringurl_button_basestring{{1}}, a plataforma acrescenta /{{1}}.scopestringpadrão: TT universal ou V de um seller (vendor também vale).vendor_idstringscope V.body_param_defaultsarraycta_purposestringpadrão: storestorecartcheckoutcta_labelstringpadrão: Ver lojaseller_body_templatestringallow_seller_edit_paramsbooleanpadrão: trueallow_seller_edit_ctabooleanpadrão: trueskip_metabooleanpadrão: falsetrue só grava na loja, sem enviar à Meta, e já marca como aprovado. Serve para demonstração; não permite envio real.Exemplo de requisição (Criar)
curl -X POST "$BASE_URL/api/v1/admin/whatsapp/templates/managed" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "venddor boas vindas",
"language": "pt_BR",
"category": "UTILITY",
"body_text": "Olá{{1}}! Bem-vindo(a) à *{{2}}*.",
"url_button_label": "Ver loja",
"url_button_base": "https://minhaloja.io.venddor.com.br/wa/{{1}}",
"scope": "T"
}'Resposta (Criar)
{
"template": {
"id": "9a2b7c1e-3d4f-4a5b-8c6d-7e8f9a0b1c2d",
"name": "venddor_welcome_loja",
"language": "pt_BR",
"category": "UTILITY",
"status": "P",
"status_label": "PENDING",
"scope": "T",
"meta_template_id": "1234567890123456",
"components": [
{
"type": "BODY",
"text": "Olá{{1}}! Bem-vindo(a) à *{{2}}*."
}
],
"body_param_defaults": [],
"cta_purpose": "store",
"cta_label": "Ver loja",
"seller_body_template": "",
"allow_seller_edit_params": true,
"allow_seller_edit_cta": true,
"created_at": "2026-10-11T20:00:00Z",
"updated_at": "2026-10-11T20:00:00Z"
},
"warning": "MARKETING custa mais que UTILITY. Prefira UTILITY para mensagens transacionais."
}Campos da resposta
templateobjectO template criado.
idstringnamestringlanguagestringcategorystringstatusstringPARXP pendente de análise, A aprovado, R rejeitado, X desativado/pausado.status_labelstringPENDING, APPROVED, REJECTED, DISABLED.scopestringTVT template universal da loja; V template de um seller.vendor_idstringscope é V.meta_template_idstringcomponentsarraybody_param_defaultsarraycta_purposestringstore, cart ou checkout.cta_labelstringseller_body_templatestringallow_seller_edit_paramsbooleanallow_seller_edit_ctabooleanrejection_reasonstringquality_scorestringsynced_atstringcreated_atstringupdated_atstringwarningstringMARKETING mais cara). Só quando existe.Erros (Criar)
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O módulo WhatsApp Commerce está desligado na loja, o usuário não é administrador ou não tem o privilégio exigido. | {"error":"module_disabled","module":"whatsapp-commerce"} ou {"error":"insufficient privileges","required":"manage_settings"} ou {"error":"admin access required"} |
| 422 | A API do WhatsApp não está configurada (code presente no corpo). | {"error":"WhatsApp Cloud API is not fully configured (token + WABA).","code":"...","detail":""} |
| 502 | Qualquer outra falha: nome ou corpo ausente, vendor_id ausente em escopo V, ou recusa da Meta (Meta create template HTTP 400: ...). | {"error":"whatsapp: template name required"} |
Editar
Ajusta os padrões locais (variáveis, botão, permissões do seller). Se o template ainda estiver pendente ou rejeitado, enviar components ou body_text o recria na Meta.
/api/v1/admin/whatsapp/templates/managed/{id}AdminAltera as configurações de um template gerenciado
Parâmetros de caminho
idstringobrigatórioCorpo da requisição
body_param_defaultsarraycta_purposestringstorecartcheckoutcta_labelstringseller_body_templatestringallow_seller_edit_paramsbooleanallow_seller_edit_ctabooleanscopestringT ou V.vendor_idstringV.componentsarraybody_textstringurl_button_labelstringurl_button_basestringcategorystringExemplo de requisição (Editar)
curl -X PUT "$BASE_URL/api/v1/admin/whatsapp/templates/managed/9a2b7c1e-3d4f-4a5b-8c6d-7e8f9a0b1c2d" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"cta_label": "Abrir loja",
"allow_seller_edit_cta": false
}'Resposta (Editar)
{
"template": {
"id": "9a2b7c1e-3d4f-4a5b-8c6d-7e8f9a0b1c2d",
"name": "venddor_welcome_loja",
"language": "pt_BR",
"category": "UTILITY",
"status": "A",
"status_label": "APPROVED",
"scope": "T",
"meta_template_id": "1234567890123456",
"components": [
{
"type": "BODY",
"text": "Olá{{1}}! Bem-vindo(a) à *{{2}}*."
}
],
"body_param_defaults": [],
"cta_purpose": "store",
"cta_label": "Abrir loja",
"seller_body_template": "",
"allow_seller_edit_params": true,
"allow_seller_edit_cta": false,
"created_at": "2026-10-11T20:00:00Z",
"updated_at": "2026-10-11T20:00:00Z"
}
}Campos da resposta
templateobjectErros (Editar)
| Status | Quando | Corpo |
|---|---|---|
| 400 | Corpo inválido, template inexistente ou recusa da Meta ao recriar. A mensagem vem em error. | {"error":"..."} |
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O módulo WhatsApp Commerce está desligado na loja, o usuário não é administrador ou não tem o privilégio exigido. | {"error":"module_disabled","module":"whatsapp-commerce"} ou {"error":"insufficient privileges","required":"manage_settings"} ou {"error":"admin access required"} |
Excluir
Tenta apagar o template na Meta pelo nome e remove o registro local.
/api/v1/admin/whatsapp/templates/managed/{id}AdminExclui o template na Meta e na loja
Parâmetros de caminho
idstringobrigatórioExemplo de requisição (Excluir)
curl -X DELETE "$BASE_URL/api/v1/admin/whatsapp/templates/managed/9a2b7c1e-3d4f-4a5b-8c6d-7e8f9a0b1c2d" \
-H "Authorization: Bearer $TOKEN"Resposta (Excluir)
{
"ok": true
}Campos da resposta
okbooleantrue.Erros (Excluir)
| Status | Quando | Corpo |
|---|---|---|
| 400 | Template inexistente. | {"error":"sql: no rows in result set"} |
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O módulo WhatsApp Commerce está desligado na loja, o usuário não é administrador ou não tem o privilégio exigido. | {"error":"module_disabled","module":"whatsapp-commerce"} ou {"error":"insufficient privileges","required":"manage_settings"} ou {"error":"admin access required"} |
Sincronizar com a Meta
Lê os templates da conta na Meta e atualiza os registros locais de mesmo nome e idioma. Templates que existem só na Meta entram como universais (T). Sem corpo.
/api/v1/admin/whatsapp/templates/managed/syncAdminAtualiza status e estrutura dos templates a partir da Meta
Parâmetros de consulta
vendor_idstringExemplo de requisição (Sincronizar com a Meta)
curl -X POST "$BASE_URL/api/v1/admin/whatsapp/templates/managed/sync" \
-H "Authorization: Bearer $TOKEN"Resposta (Sincronizar com a Meta)
{
"synced": 3
}Campos da resposta
syncedintegerErros (Sincronizar com a Meta)
| Status | Quando | Corpo |
|---|---|---|
| 401 | Sem token, token inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O módulo WhatsApp Commerce está desligado na loja, o usuário não é administrador ou não tem o privilégio exigido. | {"error":"module_disabled","module":"whatsapp-commerce"} ou {"error":"insufficient privileges","required":"manage_settings"} ou {"error":"admin access required"} |
| 422 | A API do WhatsApp não está configurada. | {"error":"...","code":"whatsapp.templates.not_configured"} |
| 502 | Falha ao falar com a Meta. | {"error":"..."} |