Criar conta grátis

Referência da API

Templates de WhatsApp

Liste os templates de WhatsApp da organização com o id, o idioma e as variáveis de cada um, leia um template pelo id e crie templates novos em rascunho.

  • 3 operações
  • URL basehttps://api.messages.ccxcompany.co
  • AutenticaçãoBearer com a sua chave de API

O texto técnico abaixo vem do contrato público, o openapi.json, no idioma em que o contrato foi escrito.

Lista os templates da organização

GET/v2/templates

Devolve os templates da organização da credencial. Filtros: status, category, language, numberId, limit, skip. Ordenado por createdAt desc.

Use isto para descobrir o id, o language e as variáveis (em components) antes de enviar uma mensagem de template.

A organização vem da credencial — não existe parâmetro para escolhê-la, e o isolamento entre tenants é imposto pelo Mongo Guardian.

Parâmetros

CampoOndeTipoDescrição
statusopcionalquerystringValores:draftsubmittedpendingapprovedrejectedpauseddisabled
categoryopcionalquerystringValores:marketingutilityauthentication
languageopcionalquerystringValores:pt-BRen-USes-ES
numberIdopcionalquerystring
limitopcionalqueryinteger
skipopcionalqueryinteger

Respostas

  • 200Default Response

    Campos e exemplo da resposta
    CampoTipoDescrição
    itemsobrigatórioobject[]
    items[].idobrigatóriostring
    items[].organizationIdobrigatóriostring
    items[].numberIdobrigatóriostring
    items[].nameobrigatóriostring
    items[].languageobrigatóriostringValores:pt-BRen-USes-ES
    items[].categoryobrigatóriostringValores:marketingutilityauthentication
    items[].statusobrigatóriostringValores:draftsubmittedpendingapprovedrejectedpauseddisabled
    items[].componentsobrigatórioobject[]
    items[].components[].typeobrigatóriostring
    items[].components[].payloadopcionalany
    items[].headerExampleUrlopcionalstring · uri
    items[].metaTemplateIdopcionalstring
    items[].versionobrigatóriointeger
    items[].rejectionReasonopcionalstring
    items[].createdAtobrigatóriostring · date-time
    items[].updatedAtobrigatóriostring · date-time
    totalobrigatóriointeger
    JSON
    {  "items": [    {      "id": "string",      "organizationId": "string",      "numberId": "string",      "name": "string",      "language": "pt-BR",      "category": "marketing",      "status": "draft",      "components": [        {          "type": "string",          "payload": null        }      ],      "headerExampleUrl": "https://example.com",      "metaTemplateId": "string",      "version": 1,      "rejectionReason": "string",      "createdAt": "2026-10-16T12:00:00.000Z",      "updatedAt": "2026-10-16T12:00:00.000Z"    }  ],  "total": 0}
  • 400RFC 7807 problem details for BAD_REQUEST (400).

  • 401RFC 7807 problem details for UNAUTHORIZED (401).

  • 403RFC 7807 problem details for FORBIDDEN (403).

As respostas de erro seguem o formato RFC 7807 (application/problem+json), com um código estável no campo code. Ver os códigos de erro

Exemplo em curl

cURL
curl 'https://api.messages.ccxcompany.co/v2/templates' \  -H "Authorization: Bearer $CCX_API_KEY"
Só os campos obrigatórios. Troque os valores de exemplo pelos seus.

Cria um template em rascunho

POST/v2/templates

Cria um Template em status: "draft" na organização da credencial. O numberId precisa referenciar um Number da própria organização (senão 400).

Unicidade: name + language são únicos por número WABA (a mesma regra da Meta). Duplicado devolve 409.

Criar é inofensivo — nada é enviado à Meta aqui. A submissão para revisão (POST /templates/:id/submit, que consome a cota de revisão) continua fora do contrato público.

Só a forma dos components ({ type, payload }[]) é validada neste passo; as regras da Meta (contagem de variáveis, limites de botão, esquema de URL) valem na submissão.

Corpo da requisiçãoapplication/json

CampoTipoDescrição
numberIdobrigatóriostring
nameobrigatóriostring
languageobrigatóriostringValores:pt-BRen-USes-ES
categoryobrigatóriostringValores:marketingutilityauthentication
componentsobrigatórioobject[]
components[].typeobrigatóriostring
components[].payloadopcionalany
headerExampleUrlopcionalstring · uri
Exemplo completo do corpo
JSON
{  "numberId": "string",  "name": "string",  "language": "pt-BR",  "category": "marketing",  "components": [    {      "type": "string",      "payload": null    }  ],  "headerExampleUrl": "https://example.com"}

