---
title: "API Oficial (Coex)"
description: "API Oficial do WhatsApp em modo Coexistence. O número continua funcionando normalmente no app WhatsApp Business do cliente, e a API enxerga as mesmas conversas — incluindo o histórico de até 6 meses e o eco das mensagens enviadas pelo celular. Não suporta Flows nem chamadas."
lang: pt-BR
canonical: https://doc.apibrasil.io/apis/planos/fb6b63b70-a5d1-11f1-a5b5-87848949795
markdown: https://doc.apibrasil.io/apis/planos/fb6b63b70-a5d1-11f1-a5b5-87848949795.md
source: apibrasil-documentation
---

# API Oficial (Coex)

> API Oficial do WhatsApp em modo Coexistence. O número continua funcionando normalmente no app WhatsApp Business do cliente, e a API enxerga as mesmas conversas — incluindo o histórico de até 6 meses e o eco das mensagens enviadas pelo celular. Não suporta Flows nem chamadas.

- **Categoria:** Comunicação
- **Cobrança:** por plano, com Bearer Token e DeviceToken
- **Preço:** R$ 129,90 por mês
- **Limite:** 10 por mês
- **Cadastro:** CPF ou CNPJ
- **Versão:** v2
- **Publicada por:** APIBrasil
- **Especificação OpenAPI:** https://doc.apibrasil.io/apis/planos/fb6b63b70-a5d1-11f1-a5b5-87848949795/openapi.json

## Como chamar

**Endereço base:** `https://gateway.apibrasil.io/api/v2`

Autenticação: cabeçalho `Authorization: Bearer <token>` E o cabeçalho `DeviceToken: <token do dispositivo>`. Esta API cobra por plano, e sem o segundo cabeçalho ela recusa.

## Endpoints (80 endpoints)

**Sumário**

*Conexão*

1. `POST /coex/start` — Iniciar conexão
2. `POST /coex/qrcode` — QR Code de conexão
3. `POST /coex/connect-url` — URL de conexão (sem imagem)
4. `POST /coex/connect-manual` — Conexão manual (token próprio)
5. `GET /coex/connect-requirements` — Pré-requisitos da conexão
6. `GET /coex/connect-config` — Configuração do Embedded Signup
7. `POST /coex/connect-exchange` — Trocar código do Embedded Signup
8. `POST /coex/status` — Status da conexão
9. `GET /coex/capabilities` — Capacidades da conexão
10. `POST /coex/restart` — Reiniciar sessão
11. `POST /coex/logout` — Desconectar
12. `POST /coex/close` — Desconectar (alias)
13. `POST /coex/deleteSession` — Encerrar sessão (alias)

*Envio*

14. `POST /coex/send-text` — Enviar texto
15. `POST /coex/send-template` — Enviar template
16. `POST /coex/send-media` — Enviar mídia (upload)
17. `POST /coex/send-media-link` — Enviar mídia por link
18. `POST /coex/send-audio` — Enviar áudio
19. `POST /coex/send-location` — Enviar localização
20. `POST /coex/send-contacts` — Enviar contatos
21. `POST /coex/send-interactive` — Enviar mensagem interativa
22. `POST /coex/send-buttons` — Enviar botões de resposta
23. `POST /coex/send-list` — Enviar lista de opções
24. `POST /coex/send-cta` — Enviar botão de link (CTA)
25. `POST /coex/send-reaction` — Enviar reação
26. `POST /coex/send-product` — Enviar produto
27. `POST /coex/send-catalog` — Enviar catálogo
28. `POST /coex/send-product-list` — Enviar lista de produtos
29. `POST /coex/send-order-details` — Enviar detalhes do pedido
30. `POST /coex/send-order-status` — Enviar status do pedido

*Envio (aliases)*

31. `POST /coex/sendText` — Enviar texto (alias)
32. `POST /coex/sendFile` — Enviar arquivo (alias)
33. `POST /coex/sendLink` — Enviar mídia por link (alias)
34. `POST /coex/sendButtons` — Enviar botões (alias)
35. `POST /coex/sendLocation` — Enviar localização (alias)

*Mensagem*

36. `POST /coex/mark-read` — Marcar como lida
37. `POST /coex/typing` — Indicador de digitando

*Mídia*

38. `POST /coex/media/upload` — Enviar mídia para a Meta
39. `GET /coex/media/info` — Metadados da mídia
40. `GET /coex/media/download` — Baixar mídia
41. `DELETE /coex/media/delete` — Excluir mídia

*Templates*

42. `GET /coex/templates/list` — Listar templates
43. `POST /coex/templates/create` — Criar template
44. `POST /coex/templates/update` — Atualizar template
45. `DELETE /coex/templates/delete` — Excluir template

*Número e perfil*

46. `GET /coex/phone/info` — Dados do número
47. `GET /coex/phone/display-name-status` — Status do nome de exibição
48. `GET /coex/profile/get` — Obter perfil comercial
49. `POST /coex/profile/update` — Atualizar perfil comercial

*Bloqueio*

50. `POST /coex/block` — Bloquear números
51. `POST /coex/unblock` — Desbloquear números
52. `GET /coex/blocked/list` — Listar bloqueados

*QR Code comercial*

53. `GET /coex/qr/list` — Listar QR Codes comerciais
54. `POST /coex/qr/create` — Criar QR Code comercial
55. `POST /coex/qr/update` — Atualizar QR Code comercial
56. `DELETE /coex/qr/delete` — Excluir QR Code comercial

*Conta*

57. `GET /coex/account/info` — Dados da conta WhatsApp Business
58. `POST /coex/account/subscribe` — Assinar webhooks na conta
59. `POST /coex/account/unsubscribe` — Cancelar assinatura de webhooks
60. `GET /coex/account/subscriptions` — Conferir assinaturas

*Analytics*

61. `GET /coex/analytics/messages` — Métricas de mensagens
62. `GET /coex/analytics/conversations` — Métricas de conversas

*Preços*

63. `GET /coex/pricing/plan` — Preços da API
64. `POST /coex/pricing/estimate` — Estimar custo do disparo

*Histórico*

65. `GET /coex/messages/list` — Listar mensagens
66. `GET /coex/messages/show` — Detalhe da mensagem
67. `POST /coex/messages/export` — Exportar mensagens
68. `GET /coex/usage/summary` — Resumo de consumo

*Fila*

69. `GET /coex/queue/status` — Status da fila
70. `POST /coex/queue/cancel` — Cancelar mensagem na fila
71. `GET /coex/queue/list` — Listar jobs (compatibilidade)
72. `POST /coex/queue/show` — Consultar jobs (compatibilidade)

*Webhooks*

