Empieza gratis

Referencia de la API

Números de WhatsApp

Lista los números de WhatsApp de tu organización, consulta estado, calidad y límite de cada uno directamente en Meta y sigue el volumen de envíos.

  • 5 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.

List WABA numbers in the current organization

GET/numbers

Returns a paginated list. Filters: status, qualityRating, limit, skip. Sorted by createdAt desc.

Parámetros

CampoDóndeTipoDescripción
statusopcionalquerystringValores:availableconnecteddisconnectedflaggedpending
qualityRatingopcionalquerystringValores:greenyellowredunknown
limitopcionalqueryinteger
skipopcionalqueryinteger

Respuestas

  • 200Default Response

    Campos y ejemplo de la respuesta
    CampoTipoDescripción
    itemsobligatorioobject[]
    items[].idobligatoriostringBranded Number id (num_ prefix + 21 nano-id chars).
    items[].organizationIdobligatoriostringBranded Organization id (org_ prefix + 21 nano-id chars).
    items[].phoneNumberIdobligatoriostringMeta phone_number_id from the WABA Graph API.
    items[].wabaIdobligatoriostringMeta WhatsApp Business Account id.
    items[].displayPhoneobligatoriostringE.164 phone number — PII_SENSITIVE, masked in cross-tenant responses.
    items[].statusobligatoriostringValores:availableconnecteddisconnectedflaggedpending
    items[].qualityRatingobligatoriostringValores:greenyellowredunknown
    items[].messagingTierobligatoriostringValores:tier_250tier_1ktier_2ktier_10ktier_100kunlimited
    items[].rateLimitobligatorioobject
    items[].rateLimit.perSecondobligatoriointeger
    items[].rateLimit.perDayobligatoriointeger
    items[].metaobligatorioobject
    items[].meta.verifiedNameopcionalstringDisplay name registered with WhatsApp Business.
    items[].meta.byoopcionalbooleanTrue when the number runs under the customer's own WABA.
    items[].meta.nameStatusopcionalstringSituação do nome de exibição na Meta. Ausente ⇒ desconhecido (número sem sync). Não deduza aprovação da presença de verifiedName: a Meta devolve o nome mesmo quando o recusa.Valores:approvedpendingrejectedexpirednone
    items[].meta.partnerRemovedAtopcionalstring | null · date-timeWhen Meta reported (account_update PARTNER_REMOVED or PARTNER_APP_UNINSTALLED) that the customer removed CCX from this number's account. Only a mark: status and history are untouched, but sending through this number is expected to fail. null/absent = no such report pending.
    items[].meta.partnerRemovedReasonopcionalstring | nullWhich Meta event set partnerRemovedAt; set and cleared together with it: - PARTNER_REMOVED — the customer stopped sharing the account with CCX. - PARTNER_APP_UNINSTALLED — the customer uninstalled the CCX app (or removed its permissions), which revokes the token CCX sends with.Valores:PARTNER_REMOVEDPARTNER_APP_UNINSTALLED
    items[].profileopcionalobject
    items[].profile.aboutopcionalstring
    items[].profile.addressopcionalstring
    items[].profile.emailopcionalstring
    items[].profile.websiteopcionalstring
    items[].profile.verticalopcionalstring
    items[].profile.profilePictureUrlopcionalstring
    items[].lastMetaSyncAtopcionalstring | null · date-time
    items[].createdAtobligatoriostring · date-timeISO-8601 timestamp in UTC.
    items[].updatedAtobligatoriostring · date-timeISO-8601 timestamp in UTC.
    totalobligatoriointeger
    JSON
    {  "items": [    {      "id": "num_aB3xY9zQ1pTkLmNoPqRsT",      "organizationId": "org_pGgniw5L7CTDSZDwjDrQ2",      "phoneNumberId": "1234567890123456",      "wabaId": "9876543210987654",      "displayPhone": "+5511999998888",      "status": "connected",      "qualityRating": "green",      "messagingTier": "tier_1k",      "rateLimit": {        "perSecond": 80,        "perDay": 100000      },      "meta": {        "verifiedName": "Acme Sales",        "byo": false,        "nameStatus": "rejected",        "partnerRemovedAt": "2026-10-16T12:00:00.000Z",        "partnerRemovedReason": "PARTNER_REMOVED"      },      "profile": {        "about": "string",        "address": "string",        "email": "string",        "website": "string",        "vertical": "string",        "profilePictureUrl": "string"      },      "lastMetaSyncAt": "2026-10-16T12:00:00.000Z",      "createdAt": "2026-04-07T17:30:00.000Z",      "updatedAt": "2026-04-07T17:30:00.000Z"    }  ],  "total": 3}
  • 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/numbers' \  -H "Authorization: Bearer $CCX_API_KEY"
