Integre o seu sistema ao RCall.
Cadastre o que você vende como catálogo, avise o RCall a cada venda e ele agenda o lembrete que traz o cliente de volta — por WhatsApp, SMS ou e-mail. Um endereço só, JSON na ida e na volta.
https://api.rcall.com.br/v1
Comece em 3 passos
-
Pegue o seu token
No painel, em Conta → API & integrações, crie um usuário integrador e gere o token. Ele identifica a sua empresa em toda requisição.
-
Cadastre um catálogo
O catálogo diz o que foi vendido, depois de quanto tempo lembrar e qual mensagem enviar em cada canal. Guarde o
codInternoCliente: é o código do item no seu sistema. -
Agende um lembrete a cada venda
Envie o código do catálogo, o contato do cliente e a data da operação. O RCall calcula a data do lembrete e dispara sozinho.
curl -X POST "https://api.rcall.com.br/v1?model=RECORRENCIA&action=SAVE" \
-H "Authorization: Bearer SEU_TOKEN" \
-H "Content-Type: application/json" \
-d '{"codigoCatalogo":"SERV-0042","canal":"WHATSAPP","destino":"(85) 99999-1234","nomeCliente":"Mariana Alves","dataOperacao":"2026-11-09","variaveis":{"veiculo":"Onix 2022"}}'
Autenticação
Envie o token de integração em toda requisição, de preferência no cabeçalho:
Authorization: Bearer SEU_TOKEN
Quando o seu sistema não consegue enviar cabeçalhos, o token também é aceito na URL, em &token=SEU_TOKEN (codifique os caracteres especiais com encodeURIComponent).
| Regra | O que significa |
|---|---|
| Escopo | O token de integração só acessa /v1. Ele não entra no painel nem nas rotas internas. |
| IP autorizado | Cada token vale para o IP cadastrado com ele (o do servidor que chama a API). De outro IP a resposta é 403. |
| Validade | O token acompanha a assinatura: com a fatura em dia ele é renovado sozinho; vencido, a resposta é 401. |
| Segredo | Trate o token como senha: guarde no servidor, nunca em página web ou aplicativo distribuído. |
Formato das requisições
Toda operação é um POST no mesmo endereço. O que muda são dois parâmetros da URL e o corpo em JSON:
https://api.rcall.com.br/v1?model={MODEL}&action={ACTION}
| model | action | O que faz |
|---|---|---|
CATALOGO | SAVE | Cria ou atualiza um catálogo e as mensagens dele. |
SEARCH | Consulta catálogos, com filtros e paginação. | |
DELETE | Exclui um catálogo sem lembretes. | |
RECORRENCIA | SAVE | Agenda um lembrete. |
SAVE_BATCH | Agenda até 500 lembretes de uma vez. | |
SEARCH | Consulta lembretes e o status de cada um. | |
DELETE | Cancela um lembrete que ainda não saiu. | |
ARQUIVO | UPLOAD | Envia um arquivo para anexar a uma mensagem. |
- Corpo e resposta em
application/json, UTF-8. Só o envio de arquivo usamultipart/form-data. - Sucesso responde
200com o objeto da operação. Erro responde com o status HTTP e umamessageque diz o que corrigir (veja Erros e limites). - Datas vão e voltam no horário de Brasília, como
2026-12-31ou2026-12-31 14:30.
Catálogos
Um catálogo é um item do seu negócio que faz o cliente voltar. Há cinco tipos; o payload é o mesmo, muda o que faz sentido preencher.
https://api.rcall.com.br/v1?model=CATALOGO&action=SAVE
| Campo | Tipo | Descrição |
|---|---|---|
tipo obrigatório | texto | SERVICO, PRODUTO, NOTIFICACAO, PROMOCAO ou AUTORIZACAO. |
titulo obrigatório | texto (255) | Nome do item, como aparece no painel. |
templateCatalogos obrigatório | lista | Uma mensagem por canal: plataforma (WHATSAPP, SMS ou EMAIL) e template (o texto, com variáveis). O lembrete só pode ser agendado em canal que tem mensagem. |
codInternoCliente | texto (255) | Código do item no seu sistema. Recomendado: é com ele que você agenda lembretes e atualiza o catálogo, sem guardar ids do RCall. |
prazoRetorno | número | Quanto tempo depois da operação o lembrete sai. 0 (padrão) envia na própria data da operação. |
tipoRetorno | texto | Unidade do prazo: DIA (padrão), MES ou ANO. |
duracao, tipoDuracao | número, texto | Só para SERVICO: duração do atendimento em MINUTO, HORA ou DIA, usada na agenda. |
link | URL | Endereço da sua loja ou da página do item. É para onde a variável $metadado.link leva o cliente. |
descricao | texto (500) | Anotação interna. |
status | texto | ATIVO (padrão) ou INATIVO. Catálogo inativo não aceita novos lembretes. |
id | número | Só para atualizar um catálogo pelo id do RCall. Com codInternoCliente você não precisa dele. |
Um exemplo para cada tipo
Algo que o cliente refaz de tempos em tempos: revisão, limpeza, consulta. Tem prazo de retorno e duração do atendimento.
{
"tipo": "SERVICO",
"titulo": "Troca de óleo",
"codInternoCliente": "SERV-0042",
"descricao": "Óleo sintético 5W30 + filtro",
"prazoRetorno": 6,
"tipoRetorno": "MES",
"duracao": 40,
"tipoDuracao": "MINUTO",
"templateCatalogos": [
{
"plataforma": "WHATSAPP",
"template": "Olá $metadado.nomeCliente! Já faz 6 meses da troca de óleo do seu $metadado.veiculo. Agende o retorno: $metadado.linkAtendimento"
},
{
"plataforma": "SMS",
"template": "$metadado.nomeCliente, ja faz 6 meses da troca de oleo do $metadado.veiculo. Agende: $metadado.linkAtendimento"
}
]
}
{
"id": 128,
"codigo": "k3Jx9TqLm2Zp7WcRd5Vn8Yb1Ha4Fs6Gu0Ee",
"codInternoCliente": "SERV-0042",
"tipo": "SERVICO",
"titulo": "Troca de óleo",
"descricao": "Óleo sintético 5W30 + filtro",
"status": "ATIVO",
"prazoRetorno": 6,
"tipoRetorno": "MES",
"duracao": 40,
"tipoDuracao": "MINUTO",
"link": null,
"variaveis": [
"nomeCliente",
"veiculo",
"linkAtendimento"
],
"templateCatalogos": [
{
"plataforma": "WHATSAPP",
"template": "Olá $metadado.nomeCliente! Já faz 6 meses da troca de óleo do seu $metadado.veiculo. Agende o retorno: $metadado.linkAtendimento"
},
{
"plataforma": "SMS",
"template": "$metadado.nomeCliente, ja faz 6 meses da troca de oleo do $metadado.veiculo. Agende: $metadado.linkAtendimento"
}
]
}
Algo que acaba ou vence e precisa ser reposto: óleo, bateria, lente, ração. O link da loja leva o cliente direto à compra.
{
"tipo": "PRODUTO",
"titulo": "Bateria 60Ah",
"codInternoCliente": "PROD-BAT-60",
"prazoRetorno": 2,
"tipoRetorno": "ANO",
"link": "https://www.sualoja.com.br/baterias",
"templateCatalogos": [
{
"plataforma": "WHATSAPP",
"template": "Oi $metadado.nomeCliente! Sua bateria completou 2 anos. Garanta a troca com desconto: $metadado.link"
},
{
"plataforma": "EMAIL",
"template": "<p>Olá <strong>$metadado.nomeCliente</strong>,</p><p>Sua bateria completou 2 anos. <a href=\"$metadado.link\">Veja as opções de troca</a> ou <a href=\"$metadado.linkAtendimento\">fale com a gente</a>.</p>"
}
]
}
{
"id": 128,
"codigo": "k3Jx9TqLm2Zp7WcRd5Vn8Yb1Ha4Fs6Gu0Ee",
"codInternoCliente": "PROD-BAT-60",
"tipo": "PRODUTO",
"titulo": "Bateria 60Ah",
"descricao": null,
"status": "ATIVO",
"prazoRetorno": 2,
"tipoRetorno": "ANO",
"duracao": 1,
"tipoDuracao": "DIA",
"link": "https://www.sualoja.com.br/baterias",
"variaveis": [
"nomeCliente",
"link",
"linkAtendimento"
],
"templateCatalogos": [
{
"plataforma": "WHATSAPP",
"template": "Oi $metadado.nomeCliente! Sua bateria completou 2 anos. Garanta a troca com desconto: $metadado.link"
},
{
"plataforma": "EMAIL",
"template": "<p>Olá <strong>$metadado.nomeCliente</strong>,</p><p>Sua bateria completou 2 anos. <a href=\"$metadado.link\">Veja as opções de troca</a> ou <a href=\"$metadado.linkAtendimento\">fale com a gente</a>.</p>"
}
]
}
Um aviso sem venda envolvida: vencimento, documento pronto, lembrete de consulta. Com prazo 0, sai na data da operação que você informar.
{
"tipo": "NOTIFICACAO",
"titulo": "Aviso de vencimento do seguro",
"codInternoCliente": "AVISO-SEGURO",
"prazoRetorno": 0,
"templateCatalogos": [
{
"plataforma": "WHATSAPP",
"template": "Olá $metadado.nomeCliente, o seguro da placa $metadado.placa vence em $metadado.vencimento. Renove sem sair de casa: $metadado.linkAtendimento"
}
]
}
{
"id": 128,
"codigo": "k3Jx9TqLm2Zp7WcRd5Vn8Yb1Ha4Fs6Gu0Ee",
"codInternoCliente": "AVISO-SEGURO",
"tipo": "NOTIFICACAO",
"titulo": "Aviso de vencimento do seguro",
"descricao": null,
"status": "ATIVO",
"prazoRetorno": 0,
"tipoRetorno": "DIA",
"duracao": 1,
"tipoDuracao": "DIA",
"link": null,
"variaveis": [
"nomeCliente",
"placa",
"vencimento",
"linkAtendimento"
],
"templateCatalogos": [
{
"plataforma": "WHATSAPP",
"template": "Olá $metadado.nomeCliente, o seguro da placa $metadado.placa vence em $metadado.vencimento. Renove sem sair de casa: $metadado.linkAtendimento"
}
]
}
Uma oferta para trazer o cliente de volta. Use a variável link para levar à página da oferta e variáveis próprias para o que muda por cliente.
{
"tipo": "PROMOCAO",
"titulo": "Semana do alinhamento",
"codInternoCliente": "PROMO-ALINHAMENTO",
"prazoRetorno": 0,
"link": "https://www.sualoja.com.br/promocoes/alinhamento",
"templateCatalogos": [
{
"plataforma": "WHATSAPP",
"template": "$metadado.nomeCliente, esta semana o alinhamento sai com $metadado.desconto de desconto. Aproveite: $metadado.link"
},
{
"plataforma": "EMAIL",
"template": "<p>Olá $metadado.nomeCliente,</p><p>Esta semana o alinhamento sai com <strong>$metadado.desconto</strong> de desconto.</p><p><a href=\"$metadado.link\">Quero aproveitar</a></p>"
}
]
}
{
"id": 128,
"codigo": "k3Jx9TqLm2Zp7WcRd5Vn8Yb1Ha4Fs6Gu0Ee",
"codInternoCliente": "PROMO-ALINHAMENTO",
"tipo": "PROMOCAO",
"titulo": "Semana do alinhamento",
"descricao": null,
"status": "ATIVO",
"prazoRetorno": 0,
"tipoRetorno": "DIA",
"duracao": 1,
"tipoDuracao": "DIA",
"link": "https://www.sualoja.com.br/promocoes/alinhamento",
"variaveis": [
"nomeCliente",
"desconto",
"link"
],
"templateCatalogos": [
{
"plataforma": "WHATSAPP",
"template": "$metadado.nomeCliente, esta semana o alinhamento sai com $metadado.desconto de desconto. Aproveite: $metadado.link"
},
{
"plataforma": "EMAIL",
"template": "<p>Olá $metadado.nomeCliente,</p><p>Esta semana o alinhamento sai com <strong>$metadado.desconto</strong> de desconto.</p><p><a href=\"$metadado.link\">Quero aproveitar</a></p>"
}
]
}
Um pedido de confirmação ao cliente: aprovar orçamento, confirmar serviço. O cliente responde pelo link de atendimento.
{
"tipo": "AUTORIZACAO",
"titulo": "Aprovação de orçamento",
"codInternoCliente": "AUT-ORCAMENTO",
"prazoRetorno": 0,
"templateCatalogos": [
{
"plataforma": "WHATSAPP",
"template": "Olá $metadado.nomeCliente! O orçamento $metadado.numeroOrcamento ficou em $metadado.valor. Para aprovar ou tirar dúvidas, fale com a gente: $metadado.linkAtendimento"
}
]
}
{
"id": 128,
"codigo": "k3Jx9TqLm2Zp7WcRd5Vn8Yb1Ha4Fs6Gu0Ee",
"codInternoCliente": "AUT-ORCAMENTO",
"tipo": "AUTORIZACAO",
"titulo": "Aprovação de orçamento",
"descricao": null,
"status": "ATIVO",
"prazoRetorno": 0,
"tipoRetorno": "DIA",
"duracao": 1,
"tipoDuracao": "DIA",
"link": null,
"variaveis": [
"nomeCliente",
"numeroOrcamento",
"valor",
"linkAtendimento"
],
"templateCatalogos": [
{
"plataforma": "WHATSAPP",
"template": "Olá $metadado.nomeCliente! O orçamento $metadado.numeroOrcamento ficou em $metadado.valor. Para aprovar ou tirar dúvidas, fale com a gente: $metadado.linkAtendimento"
}
]
}
A resposta traz o codigo gerado pelo RCall e a lista variaveis: são os dados que a mensagem pede. As que não são preenchidas pelo RCall precisam ir em cada agendamento.
Atualizar, consultar e excluir
Reenvie só o que mudou com o mesmo codInternoCliente: o catálogo é atualizado, não duplicado. O canal que não vier em templateCatalogos continua como está.
{
"codInternoCliente": "SERV-0042",
"prazoRetorno": 5,
"tipoRetorno": "MES"
}
{
"id": 128,
"codigo": "k3Jx9TqLm2Zp7WcRd5Vn8Yb1Ha4Fs6Gu0Ee",
"codInternoCliente": "SERV-0042",
"tipo": "SERVICO",
"titulo": "Troca de óleo",
"descricao": "Óleo sintético 5W30 + filtro",
"status": "ATIVO",
"prazoRetorno": 5,
"tipoRetorno": "MES",
"duracao": 40,
"tipoDuracao": "MINUTO",
"link": null,
"variaveis": [
"nomeCliente",
"veiculo",
"linkAtendimento"
],
"templateCatalogos": [
{
"plataforma": "WHATSAPP",
"template": "Olá $metadado.nomeCliente! Já faz 6 meses da troca de óleo do seu $metadado.veiculo. Agende o retorno: $metadado.linkAtendimento"
},
{
"plataforma": "SMS",
"template": "$metadado.nomeCliente, ja faz 6 meses da troca de oleo do $metadado.veiculo. Agende: $metadado.linkAtendimento"
}
]
}
Filtros opcionais: id, codigo, codInternoCliente, tipo, status e titulo (contém). Paginação por ?page=0&size=20 (size até 100).
{
"tipo": "SERVICO",
"status": "ATIVO"
}
{
"content": [
{
"id": 128,
"codigo": "k3Jx9TqLm2Zp7WcRd5Vn8Yb1Ha4Fs6Gu0Ee",
"codInternoCliente": "SERV-0042",
"tipo": "SERVICO",
"titulo": "Troca de óleo",
"descricao": "Óleo sintético 5W30 + filtro",
"status": "ATIVO",
"prazoRetorno": 6,
"tipoRetorno": "MES",
"duracao": 40,
"tipoDuracao": "MINUTO",
"link": null,
"variaveis": [
"nomeCliente",
"veiculo",
"linkAtendimento"
],
"templateCatalogos": [
{
"plataforma": "WHATSAPP",
"template": "Olá $metadado.nomeCliente! Já faz 6 meses da troca de óleo do seu $metadado.veiculo. Agende o retorno: $metadado.linkAtendimento"
},
{
"plataforma": "SMS",
"template": "$metadado.nomeCliente, ja faz 6 meses da troca de oleo do $metadado.veiculo. Agende: $metadado.linkAtendimento"
}
]
}
],
"pageable": {
"pageNumber": 0,
"pageSize": 20,
"offset": 0
},
"totalElements": 1,
"totalPages": 1
}
Informe id, codigo ou codInternoCliente. Catálogo que já tem lembretes não é excluído: mude o status para INATIVO.
{
"codInternoCliente": "SERV-0042"
}
{
"sucesso": true,
"id": 128
}
Variáveis das mensagens
No texto da mensagem, $metadado.chave é trocado pelo dado de cada cliente na hora do agendamento. Três variáveis já existem:
| Variável | O que vira | Quem preenche |
|---|---|---|
$metadado.nomeCliente | Nome do cliente. | Você, no campo nomeCliente do lembrete. |
$metadado.linkAtendimento | Link curto da página de atendimento, onde o cliente agenda ou chama a empresa no WhatsApp. É por ele que o RCall mede aberturas e retornos. | O RCall. |
$metadado.link | Link curto que leva à sua loja. O RCall registra o clique e redireciona. | O catálogo (link) ou, para um endereço por cliente, você em variaveis.link. |
Qualquer outra chave é uma variável sua: escreva $metadado.veiculo na mensagem e envie "variaveis": { "veiculo": "Onix 2022" } no lembrete. A chave aceita letras, números e _, começando por letra.
Faltou o valor de uma variável da mensagem? O lembrete é recusado com Faltam os dados das variáveis da mensagem: … — o cliente nunca recebe $metadado.algo no meio do texto.
Lembretes
Um lembrete é uma mensagem agendada para um cliente, por um canal. Na API ele se chama RECORRENCIA.
https://api.rcall.com.br/v1?model=RECORRENCIA&action=SAVE
| Campo | Tipo | Descrição |
|---|---|---|
canal obrigatório | texto | WHATSAPP, SMS ou EMAIL. Precisa estar disponível para a sua empresa e ter mensagem no catálogo. |
destino obrigatório | texto | Telefone com DDD (10 a 13 dígitos; a máscara é ignorada) ou e-mail, conforme o canal. |
nomeCliente obrigatório | texto (120) | Como o cliente é chamado na mensagem; o RCall App também salva o contato no celular com ele (Maria Souza @Cliente RCall). |
codigoCatalogo | texto | O codInternoCliente ou o codigo do catálogo. Sem ele, o lembrete sai com a mensagem padrão do canal. |
dataOperacao | data | Quando a venda ou o atendimento aconteceu. O RCall soma o prazo do catálogo. Sem ela, vale o momento da requisição. |
variaveis | objeto | Valores das variáveis da mensagem: { "chave": "valor" }. Até 30 variáveis, 500 caracteres cada. |
referencia | texto (80) | Seu identificador (venda, pedido). No lote, volta junto do resultado de cada item. |
Exemplos por canal
A venda aconteceu hoje: o RCall soma os 6 meses do catálogo e agenda. veiculo é a variável que a mensagem do catálogo usa.
{
"codigoCatalogo": "SERV-0042",
"canal": "WHATSAPP",
"destino": "(85) 99999-1234",
"nomeCliente": "Mariana Alves",
"dataOperacao": "2026-11-09",
"variaveis": {
"veiculo": "Onix 2022"
}
}
{
"id": 5120,
"status": "PENDENTE",
"canal": "WHATSAPP",
"destino": "85999991234",
"dataPrevista": "2027-05-09 08:00:00",
"dataEnvio": null,
"mensagem": "Olá Mariana Alves! Já faz 6 meses da troca de óleo do seu Onix 2022. Agende o retorno: https://rcall.com.br/a/7Xk2bQ9LpA"
}
Mesmo catálogo, outro canal: o catálogo precisa ter mensagem para EMAIL. Aqui a data da operação tem hora, e o lembrete sai na mesma hora.
{
"codigoCatalogo": "PROD-BAT-60",
"canal": "EMAIL",
"destino": "mariana@exemplo.com",
"nomeCliente": "Mariana Alves",
"dataOperacao": "2026-11-09 14:30"
}
{
"id": 5120,
"status": "PENDENTE",
"canal": "EMAIL",
"destino": "mariana@exemplo.com",
"dataPrevista": "2028-11-09 14:30:00",
"dataEnvio": null,
"mensagem": "<p>Olá <strong>Mariana Alves</strong>,</p><p>Sua bateria completou 2 anos. <a href=\"https://rcall.com.br/l/7Xk2bQ9LpA\">Veja as opções de troca</a> ou <a href=\"https://rcall.com.br/a/7Xk2bQ9LpA\">fale com a gente</a>.</p>"
}
Venda antiga: a data da operação mais o prazo do catálogo já passou, então o lembrete é agendado para 1 hora depois desta requisição.
{
"codigoCatalogo": "SERV-0042",
"canal": "SMS",
"destino": "85999991234",
"nomeCliente": "Carlos Lima",
"dataOperacao": "2026-03-09",
"variaveis": {
"veiculo": "Gol 2015"
}
}
{
"id": 5120,
"status": "PENDENTE",
"canal": "SMS",
"destino": "85999991234",
"dataPrevista": "2026-11-09 13:48:40",
"dataEnvio": null,
"mensagem": "Carlos Lima, ja faz 6 meses da troca de oleo do Gol 2015. Agende: https://rcall.com.br/a/7Xk2bQ9LpA"
}
Catálogo com prazo 0: o aviso sai na data da operação. Aqui, 30 dias antes do vencimento, calculado pelo seu sistema.
{
"codigoCatalogo": "AVISO-SEGURO",
"canal": "WHATSAPP",
"destino": "85999991234",
"nomeCliente": "Carlos Lima",
"dataOperacao": "2026-11-24",
"variaveis": {
"placa": "ABC1D23",
"vencimento": "24/12/2026"
}
}
{
"id": 5120,
"status": "PENDENTE",
"canal": "WHATSAPP",
"destino": "85999991234",
"dataPrevista": "2026-11-24 08:00:00",
"dataEnvio": null,
"mensagem": "Olá Carlos Lima, o seguro da placa ABC1D23 vence em 24/12/2026. Renove sem sair de casa: https://rcall.com.br/a/7Xk2bQ9LpA"
}
dataPrevista é quando a mensagem vai sair; dataEnvio fica vazia até o envio. Acompanhe pelo status: PENDENTE → ENVIADO ou FALHA (e DELETADA quando cancelado).
Quando o lembrete sai
Você informa quando a operação aconteceu; a data do lembrete é conta do RCall:
dataPrevista = dataOperacao + prazoRetorno do catálogo
| Situação | O que acontece | Exemplo (catálogo de 6 meses) |
|---|---|---|
| Data sem hora | O lembrete sai às 08:00 do dia calculado. | 2026-10-10 → 2027-04-10 08:00:00 |
| Data com hora | A hora é mantida. | 2026-10-10 14:30 → 2027-04-10 14:30:00 |
Sem dataOperacao | A operação é o momento da requisição. | agora + 6 meses |
| Resultado no passado | O lembrete é agendado para 1 hora depois da requisição, em vez de se perder ou sair na hora. | 2025-01-10 → daqui a 1 hora |
| Catálogo com prazo 0 | O lembrete sai na própria data da operação (avisos e promoções com dia marcado). | 2026-12-01 → 2026-12-01 08:00:00 |
Formatos aceitos: 2026-12-31, 2026-12-31 14:30, 2026-12-31T14:30:00 e 31/12/2026. A resposta sempre traz a dataPrevista calculada.
Lote, consulta e cancelamento
Para fechar o dia ou migrar uma base, envie os lembretes em lote. Cada item tem os mesmos campos de RECORRENCIA / SAVE.
https://api.rcall.com.br/v1?model=RECORRENCIA&action=SAVE_BATCH
envioImediato no lugar da data: o lembrete sai na hora. Se o número enviou há pouco, ele espera o intervalo entre envios do canal (no WhatsApp, 60 s por número) e o agendador o envia em seguida; o status da resposta diz se já saiu (ENVIADO) ou se está na fila (PENDENTE).
{
"codigoCatalogo": "SERV-0042",
"canal": "WHATSAPP",
"destino": "85999991234",
"nomeCliente": "Mariana Alves",
"envioImediato": true,
"variaveis": {
"veiculo": "Onix 2022"
}
}
{
"id": 5120,
"status": "ENVIADO",
"canal": "WHATSAPP",
"destino": "85999991234",
"dataPrevista": "2026-11-09 12:48:40",
"dataEnvio": null,
"mensagem": "Olá Mariana Alves! Já faz 6 meses da troca de óleo do seu Onix 2022. Agende o retorno: https://rcall.com.br/a/7Xk2bQ9LpA"
}
Imagem, PDF ou planilha só deste cliente (ex.: o QR Code de um cupom). Envie antes o arquivo em ARQUIVO / UPLOAD (multipart, campo file) e use o arquivoId devolvido. No WhatsApp a mensagem vai como legenda do arquivo, numa mensagem só; no e-mail, como anexo. O SMS não leva arquivo.
{
"codigoCatalogo": "PROMO-CUPOM",
"canal": "WHATSAPP",
"destino": "85999991234",
"nomeCliente": "Mariana Alves",
"envioImediato": true,
"arquivoId": 318,
"variaveis": {
"cupom": "ABC123"
}
}
{
"id": 5120,
"status": "ENVIADO",
"canal": "WHATSAPP",
"destino": "85999991234",
"dataPrevista": "2026-11-09 12:48:40",
"dataEnvio": null,
"mensagem": "Olá Mariana Alves! Seu cupom ABC123 está na imagem: apresente o QR Code no caixa. https://rcall.com.br/a/7Xk2bQ9LpA"
}
Até 500 lembretes por requisição. Cada item é independente: os válidos são agendados e os recusados voltam com o motivo. referencia é o seu identificador (venda, pedido) e volta no resultado.
{
"itens": [
{
"referencia": "venda-1001",
"codigoCatalogo": "SERV-0042",
"canal": "WHATSAPP",
"destino": "85999991234",
"nomeCliente": "Mariana Alves",
"dataOperacao": "2026-11-09",
"variaveis": {
"veiculo": "Onix 2022"
}
},
{
"referencia": "venda-1002",
"codigoCatalogo": "SERV-0042",
"canal": "WHATSAPP",
"destino": "85988887777",
"nomeCliente": "Carlos Lima",
"dataOperacao": "2026-11-09"
},
{
"referencia": "venda-1003",
"codigoCatalogo": "PROD-BAT-60",
"canal": "EMAIL",
"destino": "ana@exemplo.com",
"nomeCliente": "Ana Souza",
"dataOperacao": "2026-11-09"
}
]
}
{
"total": 3,
"agendadas": 2,
"recusadas": 1,
"resultados": [
{
"linha": 1,
"referencia": "venda-1001",
"sucesso": true,
"id": 5121,
"dataPrevista": "2027-05-09 08:00:00"
},
{
"linha": 2,
"referencia": "venda-1002",
"sucesso": false,
"mensagem": "Faltam os dados das variáveis da mensagem: veiculo."
},
{
"linha": 3,
"referencia": "venda-1003",
"sucesso": true,
"id": 5122,
"dataPrevista": "2028-11-09 08:00:00"
}
]
}
Filtros opcionais: id, status (PENDENTE, ENVIADO, FALHA, DELETADA), canal e destino. Mais recentes primeiro.
{
"status": "PENDENTE",
"canal": "WHATSAPP"
}
{
"content": [
{
"id": 5120,
"status": "PENDENTE",
"canal": "WHATSAPP",
"destino": "85999991234",
"dataPrevista": "2027-05-09 08:00:00",
"dataEnvio": null,
"mensagem": "Olá Mariana Alves! Já faz 6 meses da troca de óleo do seu Onix 2022. Agende o retorno: https://rcall.com.br/a/7Xk2bQ9LpA"
}
],
"pageable": {
"pageNumber": 0,
"pageSize": 20,
"offset": 0
},
"totalElements": 1,
"totalPages": 1
}
Cancela um lembrete que ainda não saiu. O registro continua na consulta, com status DELETADA.
{
"id": 5120
}
{
"sucesso": true,
"id": 5120
}
- O lote responde
200mesmo com itens recusados: confirarecusadase osucessode cada resultado. linhaé a posição do item no lote (a partir de 1);referenciaé o identificador que você enviou.- Reenviar um item que já entrou cria outro lembrete: reenvie só os recusados.
Arquivos
Para anexar uma imagem ou PDF à mensagem de um catálogo, envie o arquivo e use o arquivoId devolvido em templateCatalogos[].arquivoId. SMS não leva anexo.
https://api.rcall.com.br/v1?model=ARQUIVO&action=UPLOAD
curl -X POST "https://api.rcall.com.br/v1?model=ARQUIVO&action=UPLOAD" \
-H "Authorization: Bearer SEU_TOKEN" \
-F "file=@garantia.pdf"
{
"arquivoId": 87,
"nome": "garantia.pdf"
}
Incorporar no seu site
Sem escrever integração, você pode colocar duas páginas do RCall dentro do seu site ou sistema, em um <iframe>:
| Página | O que faz |
|---|---|
| Painel de indicadores | Agendadas, enviadas, abertas e retornos da sua empresa, com o histórico de 30 dias. Só leitura e só números. |
| Cadastro de catálogo | Formulário que cria catálogos pela mesma regra de CATALOGO / SAVE. Passe &codigo= com o código do item no seu sistema para atrelar o catálogo a ele. |
O código do iframe é gerado no painel, em Conta → Incorporar no site. Cada incorporação tem uma chave própria, que vale para uma página só e para os domínios que você autorizar, e pode ser desativada a qualquer momento. Ela não é o token da API e não serve para chamar /v1.
Erros e limites
Todo erro tem o mesmo formato. Mostre a message a quem opera o seu sistema: ela diz o que corrigir.
{
"timestamp": "2026-11-09T12:48:40-03:00",
"status": 400,
"error": "Bad Request",
"message": "Faltam os dados das variáveis da mensagem: veiculo.",
"path": "/v1"
}
| Status | Quando acontece | O que fazer |
|---|---|---|
400 | Dado inválido ou faltando: canal, contato, data, variável da mensagem, catálogo sem mensagem para o canal, catálogo inativo. | Corrija o campo indicado na message e reenvie. |
401 | Token ausente, inválido ou vencido. | Confira o token e a situação da assinatura. |
403 | Requisição de um IP diferente do autorizado para o token. | Ajuste o IP do token em API & integrações. |
404 | Catálogo ou lembrete não encontrado na sua empresa. | Confira o código ou o id. |
422 | O canal não está disponível para a sua empresa. | Use outro canal ou configure-o no painel. |
500 | Falha do nosso lado. | Tente de novo em instantes; se persistir, fale com o suporte. |
Limites
- Lote: até 500 lembretes por requisição.
- Consulta: até 100 registros por página (
size). - Variáveis: até 30 por lembrete, 500 caracteres cada.
- Um lembrete, um canal: para avisar o mesmo cliente por WhatsApp e e-mail, agende dois lembretes.
Simulador
Monte a requisição, envie para a API e veja a resposta. Escolha um exemplo pronto ou edite o corpo.
As chamadas são reais: catálogos são criados e lembretes são agendados na sua conta. O simulador chama a API direto deste navegador, então o IP autorizado do token precisa ser o desta máquina. O token fica só nesta página e some quando você a fecha.