73. `GET /coex/webhooks/get` — Obter webhooks configurados
74. `POST /coex/webhooks/set` — Configurar webhooks
75. `POST /coex/webhooks/test` — Testar webhook
76. `GET /coex/webhooks/deliveries` — Histórico de entregas

*Coexistence*

77. `GET /coex/coex/status` — Status da coexistência
78. `GET /coex/coex/history-progress` — Progresso do sync de histórico
79. `POST /coex/coex/activate` — Ativar coexistência
80. `POST /coex/coex/deactivate` — Desativar coexistência

### 1. POST /coex/start — Iniciar conexão

Abre a sessão de conexão e devolve tudo que os três caminhos precisam: url hospedada, QR, session_token e os parâmetros do Embedded Signup. Não consome saldo.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/start`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "external_id": "cliente-4471",
  "label": "Pizzaria do João",
  "redirect_url": "https://meusite.com/onboard/ok",
  "expires_in": 3600,
  "branding": {
    "logo": "https://meusite.com/logo.png",
    "color": "#FF6600",
    "name": "Agência X"
  },
  "locale": "pt_BR"
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/start" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"external_id":"cliente-4471","label":"Pizzaria do João","redirect_url":"https://meusite.com/onboard/ok","expires_in":3600,"branding":{"logo":"https://meusite.com/logo.png","color":"#FF6600","name":"Agência X"},"locale":"pt_BR"}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "message": "Sessão de conexão criada com sucesso",
  "response": {
    "session_token": "s_9f1c8e2a",
    "status": "awaiting_authorization",
    "url": "https://connect.apibrasil.io/c/s_9f1c8e2a",
    "qrcode": "data:image/png;base64,...",
    "expires_at": "2026-08-04T19:30:00Z",
    "embedded": {
      "app_id": "...",
      "config_id": "...",
      "state": "...",
      "graph_version": "v23.0"
    }
  }
}
```

### 2. POST /coex/qrcode — QR Code de conexão

PNG em base64 do QR que leva à autorização na Meta. Mesmo envelope do wppconnect. Não é o QR do WhatsApp Web: ele codifica a URL de autorização. Não consome saldo.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/qrcode`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/qrcode" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "message": "QRCode gerado com sucesso",
  "device": {
    "status": "DISCONNECTED",
    "device_token": "{DEVICE_TOKEN}",
    "device_name": "MinhaEmpresa01"
  },
  "response": {
    "qrcode": "data:image/png;base64,...",
    "url": "https://connect.apibrasil.io/c/s_9f1c8e2a",
    "expires_at": "2026-08-04T19:30:00Z"
  }
}
```

### 3. POST /coex/connect-url — URL de conexão (sem imagem)

Devolve apenas o link de autorização, para integração server-to-server ou envio por e-mail/SMS. Não consome saldo.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/connect-url`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "external_id": "cliente-4471",
  "redirect_url": "https://meusite.com/onboard/ok"
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/connect-url" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"external_id":"cliente-4471","redirect_url":"https://meusite.com/onboard/ok"}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "url": "https://connect.apibrasil.io/c/s_9f1c8e2a",
    "expires_at": "2026-08-04T19:30:00Z"
  }
}
```

### 4. POST /coex/connect-manual — Conexão manual (token próprio)

Único caminho 100% API, sem browser. O cliente informa waba_id, phone_number_id e um token de System User gerado no Meta Business Suite. Não consome saldo.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/connect-manual`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "waba_id": "123456789",
  "phone_number_id": "987654321",
  "access_token": "EAAG..."
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/connect-manual" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"waba_id":"123456789","phone_number_id":"987654321","access_token":"EAAG..."}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "message": "Conexão provisionada com sucesso",
  "response": {
    "status": "connected",
    "display_phone_number": "+55 11 99999-9999"
  }
}
```

### 5. GET /coex/connect-requirements — Pré-requisitos da conexão

Checklist do que o dono do número precisa ter antes de autorizar. Em CoEx inclui o app WhatsApp Business instalado com aquele número. Não consome saldo.

- **Método:** `GET`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/connect-requirements`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X GET "https://gateway.apibrasil.io/api/v2/coex/connect-requirements" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "requirements": [
      {
        "key": "facebook_account",
        "label": "Conta no Facebook",
        "required": true
      }
    ]
  }
}
```

### 6. GET /coex/connect-config — Configuração do Embedded Signup

Parâmetros para embutir o Embedded Signup no site do próprio cliente (caminho avançado). O padrão recomendado é a página hospedada. Não consome saldo. Disponível a partir da fase 2.

- **Método:** `GET`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/connect-config`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X GET "https://gateway.apibrasil.io/api/v2/coex/connect-config" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "app_id": "...",
    "config_id": "...",
    "graph_version": "v23.0",
    "state": "..."
  }
}
```

### 7. POST /coex/connect-exchange — Trocar código do Embedded Signup

Recebe o code devolvido pelo Embedded Signup rodando no site do cliente e provisiona a conexão. A troca acontece no servidor, nunca no browser. Não consome saldo. Disponível a partir da fase 2.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/connect-exchange`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "code": "AQD...",
  "state": "..."
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/connect-exchange" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"code":"AQD...","state":"..."}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "status": "connected"
  }
}
```

### 8. POST /coex/status — Status da conexão

Estado da conexão e saúde do número: qualidade, tier de mensagens, validade do token e progresso do onboarding. Não consome saldo.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/status`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/status" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "status": "connected",
    "quality_rating": "GREEN",
    "messaging_limit_tier": "TIER_1K",
    "external_id": "cliente-4471"
  }
}
```

### 9. GET /coex/capabilities — Capacidades da conexão

Lista o que esta conexão suporta e o que está bloqueado, com o motivo. Evita descobrir a limitação errando. Não consome saldo.

- **Método:** `GET`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/capabilities`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X GET "https://gateway.apibrasil.io/api/v2/coex/capabilities" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "mode": "coex",
    "allowed": [
      "send-text",
      "send-template"
    ],
    "blocked": [
      {
        "action": "send-flow",
        "reason": "Flows não disponíveis em Coexistence"
      }
    ]
  }
}
```

### 10. POST /coex/restart — Reiniciar sessão

Renova a sessão de conexão e o token, sem perder o device. Não consome saldo.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/restart`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/restart" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "message": "Sessão reiniciada"
}
```

### 11. POST /coex/logout — Desconectar

Encerra a conexão e remove a assinatura do app na WABA do cliente. Não consome saldo.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/logout`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/logout" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "message": "Desconectado com sucesso"
}
```

### 12. POST /coex/close — Desconectar (alias)

