Empieza gratis

Referencia de la API

Plantillas de WhatsApp

Lista las plantillas de WhatsApp de tu organización con el id, el idioma y las variables de cada una, lee una plantilla por id y crea nuevas en borrador.

  • 3 operaciones
  • URL basehttps://api.messages.ccxcompany.co
  • AutenticaciónBearer con tu clave de API

El texto técnico de abajo viene del contrato público, openapi.json, en el idioma en que se escribió el contrato.

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

CampoDóndeTipoDescripción
statusopcionalquerystringValores:draftsubmittedpendingapprovedrejectedpauseddisabled
categoryopcionalquerystringValores:marketingutilityauthentication
languageopcionalquerystringValores:pt-BRen-USes-ES
numberIdopcionalquerystring
limitopcionalqueryinteger
skipopcionalqueryinteger

Respuestas

  • 200Default Response

    Campos y ejemplo de la respuesta
    CampoTipoDescripción
    itemsobligatorioobject[]
    items[].idobligatoriostring
    items[].organizationIdobligatoriostring
    items[].numberIdobligatoriostring
    items[].nameobligatoriostring
    items[].languageobligatoriostringValores:pt-BRen-USes-ES
    items[].categoryobligatoriostringValores:marketingutilityauthentication
    items[].statusobligatoriostringValores:draftsubmittedpendingapprovedrejectedpauseddisabled
    items[].componentsobligatorioobject[]
    items[].components[].typeobligatoriostring
    items[].components[].payloadopcionalany
    items[].headerExampleUrlopcionalstring · uri
    items[].metaTemplateIdopcionalstring
    items[].versionobligatoriointeger
    items[].rejectionReasonopcionalstring
    items[].createdAtobligatoriostring · date-time
    items[].updatedAtobligatoriostring · date-time
    totalobligatoriointeger
    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).

Las respuestas de error siguen el formato RFC 7807 (application/problem+json), con un código estable en el campo code. Ver los códigos de error

Ejemplo en curl

cURL
curl 'https://api.messages.ccxcompany.co/v2/templates' \  -H "Authorization: Bearer $CCX_API_KEY"
Solo los campos obligatorios. Cambia los valores de ejemplo por los tuyos.

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.

Cuerpo de la peticiónapplication/json

CampoTipoDescripción
numberIdobligatoriostring
nameobligatoriostring
languageobligatoriostringValores:pt-BRen-USes-ES
categoryobligatoriostringValores:marketingutilityauthentication
componentsobligatorioobject[]
components[].typeobligatoriostring
components[].payloadopcionalany
headerExampleUrlopcionalstring · uri
Ejemplo completo del cuerpo
JSON
{  "numberId": "string",  "name": "string",  "language": "pt-BR",  "category": "marketing",  "components": [    {      "type": "string",      "payload": null    }  ],  "headerExampleUrl": "https://example.com"}

Respuestas

  • 201Default Response

    Campos y ejemplo de la respuesta
    CampoTipoDescripción
    idobligatoriostring
    organizationIdobligatoriostring
    numberIdobligatoriostring
    nameobligatoriostring
    languageobligatoriostringValores:pt-BRen-USes-ES
    categoryobligatoriostringValores:marketingutilityauthentication
    statusobligatoriostringValores:draftsubmittedpendingapprovedrejectedpauseddisabled
    componentsobligatorioobject[]
    components[].typeobligatoriostring
    components[].payloadopcionalany
    headerExampleUrlopcionalstring · uri
    metaTemplateIdopcionalstring
    versionobligatoriointeger
    rejectionReasonopcionalstring
    createdAtobligatoriostring · date-time
    updatedAtobligatoriostring · 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).

Las respuestas de error siguen el formato RFC 7807 (application/problem+json), con un código estable en el campo code. Ver los códigos de error

Ejemplo en 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"      }    ]  }'
Solo los campos obligatorios. Cambia los valores de ejemplo por los tuyos.

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

CampoDóndeTipoDescripción
idobligatoriorutastring

Respuestas

  • 200Default Response

    Campos y ejemplo de la respuesta
    CampoTipoDescripción
    idobligatoriostring
    organizationIdobligatoriostring
    numberIdobligatoriostring
    nameobligatoriostring
    languageobligatoriostringValores:pt-BRen-USes-ES
    categoryobligatoriostringValores:marketingutilityauthentication
    statusobligatoriostringValores:draftsubmittedpendingapprovedrejectedpauseddisabled
    componentsobligatorioobject[]
    components[].typeobligatoriostring
    components[].payloadopcionalany
    headerExampleUrlopcionalstring · uri
    metaTemplateIdopcionalstring
    versionobligatoriointeger
    rejectionReasonopcionalstring
    createdAtobligatoriostring · date-time
    updatedAtobligatoriostring · 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).

Las respuestas de error siguen el formato RFC 7807 (application/problem+json), con un código estable en el campo code. Ver los códigos de error

Ejemplo en curl

cURL
curl 'https://api.messages.ccxcompany.co/v2/templates/<id>' \  -H "Authorization: Bearer $CCX_API_KEY"
Solo los campos obligatorios. Cambia los valores de ejemplo por los tuyos.

¿Atascado en una ruta? Habla con quienes mantienen la API.

Si creas la cuenta desde la web, recibes 5 US$ de crédito de prueba.