Enviar Mensagem de Teste
Metodo
POST https://oapi.ogmma.com.br/v1/sandbox/test
Conceituacao
Envia uma mensagem simulada no ambiente sandbox. A mensagem e processada instantaneamente e retorna com status DELIVERED, sem enviar para o WhatsApp real.
As mensagens enviadas pelo sandbox aparecem na interface de conversas da plataforma exatamente como mensagens reais, permitindo testar a experiencia completa do seu fluxo.
Simulacao de erros
Voce pode simular cenarios de erro usando o header X-Ogmma-Sandbox-Scenario. Isso permite testar como sua aplicacao reage a diferentes falhas sem depender de condicoes reais.
| Cenario | Descricao |
|---|---|
number_not_on_whatsapp | Simula envio para numero que nao possui WhatsApp |
channel_disconnected | Simula canal desconectado |
rate_limit | Simula limite de requisicoes excedido |
timeout | Simula timeout no envio da mensagem |
media_too_large | Simula arquivo de midia excedendo o tamanho maximo |
Atributos
Header
| Atributo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
| Authorization | string | Sim | Bearer {API_KEY} - Chave de autenticacao da API (prefixo oapi_sk_test_) |
| Content-Type | string | Sim | application/json |
| X-Ogmma-Sandbox-Scenario | string | Nao | Cenario de erro a ser simulado. Valores: number_not_on_whatsapp, channel_disconnected, rate_limit, timeout, media_too_large |
Body
| Atributo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
| to | string | Sim | Numero de telefone do destinatario no formato internacional (ex: 5511999998888) |
| type | string | Sim | Tipo da mensagem. Valores: text, image, video, audio, document |
| content | object | Sim | Conteudo da mensagem. A estrutura varia conforme o type |
Conteudo por tipo
Texto (type: "text"):
| Atributo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
| content.text | string | Sim | Texto da mensagem |
Imagem (type: "image"):
| Atributo | Tipo | Obrigatorio | Descricao |
|---|---|---|---|
| content.url | string | Sim | URL da imagem |
| content.caption | string | Nao | Legenda da imagem |
Request
Exemplo com texto:
- cURL
- Node.js
- Python
curl -X POST "https://oapi.ogmma.com.br/v1/sandbox/test" \
-H "Authorization: Bearer {API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"to": "5511999998888",
"type": "text",
"content": {
"text": "Ola! Esta e uma mensagem de teste do sandbox."
}
}'
const axios = require('axios');
const response = await axios.post(
'https://oapi.ogmma.com.br/v1/sandbox/test',
{
to: '5511999998888',
type: 'text',
content: {
text: 'Ola! Esta e uma mensagem de teste do sandbox.'
}
},
{
headers: {
'Authorization': 'Bearer {API_KEY}',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
import requests
response = requests.post(
'https://oapi.ogmma.com.br/v1/sandbox/test',
json={
'to': '5511999998888',
'type': 'text',
'content': {
'text': 'Ola! Esta e uma mensagem de teste do sandbox.'
}
},
headers={
'Authorization': 'Bearer {API_KEY}',
'Content-Type': 'application/json'
}
)
print(response.json())
Exemplo com imagem:
- cURL
- Node.js
- Python
curl -X POST "https://oapi.ogmma.com.br/v1/sandbox/test" \
-H "Authorization: Bearer {API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"to": "5511999998888",
"type": "image",
"content": {
"url": "https://exemplo.com/imagem.jpg",
"caption": "Imagem de teste"
}
}'
const axios = require('axios');
const response = await axios.post(
'https://oapi.ogmma.com.br/v1/sandbox/test',
{
to: '5511999998888',
type: 'image',
content: {
url: 'https://exemplo.com/imagem.jpg',
caption: 'Imagem de teste'
}
},
{
headers: {
'Authorization': 'Bearer {API_KEY}',
'Content-Type': 'application/json'
}
}
);
console.log(response.data);
import requests
response = requests.post(
'https://oapi.ogmma.com.br/v1/sandbox/test',
json={
'to': '5511999998888',
'type': 'image',
'content': {
'url': 'https://exemplo.com/imagem.jpg',
'caption': 'Imagem de teste'
}
},
headers={
'Authorization': 'Bearer {API_KEY}',
'Content-Type': 'application/json'
}
)
print(response.json())
Exemplo com simulacao de erro:
- cURL
- Node.js
- Python
curl -X POST "https://oapi.ogmma.com.br/v1/sandbox/test" \
-H "Authorization: Bearer {API_KEY}" \
-H "Content-Type: application/json" \
-H "X-Ogmma-Sandbox-Scenario: number_not_on_whatsapp" \
-d '{
"to": "5511999998888",
"type": "text",
"content": {
"text": "Teste de erro"
}
}'
const axios = require('axios');
const response = await axios.post(
'https://oapi.ogmma.com.br/v1/sandbox/test',
{
to: '5511999998888',
type: 'text',
content: {
text: 'Teste de erro'
}
},
{
headers: {
'Authorization': 'Bearer {API_KEY}',
'Content-Type': 'application/json',
'X-Ogmma-Sandbox-Scenario': 'number_not_on_whatsapp'
}
}
);
console.log(response.data);
import requests
response = requests.post(
'https://oapi.ogmma.com.br/v1/sandbox/test',
json={
'to': '5511999998888',
'type': 'text',
'content': {
'text': 'Teste de erro'
}
},
headers={
'Authorization': 'Bearer {API_KEY}',
'Content-Type': 'application/json',
'X-Ogmma-Sandbox-Scenario': 'number_not_on_whatsapp'
}
)
print(response.json())
Response
200 - Mensagem enviada com sucesso
{
"success": true,
"data": {
"messageId": "msg_sandbox_6650a1b2c3d4e5f6a7b8c9d0",
"status": "DELIVERED",
"simulatedDelivery": true,
"webhookFired": true
}
}
400 - Dados invalidos
{
"message": "Dados de entrada invalidos.",
"code": "VALIDATION_ERROR",
"errors": [
{
"path": "to",
"message": "Numero de telefone e obrigatorio.",
"validation": "invalid_type"
}
]
}
400 - Numero nao possui WhatsApp (cenario simulado)
{
"message": "O numero informado nao possui WhatsApp.",
"code": "NUMBER_NOT_ON_WHATSAPP"
}
401 - Nao autorizado
{
"message": "Token de autenticacao invalido ou ausente.",
"code": "AUTHENTICATION_REQUIRED"
}
429 - Rate limit excedido
{
"message": "Limite de requisicoes excedido. Tente novamente em alguns segundos.",
"code": "RATE_LIMIT_EXCEEDED"
}
Observacao
Mensagens enviadas pelo sandbox sao armazenadas por 30 dias e podem ser consultadas via GET /api/sandbox/messages.