Alias de logout, para compatibilidade com quem já integra o wppconnect. Não consome saldo.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/close`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/close" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "message": "Desconectado com sucesso"
}
```

### 13. POST /coex/deleteSession — Encerrar sessão (alias)

Alias de logout, para compatibilidade com quem já integra o wppconnect. Não consome saldo.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/deleteSession`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/deleteSession" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "message": "Desconectado com sucesso"
}
```

### 14. POST /coex/send-text — Enviar texto

Mensagem de texto simples. Aceita resposta a uma mensagem anterior e preview de link. Cobra R$ 0,007 por chamada bem-sucedida — falha não é cobrada. Aceita o sufixo /queue para envio assíncrono via RabbitMQ.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/send-text`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "to": "5511999999999",
  "body": "Olá! Seu pedido foi confirmado.",
  "reply_to": null,
  "preview_url": false
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/send-text" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","body":"Olá! Seu pedido foi confirmado.","reply_to":null,"preview_url":false}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "sincrono": {
    "error": false,
    "message": "Mensagem enviada com sucesso",
    "response": {
      "id": "wamid.HBgN...",
      "status": "sent"
    }
  },
  "fila": {
    "error": false,
    "message": "Mensagem enfileirada com sucesso",
    "response": {
      "id": "9f1c8e2a-...",
      "status": "queued",
      "position": 42
    }
  }
}
```

### 15. POST /coex/send-template — Enviar template

Template aprovado pela Meta. Único caminho para iniciar conversa fora da janela de 24h. Cobra R$ 0,007 por chamada bem-sucedida — falha não é cobrada. Aceita o sufixo /queue para envio assíncrono via RabbitMQ.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/send-template`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "to": "5511999999999",
  "template": "boas_vindas",
  "language": "pt_BR",
  "components": [
    {
      "type": "body",
      "parameters": [
        {
          "type": "text",
          "text": "João"
        }
      ]
    }
  ]
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/send-template" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","template":"boas_vindas","language":"pt_BR","components":[{"type":"body","parameters":[{"type":"text","text":"João"}]}]}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "sincrono": {
    "error": false,
    "message": "Mensagem enviada com sucesso",
    "response": {
      "id": "wamid.HBgN...",
      "status": "sent"
    }
  },
  "fila": {
    "error": false,
    "message": "Mensagem enfileirada com sucesso",
    "response": {
      "id": "9f1c8e2a-...",
      "status": "queued",
      "position": 42
    }
  }
}
```

### 16. POST /coex/send-media — Enviar mídia (upload)

Imagem, vídeo, áudio ou documento enviado por base64 ou multipart. A mídia sobe para a Meta antes do envio. Cobra R$ 0,007 por chamada bem-sucedida — falha não é cobrada. Aceita o sufixo /queue para envio assíncrono via RabbitMQ.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/send-media`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "to": "5511999999999",
  "type": "image",
  "base64": "data:image/png;base64,...",
  "caption": "Segue a nota fiscal",
  "filename": "nota.pdf"
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/send-media" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","type":"image","base64":"data:image/png;base64,...","caption":"Segue a nota fiscal","filename":"nota.pdf"}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "sincrono": {
    "error": false,
    "message": "Mensagem enviada com sucesso",
    "response": {
      "id": "wamid.HBgN...",
      "status": "sent"
    }
  },
  "fila": {
    "error": false,
    "message": "Mensagem enfileirada com sucesso",
    "response": {
      "id": "9f1c8e2a-...",
      "status": "queued",
      "position": 42
    }
  }
}
```

### 17. POST /coex/send-media-link — Enviar mídia por link

Mídia a partir de uma URL pública. A Meta baixa o arquivo — mais rápido que o upload. Cobra R$ 0,007 por chamada bem-sucedida — falha não é cobrada. Aceita o sufixo /queue para envio assíncrono via RabbitMQ.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/send-media-link`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "to": "5511999999999",
  "type": "image",
  "link": "https://meusite.com/foto.jpg",
  "caption": "Chegou!"
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/send-media-link" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","type":"image","link":"https://meusite.com/foto.jpg","caption":"Chegou!"}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "sincrono": {
    "error": false,
    "message": "Mensagem enviada com sucesso",
    "response": {
      "id": "wamid.HBgN...",
      "status": "sent"
    }
  },
  "fila": {
    "error": false,
    "message": "Mensagem enfileirada com sucesso",
    "response": {
      "id": "9f1c8e2a-...",
      "status": "queued",
      "position": 42
    }
  }
}
```

### 18. POST /coex/send-audio — Enviar áudio

Áudio ou mensagem de voz. Aceita base64 ou link. Cobra R$ 0,007 por chamada bem-sucedida — falha não é cobrada. Aceita o sufixo /queue para envio assíncrono via RabbitMQ.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/send-audio`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "to": "5511999999999",
  "link": "https://meusite.com/audio.ogg"
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/send-audio" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","link":"https://meusite.com/audio.ogg"}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "sincrono": {
    "error": false,
    "message": "Mensagem enviada com sucesso",
    "response": {
      "id": "wamid.HBgN...",
      "status": "sent"
    }
  },
  "fila": {
    "error": false,
    "message": "Mensagem enfileirada com sucesso",
    "response": {
      "id": "9f1c8e2a-...",
      "status": "queued",
      "position": 42
    }
  }
}
```

### 19. POST /coex/send-location — Enviar localização

Ponto no mapa com nome e endereço opcionais. Cobra R$ 0,007 por chamada bem-sucedida — falha não é cobrada. Aceita o sufixo /queue para envio assíncrono via RabbitMQ.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/send-location`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "to": "5511999999999",
  "latitude": -23.5505,
  "longitude": -46.6333,
  "name": "Loja Centro",
  "address": "Av. Paulista, 1000"
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/send-location" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","latitude":-23.5505,"longitude":-46.6333,"name":"Loja Centro","address":"Av. Paulista, 1000"}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "sincrono": {
    "error": false,
    "message": "Mensagem enviada com sucesso",
    "response": {
      "id": "wamid.HBgN...",
      "status": "sent"
    }
  },
  "fila": {
    "error": false,
    "message": "Mensagem enfileirada com sucesso",
    "response": {
      "id": "9f1c8e2a-...",
      "status": "queued",
      "position": 42
    }
  }
}
```

### 20. POST /coex/send-contacts — Enviar contatos