Solo los campos obligatorios. Cambia los valores de ejemplo por los tuyos.

Get a single WABA number

GET/numbers/{id}

Returns the full Number record for the given id. Tenant isolation is enforced by the Mongo Guardian filter — a request from another org receives 404, not the doc.

Parámetros

CampoDóndeTipoDescripción
idobligatoriorutastringBranded Number id (num_ prefix + 21 nano-id chars).

Respuestas

  • 200Default Response

    Campos y ejemplo de la respuesta
    CampoTipoDescripción
    idobligatoriostringBranded Number id (num_ prefix + 21 nano-id chars).
    organizationIdobligatoriostringBranded Organization id (org_ prefix + 21 nano-id chars).
    phoneNumberIdobligatoriostringMeta phone_number_id from the WABA Graph API.
    wabaIdobligatoriostringMeta WhatsApp Business Account id.
    displayPhoneobligatoriostringE.164 phone number — PII_SENSITIVE, masked in cross-tenant responses.
    statusobligatoriostringValores:availableconnecteddisconnectedflaggedpending
    qualityRatingobligatoriostringValores:greenyellowredunknown
    messagingTierobligatoriostringValores:tier_250tier_1ktier_2ktier_10ktier_100kunlimited
    rateLimitobligatorioobject
    rateLimit.perSecondobligatoriointeger
    rateLimit.perDayobligatoriointeger
    metaobligatorioobject
    meta.verifiedNameopcionalstringDisplay name registered with WhatsApp Business.
    meta.byoopcionalbooleanTrue when the number runs under the customer's own WABA.
    meta.nameStatusopcionalstringSituação do nome de exibição na Meta. Ausente ⇒ desconhecido (número sem sync). Não deduza aprovação da presença de verifiedName: a Meta devolve o nome mesmo quando o recusa.Valores:approvedpendingrejectedexpirednone
    meta.partnerRemovedAtopcionalstring | null · date-timeWhen Meta reported (account_update PARTNER_REMOVED or PARTNER_APP_UNINSTALLED) that the customer removed CCX from this number's account. Only a mark: status and history are untouched, but sending through this number is expected to fail. null/absent = no such report pending.
    meta.partnerRemovedReasonopcionalstring | nullWhich Meta event set partnerRemovedAt; set and cleared together with it: - PARTNER_REMOVED — the customer stopped sharing the account with CCX. - PARTNER_APP_UNINSTALLED — the customer uninstalled the CCX app (or removed its permissions), which revokes the token CCX sends with.Valores:PARTNER_REMOVEDPARTNER_APP_UNINSTALLED
    profileopcionalobject
    profile.aboutopcionalstring
    profile.addressopcionalstring
    profile.emailopcionalstring
    profile.websiteopcionalstring
    profile.verticalopcionalstring
    profile.profilePictureUrlopcionalstring
    lastMetaSyncAtopcionalstring | null · date-time
    createdAtobligatoriostring · date-timeISO-8601 timestamp in UTC.
    updatedAtobligatoriostring · date-timeISO-8601 timestamp in UTC.
    JSON
    {  "id": "num_aB3xY9zQ1pTkLmNoPqRsT",  "organizationId": "org_pGgniw5L7CTDSZDwjDrQ2",  "phoneNumberId": "1234567890123456",  "wabaId": "9876543210987654",  "displayPhone": "+5511999998888",  "status": "connected",  "qualityRating": "green",  "messagingTier": "tier_1k",  "rateLimit": {    "perSecond": 80,    "perDay": 100000  },  "meta": {    "verifiedName": "Acme Sales",    "byo": false,    "nameStatus": "rejected",    "partnerRemovedAt": "2026-10-16T12:00:00.000Z",    "partnerRemovedReason": "PARTNER_REMOVED"  },  "profile": {    "about": "string",    "address": "string",    "email": "string",    "website": "string",    "vertical": "string",    "profilePictureUrl": "string"  },  "lastMetaSyncAt": "2026-10-16T12:00:00.000Z",  "createdAt": "2026-04-07T17:30:00.000Z",  "updatedAt": "2026-04-07T17:30:00.000Z"}
  • 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/numbers/num_aB3xY9zQ1pTkLmNoPqRsT' \  -H "Authorization: Bearer $CCX_API_KEY"