Respostas

  • 201Default Response

    Campos e exemplo da resposta
    CampoTipoDescrição
    idobrigatóriostring
    organizationIdobrigatóriostring
    numberIdobrigatóriostring
    nameobrigatóriostring
    languageobrigatóriostringValores:pt-BRen-USes-ES
    categoryobrigatóriostringValores:marketingutilityauthentication
    statusobrigatóriostringValores:draftsubmittedpendingapprovedrejectedpauseddisabled
    componentsobrigatórioobject[]
    components[].typeobrigatóriostring
    components[].payloadopcionalany
    headerExampleUrlopcionalstring · uri
    metaTemplateIdopcionalstring
    versionobrigatóriointeger
    rejectionReasonopcionalstring
    createdAtobrigatóriostring · date-time
    updatedAtobrigatóriostring · date-time
    JSON
    {  "id": "string",  "organizationId": "string",  "numberId": "string",  "name": "string",  "language": "pt-BR",  "category": "marketing",  "status": "draft",  "components": [    {      "type": "string",      "payload": null    }  ],  "headerExampleUrl": "https://example.com",  "metaTemplateId": "string",  "version": 1,  "rejectionReason": "string",  "createdAt": "2026-10-16T12:00:00.000Z",  "updatedAt": "2026-10-16T12:00:00.000Z"}
  • 400RFC 7807 problem details for BAD_REQUEST (400).

  • 401RFC 7807 problem details for UNAUTHORIZED (401).

  • 403RFC 7807 problem details for FORBIDDEN (403).

  • 409RFC 7807 problem details for CONFLICT (409).

  • 422RFC 7807 problem details for VALIDATION_ERROR (422).

As respostas de erro seguem o formato RFC 7807 (application/problem+json), com um código estável no campo code. Ver os códigos de erro

Exemplo em curl

cURL
curl -X POST 'https://api.messages.ccxcompany.co/v2/templates' \  -H "Authorization: Bearer $CCX_API_KEY" \  -H "Content-Type: application/json" \  -d '{    "numberId": "string",    "name": "string",    "language": "pt-BR",    "category": "marketing",    "components": [      {        "type": "string"      }    ]  }'
Só os campos obrigatórios. Troque os valores de exemplo pelos seus.

Lê um template pelo id

GET/v2/templates/{id}

Devolve um template da organização da credencial.

404 também é a resposta para um template de outra organização — o isolamento é imposto pelo Mongo Guardian, e distinguir “não existe” de “não é seu” contaria a existência de dado alheio.

Parâmetros

CampoOndeTipoDescrição
idobrigatóriocaminhostring

Respostas

  • 200Default Response

    Campos e exemplo da resposta
    CampoTipoDescrição
    idobrigatóriostring
    organizationIdobrigatóriostring
    numberIdobrigatóriostring
    nameobrigatóriostring
    languageobrigatóriostringValores:pt-BRen-USes-ES
    categoryobrigatóriostringValores:marketingutilityauthentication
    statusobrigatóriostringValores:draftsubmittedpendingapprovedrejectedpauseddisabled
    componentsobrigatórioobject[]
    components[].typeobrigatóriostring
    components[].payloadopcionalany
    headerExampleUrlopcionalstring · uri
    metaTemplateIdopcionalstring
    versionobrigatóriointeger
    rejectionReasonopcionalstring
    createdAtobrigatóriostring · date-time
    updatedAtobrigatóriostring · date-time
    JSON
    {  "id": "string",  "organizationId": "string",  "numberId": "string",  "name": "string",  "language": "pt-BR",  "category": "marketing",  "status": "draft",  "components": [    {      "type": "string",      "payload": null    }  ],  "headerExampleUrl": "https://example.com",  "metaTemplateId": "string",  "version": 1,  "rejectionReason": "string",  "createdAt": "2026-10-16T12:00:00.000Z",  "updatedAt": "2026-10-16T12:00:00.000Z"}
  • 400RFC 7807 problem details for BAD_REQUEST (400).

  • 401RFC 7807 problem details for UNAUTHORIZED (401).

  • 403RFC 7807 problem details for FORBIDDEN (403).

  • 404RFC 7807 problem details for NOT_FOUND (404).

As respostas de erro seguem o formato RFC 7807 (application/problem+json), com um código estável no campo code. Ver os códigos de erro

Exemplo em curl

cURL
curl 'https://api.messages.ccxcompany.co/v2/templates/<id>' \  -H "Authorization: Bearer $CCX_API_KEY"
Só os campos obrigatórios. Troque os valores de exemplo pelos seus.

Travou em alguma rota? Fale com quem mantém a API.

Criando a conta pelo site, você ganha R$ 10 de crédito de teste.