Um ou mais cartões de contato. Cobra R$ 0,007 por chamada bem-sucedida — falha não é cobrada. Aceita o sufixo /queue para envio assíncrono via RabbitMQ.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/send-contacts`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "to": "5511999999999",
  "contacts": [
    {
      "name": {
        "formatted_name": "Suporte"
      },
      "phones": [
        {
          "phone": "5511888888888"
        }
      ]
    }
  ]
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/send-contacts" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","contacts":[{"name":{"formatted_name":"Suporte"},"phones":[{"phone":"5511888888888"}]}]}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "sincrono": {
    "error": false,
    "message": "Mensagem enviada com sucesso",
    "response": {
      "id": "wamid.HBgN...",
      "status": "sent"
    }
  },
  "fila": {
    "error": false,
    "message": "Mensagem enfileirada com sucesso",
    "response": {
      "id": "9f1c8e2a-...",
      "status": "queued",
      "position": 42
    }
  }
}
```

### 21. POST /coex/send-interactive — Enviar mensagem interativa

Objeto interactive cru da Cloud API, para quem quer controle total do payload. Cobra R$ 0,007 por chamada bem-sucedida — falha não é cobrada. Aceita o sufixo /queue para envio assíncrono via RabbitMQ.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/send-interactive`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "to": "5511999999999",
  "interactive": {
    "type": "button",
    "body": {
      "text": "Confirma?"
    },
    "action": {
      "buttons": []
    }
  }
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/send-interactive" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","interactive":{"type":"button","body":{"text":"Confirma?"},"action":{"buttons":[]}}}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "sincrono": {
    "error": false,
    "message": "Mensagem enviada com sucesso",
    "response": {
      "id": "wamid.HBgN...",
      "status": "sent"
    }
  },
  "fila": {
    "error": false,
    "message": "Mensagem enfileirada com sucesso",
    "response": {
      "id": "9f1c8e2a-...",
      "status": "queued",
      "position": 42
    }
  }
}
```

### 22. POST /coex/send-buttons — Enviar botões de resposta

Até 3 botões de resposta rápida. Cobra R$ 0,007 por chamada bem-sucedida — falha não é cobrada. Aceita o sufixo /queue para envio assíncrono via RabbitMQ.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/send-buttons`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "to": "5511999999999",
  "body": "Deseja confirmar o pedido?",
  "buttons": [
    {
      "id": "sim",
      "title": "Sim"
    },
    {
      "id": "nao",
      "title": "Não"
    }
  ]
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/send-buttons" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","body":"Deseja confirmar o pedido?","buttons":[{"id":"sim","title":"Sim"},{"id":"nao","title":"Não"}]}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "sincrono": {
    "error": false,
    "message": "Mensagem enviada com sucesso",
    "response": {
      "id": "wamid.HBgN...",
      "status": "sent"
    }
  },
  "fila": {
    "error": false,
    "message": "Mensagem enfileirada com sucesso",
    "response": {
      "id": "9f1c8e2a-...",
      "status": "queued",
      "position": 42
    }
  }
}
```

### 23. POST /coex/send-list — Enviar lista de opções

Menu em lista com seções e itens. Cobra R$ 0,007 por chamada bem-sucedida — falha não é cobrada. Aceita o sufixo /queue para envio assíncrono via RabbitMQ.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/send-list`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "to": "5511999999999",
  "body": "Escolha um produto",
  "button": "Ver opções",
  "sections": [
    {
      "title": "Pizzas",
      "rows": [
        {
          "id": "p1",
          "title": "Calabresa"
        }
      ]
    }
  ]
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/send-list" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","body":"Escolha um produto","button":"Ver opções","sections":[{"title":"Pizzas","rows":[{"id":"p1","title":"Calabresa"}]}]}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "sincrono": {
    "error": false,
    "message": "Mensagem enviada com sucesso",
    "response": {
      "id": "wamid.HBgN...",
      "status": "sent"
    }
  },
  "fila": {
    "error": false,
    "message": "Mensagem enfileirada com sucesso",
    "response": {
      "id": "9f1c8e2a-...",
      "status": "queued",
      "position": 42
    }
  }
}
```

### 24. POST /coex/send-cta — Enviar botão de link (CTA)

Mensagem com botão que abre uma URL. Cobra R$ 0,007 por chamada bem-sucedida — falha não é cobrada. Aceita o sufixo /queue para envio assíncrono via RabbitMQ.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/send-cta`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "to": "5511999999999",
  "body": "Acompanhe seu pedido",
  "display_text": "Rastrear",
  "url": "https://meusite.com/pedido/123"
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/send-cta" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","body":"Acompanhe seu pedido","display_text":"Rastrear","url":"https://meusite.com/pedido/123"}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "sincrono": {
    "error": false,
    "message": "Mensagem enviada com sucesso",
    "response": {
      "id": "wamid.HBgN...",
      "status": "sent"
    }
  },
  "fila": {
    "error": false,
    "message": "Mensagem enfileirada com sucesso",
    "response": {
      "id": "9f1c8e2a-...",
      "status": "queued",
      "position": 42
    }
  }
}
```

### 25. POST /coex/send-reaction — Enviar reação

Reage a uma mensagem com emoji. Emoji vazio remove a reação. Cobra R$ 0,007 por chamada bem-sucedida — falha não é cobrada. Aceita o sufixo /queue para envio assíncrono via RabbitMQ.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/send-reaction`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "to": "5511999999999",
  "message_id": "wamid.HBgN...",
  "emoji": "👍"
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/send-reaction" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","message_id":"wamid.HBgN...","emoji":"👍"}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "sincrono": {
    "error": false,
    "message": "Mensagem enviada com sucesso",
    "response": {
      "id": "wamid.HBgN...",
      "status": "sent"
    }
  },
  "fila": {
    "error": false,
    "message": "Mensagem enfileirada com sucesso",
    "response": {
      "id": "9f1c8e2a-...",
      "status": "queued",
      "position": 42
    }
  }
}
```

### 26. POST /coex/send-product — Enviar produto

Um produto do catálogo vinculado à conta. Cobra R$ 0,007 por chamada bem-sucedida — falha não é cobrada. Aceita o sufixo /queue para envio assíncrono via RabbitMQ.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/send-product`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "to": "5511999999999",
  "catalog_id": "123",
  "product_retailer_id": "SKU-001"
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/send-product" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","catalog_id":"123","product_retailer_id":"SKU-001"}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "sincrono": {
    "error": false,
    "message": "Mensagem enviada com sucesso",
    "response": {
      "id": "wamid.HBgN...",
      "status": "sent"
    }
  },
  "fila": {
    "error": false,
    "message": "Mensagem enfileirada com sucesso",
    "response": {
      "id": "9f1c8e2a-...",
      "status": "queued",
      "position": 42
    }
  }
}
```

### 27. POST /coex/send-catalog — Enviar catálogo