Solo los campos obligatorios. Cambia los valores de ejemplo por los tuyos.

Real-time health check from Meta

GET/numbers/{id}/health

Fetches current number status, quality, messaging tier, and business profile directly from Meta Graph API.

Parámetros

CampoDóndeTipoDescripción
idobligatoriorutastringBranded Number id (num_ prefix + 21 nano-id chars).

Respuestas

  • 200Default Response

    Campos y ejemplo de la respuesta
    JSON
    {}
  • 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/numbers/num_aB3xY9zQ1pTkLmNoPqRsT/health' \  -H "Authorization: Bearer $CCX_API_KEY"
Solo los campos obligatorios. Cambia los valores de ejemplo por los tuyos.

Envios reais deste número na janela pedida (default 24h)

GET/numbers/{id}/usage

Agrega messages (outbound, numberId) na janela. Aceita ?window=24h|7d|30d.

Parámetros

CampoDóndeTipoDescripción
windowopcionalquerystring
idobligatoriorutastringBranded Number id (num_ prefix + 21 nano-id chars).

Respuestas

  • 200Default Response

    Campos y ejemplo de la respuesta
    CampoTipoDescripción
    windowobligatoriostring
    sentobligatoriointeger
    marketingSentopcionalinteger | null
    sinceobligatoriostring · date-time
    untilobligatoriostring · date-time
    JSON
    {  "window": "string",  "sent": 0,  "marketingSent": 0,  "since": "2026-10-16T12:00:00.000Z",  "until": "2026-10-16T12:00:00.000Z"}
  • 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/numbers/num_aB3xY9zQ1pTkLmNoPqRsT/usage' \  -H "Authorization: Bearer $CCX_API_KEY"
Solo los campos obligatorios. Cambia los valores de ejemplo por los tuyos.

Timeseries de envios (buckets pra sparkline)

GET/numbers/{id}/usage/timeseries

Retorna points[] alinhados no bucket pedido (hour|day). Buckets vazios entram como sent: 0 — o cliente pode desenhar direto.

Parámetros

CampoDóndeTipoDescripción
windowopcionalquerystring
bucketopcionalquerystringValores:hourday
idobligatoriorutastringBranded Number id (num_ prefix + 21 nano-id chars).

Respuestas

  • 200Default Response

    Campos y ejemplo de la respuesta
    CampoTipoDescripción
    windowobligatoriostring
    bucketobligatoriostringValores:hourday
    sinceobligatoriostring · date-time
    untilobligatoriostring · date-time
    pointsobligatorioobject[]
    points[].atobligatoriostring · date-time
    points[].sentobligatoriointeger
    JSON
    {  "window": "string",  "bucket": "hour",  "since": "2026-10-16T12:00:00.000Z",  "until": "2026-10-16T12:00:00.000Z",  "points": [    {      "at": "2026-10-16T12:00:00.000Z",      "sent": 0    }  ]}
  • 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/numbers/num_aB3xY9zQ1pTkLmNoPqRsT/usage/timeseries' \  -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.