import requests
url = "https://pombo.digital/api/integrations/v1/templates/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)curl --request GET \
--url https://pombo.digital/api/integrations/v1/templates/{id} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://pombo.digital/api/integrations/v1/templates/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));Consultar um modelo
Devolve um modelo pelo identificador, com as variáveis que o envio precisa preencher.
import requests
url = "https://pombo.digital/api/integrations/v1/templates/{id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)curl --request GET \
--url https://pombo.digital/api/integrations/v1/templates/{id} \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://pombo.digital/api/integrations/v1/templates/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));Authorizations
Sua credencial de API no cabeçalho Authorization: Bearer sk_live_.... Crie e revogue credenciais no painel, em Conta → API Keys. O segredo aparece uma única vez, na criação.
A credencial identifica a organização: organization_id não é aceito em nenhuma requisição.
Path Parameters
O identificador do modelo. Não acrescente ?organization_id=, que é recusado com 400 ORGANIZATION_ID_FORBIDDEN: a credencial já diz a organização.
^PBD_TPL_[0-9A-HJKMNP-TV-Z]{26}$"PBD_TPL_01J9Z2Q8XK3M7WPTV6RB4CYH0N"
Response
O modelo.
whatsapp, email O body com cada marcador substituído pelo variable_example da variável, entre colchetes. Montado pelo Pombo, serve para pré-visualizar o texto sem preencher nada.
O tipo de cabeçalho. DOCUMENT e IMAGE são os que levam arquivo; TEXT é só texto.
VIDEO e LOCATION podem aparecer em modelos antigos e não são aceitos ao criar um modelo novo. Um envio com eles não leva arquivo.
DOCUMENT, IMAGE, LOCATION, TEXT, VIDEO pt_BR, en_US, es_ES Só um modelo APPROVED pode ser usado em um envio de WhatsApp. A aprovação é da Meta, não do Pombo.
Um modelo de whatsapp nasce PENDING: consulte GET /templates/{id} até chegar a APPROVED, e crie os seus modelos com antecedência, porque um envio com modelo não aprovado é recusado com 422.
Um modelo de email nasce APPROVED e serve para enviar na mesma hora.
PENDING, APPROVED, REJECTED, PAUSED, DISABLED, DELETED, IN_APPEAL, FLAGGED, FAILED SYSTEM são modelos do catálogo do Pombo; ORG, os da sua organização.
Na listagem, os seus aparecem em qualquer template_status, inclusive PENDING e REJECTED; os do catálogo aparecem só quando já estão APPROVED. Rascunhos e modelos apagados ficam de fora.
SYSTEM, ORG Anotação de quem criou o modelo, sem efeito nenhum: nada no envio a consulta, e enviar sem arquivo não é recusado por causa dela. Não a envie.
Um modelo de whatsapp devolve sempre null, tenha você enviado o campo ou não; só um modelo de email devolve o valor como chegou.
Para um modelo que leve arquivo, o campo que importa é template_type, com DOCUMENT ou IMAGE.
As variáveis do modelo. Estas chaves são as de parameters no envio.
Os marcadores do rodapé do remetente estão deliberadamente ausentes daqui, embora apareçam no body: é o Pombo que os preenche, a partir do sender do envio. Um marcador do body sem entrada em variables é isso, e não um erro.
Hide child attributes
Hide child attributes
Hide child attributes
Hide child attributes
Um rótulo seu, para se orientar. Não é a chave.
"nome"
Um valor de exemplo. Em whatsapp a Meta o usa para aprovar o modelo.
Em email a marcação é removida antes de armazenar, então um exemplo com HTML volta sem ele em GET /templates/{id}.
"Maria Silva"
Campo histórico, sem efeito: não é o assunto que o destinatário recebe. O assunto de um e-mail é montado no momento do envio a partir do nome da organização.
Sempre null em um modelo criado pela API, nos dois canais: o campo não é gravado na criação. Só traz conteúdo em modelos antigos.
Por que a Meta recusou o modelo, quando template_status é REJECTED ou FAILED. null enquanto não houve recusa.
ABUSIVE_CONTENT e SCAM exigem reescrever o texto. INVALID_FORMAT, TAG_CONTENT_MISMATCH e INCORRECT_CATEGORY são erros de forma. REVIEW_TIMEOUT é falha da própria revisão e um modelo novo com o mesmo texto pode passar.
ABUSIVE_CONTENT, SCAM, INVALID_FORMAT, TAG_CONTENT_MISMATCH, INCORRECT_CATEGORY, REVIEW_TIMEOUT, UNKNOWN, null O motivo em texto livre, como o provedor o enviou. Não é estável e não deve ser comparado em código: para ramificar, use declined_reason.
A última alteração do registro. Muda sem você fazer nada: a Meta atualiza o status e a categoria por webhook, e cada atualização mexe neste campo.