Mensagem com o catálogo completo. Cobra R$ 0,007 por chamada bem-sucedida — falha não é cobrada. Aceita o sufixo /queue para envio assíncrono via RabbitMQ.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/send-catalog`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "to": "5511999999999",
  "body": "Veja nosso catálogo",
  "thumbnail_product": "SKU-001"
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/send-catalog" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","body":"Veja nosso catálogo","thumbnail_product":"SKU-001"}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "sincrono": {
    "error": false,
    "message": "Mensagem enviada com sucesso",
    "response": {
      "id": "wamid.HBgN...",
      "status": "sent"
    }
  },
  "fila": {
    "error": false,
    "message": "Mensagem enfileirada com sucesso",
    "response": {
      "id": "9f1c8e2a-...",
      "status": "queued",
      "position": 42
    }
  }
}
```

### 28. POST /coex/send-product-list — Enviar lista de produtos

Vários produtos agrupados em seções. Cobra R$ 0,007 por chamada bem-sucedida — falha não é cobrada. Aceita o sufixo /queue para envio assíncrono via RabbitMQ.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/send-product-list`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "to": "5511999999999",
  "catalog_id": "123",
  "sections": [
    {
      "title": "Ofertas",
      "product_items": [
        {
          "product_retailer_id": "SKU-001"
        }
      ]
    }
  ]
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/send-product-list" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","catalog_id":"123","sections":[{"title":"Ofertas","product_items":[{"product_retailer_id":"SKU-001"}]}]}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "sincrono": {
    "error": false,
    "message": "Mensagem enviada com sucesso",
    "response": {
      "id": "wamid.HBgN...",
      "status": "sent"
    }
  },
  "fila": {
    "error": false,
    "message": "Mensagem enfileirada com sucesso",
    "response": {
      "id": "9f1c8e2a-...",
      "status": "queued",
      "position": 42
    }
  }
}
```

### 29. POST /coex/send-order-details — Enviar detalhes do pedido

Resumo do pedido com valores, para pagamento dentro do WhatsApp. Cobra R$ 0,007 por chamada bem-sucedida — falha não é cobrada. Aceita o sufixo /queue para envio assíncrono via RabbitMQ.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/send-order-details`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "to": "5511999999999",
  "order": {
    "reference_id": "PED-123",
    "total_amount": {
      "value": 5990,
      "offset": 100
    }
  }
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/send-order-details" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","order":{"reference_id":"PED-123","total_amount":{"value":5990,"offset":100}}}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "sincrono": {
    "error": false,
    "message": "Mensagem enviada com sucesso",
    "response": {
      "id": "wamid.HBgN...",
      "status": "sent"
    }
  },
  "fila": {
    "error": false,
    "message": "Mensagem enfileirada com sucesso",
    "response": {
      "id": "9f1c8e2a-...",
      "status": "queued",
      "position": 42
    }
  }
}
```

### 30. POST /coex/send-order-status — Enviar status do pedido

Atualiza o status de um pedido já enviado. Cobra R$ 0,007 por chamada bem-sucedida — falha não é cobrada. Aceita o sufixo /queue para envio assíncrono via RabbitMQ.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/send-order-status`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "to": "5511999999999",
  "reference_id": "PED-123",
  "status": "shipped"
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/send-order-status" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"to":"5511999999999","reference_id":"PED-123","status":"shipped"}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "sincrono": {
    "error": false,
    "message": "Mensagem enviada com sucesso",
    "response": {
      "id": "wamid.HBgN...",
      "status": "sent"
    }
  },
  "fila": {
    "error": false,
    "message": "Mensagem enfileirada com sucesso",
    "response": {
      "id": "9f1c8e2a-...",
      "status": "queued",
      "position": 42
    }
  }
}
```

### 31. POST /coex/sendText — Enviar texto (alias)

Alias de send-text. Mantido para quem migra do wppconnect sem reescrever a integração. Mesmo preço e mesmo comportamento. Cobra R$ 0,007 por chamada bem-sucedida — falha não é cobrada. Aceita o sufixo /queue para envio assíncrono via RabbitMQ.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/sendText`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/sendText" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "id": "wamid.HBgN..."
  }
}
```

### 32. POST /coex/sendFile — Enviar arquivo (alias)

Alias de send-media. Mantido para quem migra do wppconnect sem reescrever a integração. Mesmo preço e mesmo comportamento. Cobra R$ 0,007 por chamada bem-sucedida — falha não é cobrada. Aceita o sufixo /queue para envio assíncrono via RabbitMQ.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/sendFile`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/sendFile" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "id": "wamid.HBgN..."
  }
}
```

### 33. POST /coex/sendLink — Enviar mídia por link (alias)

Alias de send-media-link. Mantido para quem migra do wppconnect sem reescrever a integração. Mesmo preço e mesmo comportamento. Cobra R$ 0,007 por chamada bem-sucedida — falha não é cobrada. Aceita o sufixo /queue para envio assíncrono via RabbitMQ.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/sendLink`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/sendLink" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "id": "wamid.HBgN..."
  }
}
```

### 34. POST /coex/sendButtons — Enviar botões (alias)

Alias de send-buttons. Mantido para quem migra do wppconnect sem reescrever a integração. Mesmo preço e mesmo comportamento. Cobra R$ 0,007 por chamada bem-sucedida — falha não é cobrada. Aceita o sufixo /queue para envio assíncrono via RabbitMQ.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/sendButtons`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/sendButtons" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "id": "wamid.HBgN..."
  }
}
```

### 35. POST /coex/sendLocation — Enviar localização (alias)

Alias de send-location. Mantido para quem migra do wppconnect sem reescrever a integração. Mesmo preço e mesmo comportamento. Cobra R$ 0,007 por chamada bem-sucedida — falha não é cobrada. Aceita o sufixo /queue para envio assíncrono via RabbitMQ.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/sendLocation`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/sendLocation" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "id": "wamid.HBgN..."
  }
}
```

### 36. POST /coex/mark-read — Marcar como lida

Marca uma mensagem recebida como lida (duplo check azul). Não consome saldo.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/mark-read`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "message_id": "wamid.HBgN..."
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/mark-read" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"message_id":"wamid.HBgN..."}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "message": "Mensagem marcada como lida"
}
```

### 37. POST /coex/typing — Indicador de digitando

Exibe "digitando..." para o destinatário enquanto a resposta é preparada. Não consome saldo.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/typing`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "message_id": "wamid.HBgN..."
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/typing" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"message_id":"wamid.HBgN..."}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "message": "Indicador enviado"
}
```

### 38. POST /coex/media/upload — Enviar mídia para a Meta

