Pular para o conteúdo principal

Enviar mensagem em massa

Método

POST https://oapi.ogmma.com.br/v1/bulk/send

Conceituação

Este endpoint permite enviar a mesma mensagem para múltiplos destinatários de forma sequencial. A API enfileira todas as mensagens e as processa com um intervalo configurável entre cada envio, adicionando jitter automático para evitar detecção de automação.

Você pode agendar o envio para uma data futura utilizando o campo startAt. Caso não seja informado, o envio começa imediatamente.

A resposta retorna um batchId que pode ser utilizado para consultar o progresso, listar erros ou cancelar o envio.


Atributos

AtributoTipoObrigatórioDescrição
AuthorizationstringSimBearer {API_KEY} - Chave de autenticação
Content-TypestringSimapplication/json

Body

AtributoTipoObrigatórioDescrição
channelIdstringSimID do canal que será utilizado para o envio
messageTypestringSimTipo da mensagem: text, image, video, audio, document
contentobjectSimConteúdo da mensagem. Estrutura varia conforme o messageType
content.textstringCondicionalTexto da mensagem. Obrigatório quando messageType = text
content.urlstringCondicionalURL da mídia. Obrigatório quando messageType = image, video, audio, document
content.captionstringNãoLegenda da mídia. Disponível para image, video e document
content.fileNamestringNãoNome do arquivo. Disponível para document
recipientsstring[]SimArray de números de telefone dos destinatários (formato: 5511999999999)
optionsobjectNãoOpções de configuração do envio
options.delaynumberNãoIntervalo em milissegundos entre cada envio. Mínimo: 1000. Padrão: 3000
options.startAtstringNãoData/hora de início do envio no formato ISO 8601 (ex: 2025-06-15T14:00:00Z)
options.namestringNãoNome identificador do lote para facilitar consultas posteriores

Request

Envio de texto

curl -X POST "https://oapi.ogmma.com.br/v1/bulk/send" \
-H "Authorization: Bearer {API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"channelId": "6650f4c2e8b1a2d3f4567890",
"messageType": "text",
"content": {
"text": "Olá! Temos uma promoção especial para você. Confira nosso catálogo atualizado."
},
"recipients": [
"5511999990001",
"5511999990002",
"5511999990003",
"5511999990004",
"5511999990005"
],
"options": {
"delay": 3000,
"name": "Campanha Junho 2025"
}
}'

Envio de imagem

curl -X POST "https://oapi.ogmma.com.br/v1/bulk/send" \
-H "Authorization: Bearer {API_KEY}" \
-H "Content-Type: application/json" \
-d '{
"channelId": "6650f4c2e8b1a2d3f4567890",
"messageType": "image",
"content": {
"url": "https://exemplo.com/promo-junho.jpg",
"caption": "Confira nossas ofertas de Junho!"
},
"recipients": [
"5511999990001",
"5511999990002"
],
"options": {
"delay": 5000,
"startAt": "2025-06-15T14:00:00Z",
"name": "Promo Junho - Imagem"
}
}'

Response

202 - Accepted

O lote foi criado e enfileirado para processamento.

{
"data": {
"batchId": "bulk_6651a3b2c4d5e6f7a8901234",
"status": "QUEUED",
"totalRecipients": 5
}
}

400 - Bad Request

Parâmetros inválidos na requisição.

{
"message": "O campo 'recipients' deve conter pelo menos 1 destinatário.",
"code": "VALIDATION_ERROR"
}

401 - Unauthorized

Chave de API inválida ou ausente.

{
"message": "Chave de API inválida ou expirada.",
"code": "UNAUTHORIZED"
}

429 - Too Many Requests

Limite de requisições excedido ou lote acima do permitido pelo plano.

{
"message": "Limite de destinatários por lote excedido. Seu plano permite até 100 destinatários.",
"code": "RATE_LIMIT_EXCEEDED"
}