SMS
tecnologia de 1992- Só texto, limitado a 160 caracteres
- Remetente é um número desconhecido
- Sem confirmação de entrega ou leitura
- Imagem? Só como link suspeito no meio do texto
- Custo por mensagem enviada
A API de mensagens RCS que entrega texto, imagem, PDF e áudio pelo Google Messages na conversa padrão do cliente — sem app instalado, sem número novo. Fila com retry, campanhas em massa e respostas direto no seu webhook.
$ curl -X POST rcs.vps1.com.br/send \
-H "x-api-key: $CHAVE" \
-d '{
"phone": "+5511999990000",
"text": "Pedido saiu para entrega 📦"
}'
← 202 { "jobId": 4021 }
RCS (Rich Communication Services) é o padrão que substitui o SMS no Android. Chega na mesma caixa de entrada — o Google Messages, que já vem instalado — mas com a experiência de um app de mensagem moderno.
Sem app instalado no cliente, sem número novo: a mensagem sai como RCS pelo Google Messages e cai na conversa padrão do Android.
Mensagem de texto direto na thread RCS do destinatário, com confirmação de envio por job.
PNG, JPG, PDF, documento — anexa qualquer arquivo junto da mensagem, do jeito que o Messages mostra.
Envie áudios como arquivo de mídia — o destinatário toca direto na conversa.
Até 5.000 números por lote com espaçamento automático entre envios. Pause, retome ou cancele quando quiser.
Resposta do cliente chega no seu webhook em tempo real; se a entrega falhar, fica disponível por polling.
Cada envio vira um job com status, tentativas e erro classificado. Caiu a conexão? Nada se perde — a fila retoma sozinha.
Pareamos seu chip ao Google Messages uma única vez. A sessão fica viva 24/7 com recuperação automática.
Uma requisição REST com sua chave de acesso. POST /send para um número, POST /campaigns para a lista inteira.
Status por job, relatório por campanha e as respostas dos clientes entregues no seu sistema via webhook.
API HTTP direta: JSON pra dentro, JSON pra fora. Autenticação por chave. Paginação por cursor. Erros com código estável.
POST /campaigns
{
"name": "promo-julho",
"message": { "text": "☀️ 20% off até domingo!" },
"phones": ["+5511988880000", "..."]
}
← 202 { "campaignId": 12, "total": 350 }
GET /campaigns/12
← {
"status": "active",
"total": 350,
"sent": 204,
"pending": 145,
"running": 1,
"failed": 0
}
É uma interface REST que permite ao seu sistema enviar mensagens RCS — texto, imagem, PDF e áudio — direto na conversa nativa do Android, via Google Messages. Uma chamada HTTP com JSON e a mensagem chega onde o cliente realmente lê.
Não. A mensagem chega no Google Messages, o app de mensagens padrão do Android — o mesmo lugar onde chega o SMS, só que com mídia, nome do remetente e confirmação de leitura.
Até 5.000 números por lote, com espaçamento automático entre envios. Dá pra pausar, retomar ou cancelar a campanha a qualquer momento, e acompanhar o relatório em tempo real por API.
Em tempo real no seu webhook: cada resposta vira um POST no seu sistema. Se a entrega do webhook falhar, a mensagem fica disponível por polling no endpoint de inbox — nada se perde.
Cada envio é um job com status, tentativas e erro classificado. A fila tem retry automático e recuperação de sessão — quando a conexão volta, os envios pendentes retomam sozinhos.
O acesso é liberado sob medida para cada operação, sem tabela fixa. Chama a gente no WhatsApp, conta seu volume e caso de uso — a resposta é rápida.
O acesso ao Wablast RCS é liberado sob medida para cada operação. Chama a gente no WhatsApp, conta o seu volume e o seu caso de uso — a gente responde rápido.
Chamar no WhatsAppTodos os endpoints recebem e devolvem JSON. Autentique cada requisição com o header x-api-key. Horários saem em ISO 8601 no fuso configurado da conta.
/send
Envia uma mensagem para um número
| Campo | Tipo | Descrição |
|---|---|---|
phone | string | Número com DDI, ex.: +5511999990000 |
text | string? | Texto da mensagem |
filePath | string? | Arquivo de mídia já enviado (imagem, PDF, áudio…) |
imagePath | string? | Apelido retrocompatível de filePath |
Pelo menos um entre text, filePath e imagePath é obrigatório. Dá pra mandar texto + mídia juntos: mídia com legenda.
{ "jobId": 4021 }
curl -X POST $BASE/send \
-H "x-api-key: $CHAVE" \
-H "content-type: application/json" \
-d '{"phone":"+5511999990000",
"text":"Olá! 👋"}'
/jobs
Lista envios com filtro e paginação
| Param | Descrição |
|---|---|
status | pending · running · sent · failed · canceled |
campaignId | Só os jobs de uma campanha |
limit | 1–200 (padrão 50) |
before | Cursor: id da página anterior |
{
"jobs": [ { "id": 4021, "status": "sent", … } ],
"nextCursor": 3971
}
nextCursor nulo = acabou. Presente = repita a chamada com before=nextCursor.
/jobs/:id
Status de um envio específico
{
"status": "sent",
"attempts": 1,
"error": null,
"errorCode": null,
"sentAt": "2026-07-21T11:05:18-03:00"
}
/campaigns
Dispara a mesma mensagem para uma lista
| Campo | Tipo | Descrição |
|---|---|---|
name | string | Nome da campanha (aparece no relatório) |
message.text | string? | Texto da mensagem |
message.filePath | string? | Mídia anexada a todos os envios |
message.imagePath | string? | Apelido retrocompatível de message.filePath |
phones | string[] | 1 a 5.000 números com DDI |
Um número inválido recusa a lista inteira — melhor corrigir antes do que disparar metade da campanha. O espaçamento entre envios é automático.
{ "campaignId": 12, "total": 350 }
curl -X POST $BASE/campaigns \
-H "x-api-key: $CHAVE" \
-H "content-type: application/json" \
-d '{"name":"promo-julho",
"message":{"text":"☀️ 20% off!"},
"phones":["+5511988880000"]}'
/campaigns/:id
Relatório da campanha em tempo real
{
"status": "active",
"total": 350,
"sent": 204,
"failed": 0,
"pending": 145,
"running": 1,
"canceled": 0
}
/campaigns/:id/pause · resume · cancel
Controla a execução
pause segura os próximos envios · resume retoma de onde parou · cancel encerra e cancela todos os envios pendentes.
POST /campaigns/12/pause ← 200 { "ok": true }
/messages
Mensagens recebidas dos seus clientes
| Param | Descrição |
|---|---|
phone | Filtra por remetente |
since | ISO 8601, ex.: 2026-07-21T09:00:00-03:00 |
limit | 1–200 (padrão 200) |
before | Cursor: id da página anterior |
As respostas também são entregues em tempo real no seu webhook. Este endpoint é o fallback por polling — nada fica pra trás.
{
"messages": [
{
"id": 881,
"phone": "+5511988880000",
"body": "Quero aproveitar a promo!",
"receivedAt": "2026-07-21T11:12:40-03:00",
"webhookStatus": "delivered"
}
],
"nextCursor": null
}