Faz upload do arquivo e devolve o media_id reutilizável, evitando subir a mesma mídia várias vezes. Não consome saldo.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/media/upload`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "type": "image",
  "base64": "data:image/png;base64,...",
  "filename": "foto.png"
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/media/upload" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"type":"image","base64":"data:image/png;base64,...","filename":"foto.png"}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "media_id": "123456789"
  }
}
```

### 39. GET /coex/media/info — Metadados da mídia

URL temporária, mime type e tamanho de uma mídia recebida. Não consome saldo.

- **Método:** `GET`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/media/info`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X GET "https://gateway.apibrasil.io/api/v2/coex/media/info" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "url": "https://lookaside.fbsbx.com/...",
    "mime_type": "image/jpeg",
    "file_size": 102400
  }
}
```

### 40. GET /coex/media/download — Baixar mídia

Baixa o conteúdo de uma mídia recebida, já autenticado na Meta. Não consome saldo.

- **Método:** `GET`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/media/download`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X GET "https://gateway.apibrasil.io/api/v2/coex/media/download" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "base64": "data:image/jpeg;base64,..."
  }
}
```

### 41. DELETE /coex/media/delete — Excluir mídia

Remove uma mídia dos servidores da Meta. Não consome saldo.

- **Método:** `DELETE`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/media/delete`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "media_id": "123456789"
}
```

**Em cURL**

```bash
curl -X DELETE "https://gateway.apibrasil.io/api/v2/coex/media/delete" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"media_id":"123456789"}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "message": "Mídia removida"
}
```

### 42. GET /coex/templates/list — Listar templates

Templates da conta com status de aprovação, categoria e idiomas. Não consome saldo.

- **Método:** `GET`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/templates/list`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X GET "https://gateway.apibrasil.io/api/v2/coex/templates/list" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "data": [
      {
        "name": "boas_vindas",
        "status": "APPROVED",
        "category": "MARKETING"
      }
    ]
  }
}
```

### 43. POST /coex/templates/create — Criar template

Envia um template para aprovação da Meta. O resultado chega pelo webhook message_template_status_update. Não consome saldo.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/templates/create`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "name": "boas_vindas",
  "language": "pt_BR",
  "category": "MARKETING",
  "components": []
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/templates/create" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"boas_vindas","language":"pt_BR","category":"MARKETING","components":[]}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "id": "123",
    "status": "PENDING"
  }
}
```

### 44. POST /coex/templates/update — Atualizar template

Edita um template existente. Volta para aprovação. Não consome saldo.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/templates/update`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "template_id": "123",
  "components": []
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/templates/update" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"template_id":"123","components":[]}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "message": "Template atualizado"
}
```

### 45. DELETE /coex/templates/delete — Excluir template

Remove um template da conta. Não consome saldo.

- **Método:** `DELETE`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/templates/delete`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "name": "boas_vindas",
  "language": "pt_BR"
}
```

**Em cURL**

```bash
curl -X DELETE "https://gateway.apibrasil.io/api/v2/coex/templates/delete" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"boas_vindas","language":"pt_BR"}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "message": "Template removido"
}
```

### 46. GET /coex/phone/info — Dados do número

Nome verificado, qualidade, tier de mensagens e platform_type (CLOUD_API ou COEXISTENCE). Não consome saldo.

- **Método:** `GET`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/phone/info`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X GET "https://gateway.apibrasil.io/api/v2/coex/phone/info" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "display_phone_number": "+55 11 99999-9999",
    "quality_rating": "GREEN",
    "platform_type": "CLOUD_API"
  }
}
```

### 47. GET /coex/phone/display-name-status — Status do nome de exibição

Situação da aprovação do nome comercial que aparece para o destinatário. Não consome saldo.

- **Método:** `GET`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/phone/display-name-status`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X GET "https://gateway.apibrasil.io/api/v2/coex/phone/display-name-status" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "name_status": "APPROVED"
  }
}
```

### 48. GET /coex/profile/get — Obter perfil comercial

Descrição, endereço, e-mail, site e foto do perfil comercial. Não consome saldo.

- **Método:** `GET`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/profile/get`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X GET "https://gateway.apibrasil.io/api/v2/coex/profile/get" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "about": "Atendimento 24h",
    "email": "[omitido]"
  }
}
```

### 49. POST /coex/profile/update — Atualizar perfil comercial

Atualiza os dados do perfil comercial exibidos no WhatsApp. Não consome saldo.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/profile/update`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "about": "Atendimento 24h",
  "email": "contato@meusite.com",
  "websites": [
    "https://meusite.com"
  ]
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/profile/update" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"about":"Atendimento 24h","email":"contato@meusite.com","websites":["https://meusite.com"]}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "message": "Perfil atualizado"
}
```

### 50. POST /coex/block — Bloquear números

Impede que os números informados enviem mensagens para a conta. Não consome saldo. Disponível a partir da fase 2.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/block`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "numbers": [
    "5511999999999"
  ]
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/block" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"numbers":["5511999999999"]}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "message": "Números bloqueados"
}
```

### 51. POST /coex/unblock — Desbloquear números

Remove o bloqueio dos números informados. Não consome saldo. Disponível a partir da fase 2.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/unblock`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "numbers": [
    "5511999999999"
  ]
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/unblock" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"numbers":["5511999999999"]}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "message": "Números desbloqueados"
}
```

### 52. GET /coex/blocked/list — Listar bloqueados

Números atualmente bloqueados na conta. Não consome saldo. Disponível a partir da fase 2.

- **Método:** `GET`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/blocked/list`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X GET "https://gateway.apibrasil.io/api/v2/coex/blocked/list" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "data": []
  }
}
```

### 53. GET /coex/qr/list — Listar QR Codes comerciais

QR Codes e links curtos que iniciam conversa com a empresa. Diferente do QR de conexão. Não consome saldo. Disponível a partir da fase 2.

- **Método:** `GET`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/qr/list`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X GET "https://gateway.apibrasil.io/api/v2/coex/qr/list" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "data": []
  }
}
```

### 54. POST /coex/qr/create — Criar QR Code comercial

Cria um QR Code com mensagem pré-preenchida. Não consome saldo. Disponível a partir da fase 2.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/qr/create`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "prefilled_message": "Quero saber mais",
  "generate_type": "PNG"
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/qr/create" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"prefilled_message":"Quero saber mais","generate_type":"PNG"}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "code": "ABC123",
    "qr_image_url": "https://..."
  }
}
```

### 55. POST /coex/qr/update — Atualizar QR Code comercial

Altera a mensagem pré-preenchida de um QR Code existente. Não consome saldo. Disponível a partir da fase 2.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/qr/update`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "code": "ABC123",
  "prefilled_message": "Nova mensagem"
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/qr/update" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"code":"ABC123","prefilled_message":"Nova mensagem"}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "message": "QR Code atualizado"
}
```

