155 endpoints documentados em OpenAPI 3.0, SDK PHP oficial, webhooks com HMAC, event stream SSE, sandbox per-token e SMTP relay. Tudo o que você precisa pra construir produto em cima do RaviMail.
# Primeiro envio em 1 request
curl -X POST https://api.ravimail.com.br/v1/transactional/send \
-H "Authorization: Bearer rvm_live_..." \
-H "Content-Type: application/json" \
-d '{
"to": "joao@empresa.com.br",
"from": "voce@seudominio.com.br",
"subject": "Bem-vindo!",
"html": "<h1>Olá João</h1>",
"tags": ["onboarding"]
}'
# Resposta
{ "data": { "message_id": "msg_abc123", "status": "sent" } }
// composer require ravisystems/ravimail-php
use Ravimail\Client;
$rm = new Client('rvm_live_...');
$rm->transactional->send([
'to' => 'joao@empresa.com.br',
'from' => 'voce@seudominio.com.br',
'subject' => 'Bem-vindo!',
'html' => '<h1>Olá João</h1>',
'tags' => ['onboarding'],
]);
// Qualquer cliente HTTP — fetch nativo aqui
await fetch('https://api.ravimail.com.br/v1/transactional/send', {
method: 'POST',
headers: {
'Authorization': 'Bearer rvm_live_...',
'Content-Type': 'application/json'
},
body: JSON.stringify({
to: 'joao@empresa.com.br',
from: 'voce@seudominio.com.br',
subject: 'Bem-vindo!',
html: '<h1>Olá João</h1>',
tags: ['onboarding']
})
});
import requests
requests.post(
'https://api.ravimail.com.br/v1/transactional/send',
headers={'Authorization': 'Bearer rvm_live_...'},
json={
'to': 'joao@empresa.com.br',
'from': 'voce@seudominio.com.br',
'subject': 'Bem-vindo!',
'html': '<h1>Olá João</h1>',
'tags': ['onboarding'],
}
)
SDKs Node.js e Python via REST direto. SDKs nativos no roadmap →
Três passos. Sem cartão de crédito pra começar. Sandbox grátis pra testar antes de ir pra produção.
Cadastro em 30 segundos. Sandbox liberado automaticamente — gere quantos tokens rvm_test_* quiser pra testar sem afetar produção nem ser cobrado.
No painel, vá em Desenvolvedores → Tokens, selecione os scopes (40+ disponíveis, princípio de menor privilégio), opcional limite por IP e expiração.
Use o snippet do hero acima — curl, PHP, Node ou Python.
Resposta em JSON com message_id
e status. Em sandbox, retorna msg_sandbox_* sem envio real.
18 grupos de recursos, do envio transacional ao funil de vendas. OpenAPI 3.0 spec + Swagger UI dentro do painel.
Ver referência completa dos 155 endpointsEnvio 1-a-1, batch, agendamento. Anexos via upload de arquivos.
POST /v1/transactional/send · POST /v1/transactional/batch
CRUD + start/pause/resume/cancel/duplicate. A/B testing nativo.
GET POST PUT DELETE /v1/campaigns · /v1/campaigns/{id}/{start|pause|resume|cancel}
Sequências automatizadas com steps, gatilhos e condições.
/v1/drips · /v1/drips/{id}/steps · /v1/drips/{id}/subscribe
CRUD, tags, supressão, bulk import via CSV/JSON, custom fields.
/v1/contacts · /v1/lists · /v1/contacts/{id}/{suppress|tag}
Definição declarativa de regras + computação on-demand.
/v1/segments · /v1/segments/{id}/compute
CRUD com versionamento, preview de render e variáveis.
/v1/templates · /v1/templates/{id}/render · /v1/templates/{id}/versions
Email check (DNS + MX + disposable + role). Batch async.
/v1/verification/email · /v1/verification/batch
Add, verify DKIM/SPF/DMARC, upgrade pra dashboard de reputação.
/v1/domains · /v1/domains/{id}/verify
Summary, timeseries, by-domain/ip/node/isp/device/country/heatmap.
/v1/analytics/{summary|timeseries|by-*|heatmap}
HTTP push HMAC SHA-256/512, retries com backoff, rotate secret.
/v1/webhooks · /v1/webhooks/{id}/deliveries · /rotate-secret
Stream de eventos em tempo real (delivered, opened, clicked, bounced).
GET /v1/events · GET /v1/events/stream
Multi-tenant pra agências/SaaS. Isolamento de tokens e métricas.
/v1/subaccounts · token isolation por escopo
Criar pools, agrupar IPs, forçar pool por token ou campanha.
/v1/ip-pools · /v1/ip-pools/{id}/ips
Endereços especiais que retornam bounce, complaint, suppression, etc.
success@simulator.ravimail.com.br · bounce@... · complaint@...
Score por domínio/IP/nó + breakdown + blacklist report.
/v1/reputation/{domain|ip|node}/{id} · /v1/reputation/blacklists
Regras de parsing inbound → forward via webhook.
/v1/inbound-routes · pattern matching + webhook target
Jobs CSV async pra contatos, eventos, métricas.
/v1/exports · /v1/exports/{id}/status · /v1/exports/{id}/download
Upload de anexos, tags genéricas em qualquer recurso.
/v1/files · /v1/{resource}/{id}/tags
Hash SHA-256 server-side, scopes granulares (40+), IP whitelist em CIDR, expiração configurável e rotação sem downtime. Auditoria completa em logs estruturados.
rvm_test_* não envia email real, não cobra créditos, não aparece nos relatórios live.# Header obrigatório em todos os endpoints /v1/*
Authorization: Bearer rvm_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
# Erros padronizados
401 → token inválido / revogado
403 → scope insuficiente / IP fora da allowlist
422 → payload inválido (campos faltando/inválidos)
429 → rate limit (header Retry-After)
5xx → erro interno (retry com backoff exponencial)
# Estrutura de erro
{
"error": {
"code": "validation_failed",
"message": "Field 'to' is required",
"field": "to"
}
}
Receba delivered,
opened,
clicked,
bounced,
complained,
unsubscribed em tempo real.
Para ambientes serverless ou que não mantém conexão aberta
# Verificação da assinatura (PHP)
$sig = $_SERVER['HTTP_X_RAVIMAIL_SIGNATURE'];
$body = file_get_contents('php://input');
$valid = hash_equals(
'sha256=' . hash_hmac('sha256', $body, $secret),
$sig
);
Para dashboards reativos, observabilidade ao vivo
# Consumir o stream (Node.js)
const es = new EventSource(
'https://api.ravimail.com.br/v1/events/stream',
{ headers: { 'Authorization': 'Bearer rvm_live_...' } }
);
es.onmessage = (e) => {
console.log(JSON.parse(e.data));
};
# Endereços especiais que retornam cenários reais
success@simulator.ravimail.com.br # delivered
bounce@simulator.ravimail.com.br # hard bounce
soft-bounce@simulator.ravimail.com.br # soft bounce + retry
complaint@simulator.ravimail.com.br # marca como spam
suppress@simulator.ravimail.com.br # vai pra supressão
opened@simulator.ravimail.com.br # delivered + open evento
clicked@simulator.ravimail.com.br # delivered + open + click
# Trigger manual de eventos via API
curl -X POST https://api.ravimail.com.br/v1/sandbox/trigger-event \
-H "Authorization: Bearer rvm_test_..." \
-d '{"message_id":"msg_sandbox_abc","event":"bounced"}'
Sandbox isolado do ambiente live: nada é enviado de verdade, nada cobra crédito, nada aparece em relatórios reais. Combine com o Mailbox Simulator pra reproduzir bounces, complaints, supressões e clicks deterministicamente.
ravisystems/ravimail-php
Client tipado, PSR-4, exceções específicas (Validation/RateLimit/Auth), suporte completo aos 18 grupos de recursos.
# Instalação
composer require ravisystems/ravimail-php
# Exceções tipadas
use Ravimail\Exception\{
ValidationException,
RateLimitException,
AuthenticationException,
ApiException
};
smtp.ravimail.com.br:587
Sistemas legados que falam SMTP (PHPMailer, Nodemailer, smtplib, WordPress) podem usar diretamente — autenticação SASL via mesmo token API.
# Credenciais de autenticação
Host: smtp.ravimail.com.br
Porta: 587 (STARTTLS) ou 465 (TLS)
User: api
Senha: rvm_live_xxxxxxxxxxxxxxxxxxxxxxxx
Auth: PLAIN ou LOGIN
Dúvidas comuns de quem está integrando.
Retry-After. Burst e janela móvel são documentados em /docs. rvm_live_* e rvm_test_* coexistem na mesma conta. Sandbox é totalmente isolado — não cobra créditos, não envia email real, não aparece em métricas live. 10.0.0.0/24) ou IPs individuais. Requests de IPs fora retornam 403 e ficam logados. POST /v1/webhooks/{id}/rotate-secret. Por uma janela curta, ambos os secrets são aceitos pra você atualizar seu handler. @simulator.ravimail.com.br são reconhecidos em qualquer modo. Útil pra testar handlers de webhook em produção sem afetar reputação. api, senha = seu token API (live ou test). SASL PLAIN ou LOGIN. Funciona com qualquer cliente SMTP padrão — PHPMailer, Nodemailer, smtplib, WP Mail SMTP, etc. /v1/subaccounts cria subcontas com tokens isolados, métricas separadas e supressão independente. Ideal pra agências e SaaS revendendo email. Crie sua conta gratuita, gere um token sandbox e faça o primeiro envio em minutos. Sem cartão de crédito.