### 56. DELETE /coex/qr/delete — Excluir QR Code comercial

Remove um QR Code comercial. Não consome saldo. Disponível a partir da fase 2.

- **Método:** `DELETE`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/qr/delete`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "code": "ABC123"
}
```

**Em cURL**

```bash
curl -X DELETE "https://gateway.apibrasil.io/api/v2/coex/qr/delete" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"code":"ABC123"}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "message": "QR Code removido"
}
```

### 57. GET /coex/account/info — Dados da conta WhatsApp Business

Informações da WABA: nome, moeda, fuso, status de verificação do negócio. Não consome saldo.

- **Método:** `GET`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/account/info`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X GET "https://gateway.apibrasil.io/api/v2/coex/account/info" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "id": "123",
    "name": "Minha Empresa",
    "currency": "BRL"
  }
}
```

### 58. POST /coex/account/subscribe — Assinar webhooks na conta

Assina o app da APIBrasil aos campos de webhook da WABA. Sem isso a Meta não envia eventos. Não consome saldo.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/account/subscribe`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "fields": [
    "messages",
    "message_template_status_update"
  ]
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/account/subscribe" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"fields":["messages","message_template_status_update"]}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "message": "Assinatura realizada"
}
```

### 59. POST /coex/account/unsubscribe — Cancelar assinatura de webhooks

Remove a assinatura do app na WABA. A conexão para de receber eventos. Não consome saldo.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/account/unsubscribe`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/account/unsubscribe" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "message": "Assinatura cancelada"
}
```

### 60. GET /coex/account/subscriptions — Conferir assinaturas

Mostra quais campos estão realmente assinados na Meta. É a primeira coisa a checar quando um webhook não chega. Não consome saldo.

- **Método:** `GET`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/account/subscriptions`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X GET "https://gateway.apibrasil.io/api/v2/coex/account/subscriptions" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "fields": [
      "messages",
      "statuses"
    ]
  }
}
```

### 61. GET /coex/analytics/messages — Métricas de mensagens

Enviadas e entregues por período, direto da Meta. Não consome saldo. Disponível a partir da fase 2.

- **Método:** `GET`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/analytics/messages`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X GET "https://gateway.apibrasil.io/api/v2/coex/analytics/messages" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "data_points": []
  }
}
```

### 62. GET /coex/analytics/conversations — Métricas de conversas

Conversas e custo por categoria (marketing, utility, authentication, service). Não consome saldo. Disponível a partir da fase 2.

- **Método:** `GET`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/analytics/conversations`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X GET "https://gateway.apibrasil.io/api/v2/coex/analytics/conversations" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "conversation_analytics": []
  }
}
```

### 63. GET /coex/pricing/plan — Preços da API

Valor da conexão e da mensagem. O `setup_price` varia por modo (Cloud R$ 399,90 · Coexistence R$ 129,90) e vem sempre da API que você chamou. Fonte única de preço: nada de valor fixo no código do cliente ou do painel. Não consome saldo.

- **Método:** `GET`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/pricing/plan`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X GET "https://gateway.apibrasil.io/api/v2/coex/pricing/plan" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "setup_price": 399.9,
    "message_price": 0.007,
    "currency": "BRL"
  }
}
```

### 64. POST /coex/pricing/estimate — Estimar custo do disparo

Custo estimado na Meta por categoria e país, antes de disparar a campanha. Não consome saldo. Disponível a partir da fase 2.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/pricing/estimate`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "category": "MARKETING",
  "country_code": "BR",
  "quantity": 1000
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/pricing/estimate" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"category":"MARKETING","country_code":"BR","quantity":1000}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "meta_cost": 300,
    "apibrasil_cost": 3,
    "currency": "BRL"
  }
}
```

### 65. GET /coex/messages/list — Listar mensagens

Histórico paginado por cursor. O filtro de período é obrigatório (padrão 7 dias, teto 90). Não consome saldo. Disponível a partir da fase 2.

- **Método:** `GET`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/messages/list`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X GET "https://gateway.apibrasil.io/api/v2/coex/messages/list" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "data": [],
    "next_cursor": "eyJ..."
  }
}
```

### 66. GET /coex/messages/show — Detalhe da mensagem

Uma mensagem por wamid ou uuid, com a linha do tempo completa de status. Não consome saldo. Disponível a partir da fase 2.

- **Método:** `GET`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/messages/show`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X GET "https://gateway.apibrasil.io/api/v2/coex/messages/show" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "uuid": "9f1c8e2a",
    "status": "delivered",
    "events": []
  }
}
```

### 67. POST /coex/messages/export — Exportar mensagens

Export assíncrono em CSV ou NDJSON. Devolve um link temporário quando pronto. Não consome saldo. Disponível a partir da fase 2.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/messages/export`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "from": "2026-08-01",
  "to": "2026-08-31",
  "format": "csv"
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/messages/export" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"from":"2026-08-01","to":"2026-08-31","format":"csv"}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "export_id": "exp_123",
    "status": "processing"
  }
}
```

### 68. GET /coex/usage/summary — Resumo de consumo

Agregado por dia ou mês: enviadas, entregues, falhas, valor cobrado e custo estimado na Meta. Não consome saldo. Disponível a partir da fase 2.

- **Método:** `GET`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/usage/summary`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X GET "https://gateway.apibrasil.io/api/v2/coex/usage/summary" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "sent": 1000,
    "delivered": 980,
    "failed": 20,
    "charged_value": 3
  }
}
```

### 69. GET /coex/queue/status — Status da fila

Profundidade, mensagens em voo, taxa de envio e tempo estimado para escoar. Não consome saldo.

- **Método:** `GET`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/queue/status`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X GET "https://gateway.apibrasil.io/api/v2/coex/queue/status" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "queued": 42,
    "in_flight": 5,
    "rate_per_second": 78,
    "eta_seconds": 120
  }
}
```

### 70. POST /coex/queue/cancel — Cancelar mensagem na fila

Cancela uma mensagem que ainda não saiu e libera a reserva de saldo. Não consome saldo.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/queue/cancel`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "id": "9f1c8e2a-..."
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/queue/cancel" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"id":"9f1c8e2a-..."}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "message": "Mensagem cancelada e saldo liberado"
}
```

### 71. GET /coex/queue/list — Listar jobs (compatibilidade)

Mantém o formato de job_statuses usado pelas demais APIs do gateway. Não consome saldo.

- **Método:** `GET`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/queue/list`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X GET "https://gateway.apibrasil.io/api/v2/coex/queue/list" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "data": []
  }
}
```

### 72. POST /coex/queue/show — Consultar jobs (compatibilidade)

Consulta o status de um ou mais jobs pelo id, no formato já usado pelas outras APIs. Não consome saldo.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/queue/show`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "id": [
    "9f1c8e2a-..."
  ]
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/queue/show" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"id":["9f1c8e2a-..."]}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": []
}
```

### 73. GET /coex/webhooks/get — Obter webhooks configurados

URLs por evento. Os nomes seguem os campos oficiais da Meta; os eventos da plataforma usam o prefixo apibrasil. Não consome saldo.

- **Método:** `GET`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/webhooks/get`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X GET "https://gateway.apibrasil.io/api/v2/coex/webhooks/get" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "default": "https://meusite.com/webhook",
    "messages": "https://meusite.com/inbox"
  }
}
```

### 74. POST /coex/webhooks/set — Configurar webhooks

Define a URL de cada evento. Apenas default é obrigatório: ele recebe tudo que não tiver URL própria. Não consome saldo.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/webhooks/set`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "default": "https://meusite.com/webhook",
  "messages": "https://meusite.com/inbox",
  "statuses": "https://meusite.com/entregas"
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/webhooks/set" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"default":"https://meusite.com/webhook","messages":"https://meusite.com/inbox","statuses":"https://meusite.com/entregas"}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "message": "Webhooks atualizados"
}
```

### 75. POST /coex/webhooks/test — Testar webhook

Dispara um evento de teste para a URL configurada e devolve a resposta recebida. Não consome saldo.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/webhooks/test`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Corpo da requisição**

```json
{
  "event": "messages"
}
```

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/webhooks/test" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"event":"messages"}'
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "http_status": 200,
    "duration_ms": 142
  }
}
```

### 76. GET /coex/webhooks/deliveries — Histórico de entregas

Últimas entregas de webhook com status, tentativas e resposta do destino. Não consome saldo. Disponível a partir da fase 2.

- **Método:** `GET`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/webhooks/deliveries`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X GET "https://gateway.apibrasil.io/api/v2/coex/webhooks/deliveries" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "data": []
  }
}
```

### 77. GET /coex/coex/status — Status da coexistência

Estado do pareamento entre a API e o app WhatsApp Business do cliente. Não consome saldo.

- **Método:** `GET`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/coex/status`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X GET "https://gateway.apibrasil.io/api/v2/coex/coex/status" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "linked": true,
    "linked_at": "2026-08-04T18:30:00Z"
  }
}
```

### 78. GET /coex/coex/history-progress — Progresso do sync de histórico

Importação de até 6 meses de conversas anteriores. Roda em segundo plano e pode levar horas. Não consome saldo.

- **Método:** `GET`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/coex/history-progress`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X GET "https://gateway.apibrasil.io/api/v2/coex/coex/history-progress" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "response": {
    "status": "running",
    "percent": 42,
    "messages_imported": 12480
  }
}
```

### 79. POST /coex/coex/activate — Ativar coexistência

Reativa a coexistência sem cobrar de novo: o device continua o mesmo. Não consome saldo.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/coex/activate`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/coex/activate" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "message": "Coexistência ativada"
}
```

### 80. POST /coex/coex/deactivate — Desativar coexistência

Desfaz o pareamento pelo lado da API. O número continua funcionando no app do cliente. Não consome saldo.

- **Método:** `POST`
- **Endereço:** `https://gateway.apibrasil.io/api/v2/coex/coex/deactivate`
- **Versão da rota:** v2

**Cabeçalhos**

| Cabeçalho | Valor |
| --- | --- |
| `Authorization` | `Bearer $APIBRASIL_TOKEN` |
| `DeviceToken` | `$APIBRASIL_DEVICE_TOKEN` |
| `Content-Type` | `application/json` |

**Em cURL**

```bash
curl -X POST "https://gateway.apibrasil.io/api/v2/coex/coex/deactivate" \
  -H "Authorization: Bearer $APIBRASIL_TOKEN" \
  -H "DeviceToken: $APIBRASIL_DEVICE_TOKEN" \
  -H "Content-Type: application/json"
```

**Resposta de exemplo, do catálogo**

```json
{
  "error": false,
  "message": "Coexistência desativada"
}
```

Nos exemplos de resposta, os campos da conta que gerou o exemplo (`user.first_name`, `user.email`, `user.cellphone`) saem como `[omitido]`. O resto é o que o catálogo publica.

## Armadilhas: o que uma integração erra sem avisar

Apuradas nas respostas que o próprio catálogo publica. Em todas elas o código funciona no caminho feliz e falha em silêncio no resto:

1. **O erro chega no CORPO, com HTTP 200.**
   A resposta traz um campo `error` booleano e uma `message`. Checar só `response.ok` ou o status HTTP deixa passar falha como sucesso. Confira SEMPRE `error === false` antes de ler `data`.

2. **`balance`, `tax` e `extra_charges.total` são STRING em formato brasileiro — e o formato varia entre APIs.**
   Valores observados no catálogo: `"154,380"`, `"497,84"`, `"0,000"` e `"0.19"`. Vírgula em umas, ponto em outra; três casas decimais em umas, duas em outra. Em JavaScript, `parseFloat("154,380")` devolve `154` e perde os centavos sem erro nenhum, e `Number("154,380")` devolve `NaN`. Escreva um conversor que trate os dois separadores, e nunca use esses campos numa decisão financeira sem convertê-los.

3. **Cada chamada custa dinheiro.**
   Retry cego multiplica a conta. Nunca repita automaticamente um 4xx: parâmetro errado repetido continua errado e continua cobrando. Repita só tempo esgotado e 5xx, com recuo exponencial e um teto pequeno de tentativas.

4. **HTTP 402 é saldo insuficiente, e repetir não resolve.**
   É o único status que exige ação humana — recarregar. Trate-o como erro terminal, com mensagem própria, e não o jogue no mesmo balde dos 4xx genéricos.

5. **`extra_charges` cobra à parte do preço da consulta.**
   Quando o corpo pede serviços adicionais, a resposta traz cada um com o preço e um `total` que NÃO está incluso no valor base. Se você mostra custo a quem usa, some os dois.

## Ver também

- Especificação OpenAPI: https://doc.apibrasil.io/apis/planos/fb6b63b70-a5d1-11f1-a5b5-87848949795/openapi.json
- Catálogo de APIs: [Catálogo de APIs](https://doc.apibrasil.io/apis.md)
- SDKs oficiais: [SDKs oficiais](https://doc.apibrasil.io/sdks.md)
- Índice da documentação: https://doc.apibrasil.io/llms.txt
- Versão HTML desta página: https://doc.apibrasil.io/apis/planos/fb6b63b70-a5d1-11f1-a5b5-87848949795
