API externa · v1

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.

Base https://api.rcall.com.br/v1

Comece em 3 passos

  1. 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.

  2. 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.

  3. 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 · agendar um lembrete
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:

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).

RegraO que significa
EscopoO token de integração só acessa /v1. Ele não entra no painel nem nas rotas internas.
IP autorizadoCada token vale para o IP cadastrado com ele (o do servidor que chama a API). De outro IP a resposta é 403.
ValidadeO token acompanha a assinatura: com a fatura em dia ele é renovado sozinho; vencido, a resposta é 401.
SegredoTrate 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:

POST https://api.rcall.com.br/v1?model={MODEL}&action={ACTION}
modelactionO que faz
CATALOGOSAVECria ou atualiza um catálogo e as mensagens dele.
SEARCHConsulta catálogos, com filtros e paginação.
DELETEExclui um catálogo sem lembretes.
RECORRENCIASAVEAgenda um lembrete.
SAVE_BATCHAgenda até 500 lembretes de uma vez.
SEARCHConsulta lembretes e o status de cada um.
DELETECancela um lembrete que ainda não saiu.
ARQUIVOUPLOADEnvia um arquivo para anexar a uma mensagem.
  • Corpo e resposta em application/json, UTF-8. Só o envio de arquivo usa multipart/form-data.
  • Sucesso responde 200 com o objeto da operação. Erro responde com o status HTTP e uma message que diz o que corrigir (veja Erros e limites).
  • Datas vão e voltam no horário de Brasília, como 2026-12-31 ou 2026-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.

POST https://api.rcall.com.br/v1?model=CATALOGO&action=SAVE
CampoTipoDescrição
tipo obrigatóriotextoSERVICO, PRODUTO, NOTIFICACAO, PROMOCAO ou AUTORIZACAO.
titulo obrigatóriotexto (255)Nome do item, como aparece no painel.
templateCatalogos obrigatóriolistaUma 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.
codInternoClientetexto (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.
prazoRetornonúmeroQuanto tempo depois da operação o lembrete sai. 0 (padrão) envia na própria data da operação.
tipoRetornotextoUnidade do prazo: DIA (padrão), MES ou ANO.
duracao, tipoDuracaonúmero, textoSó para SERVICO: duração do atendimento em MINUTO, HORA ou DIA, usada na agenda.
linkURLEndereço da sua loja ou da página do item. É para onde a variável $metadado.link leva o cliente.
descricaotexto (500)Anotação interna.
statustextoATIVO (padrão) ou INATIVO. Catálogo inativo não aceita novos lembretes.
idnúmeroSó 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.

Requisição · CATALOGO / SAVE
{
    "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"
        }
    ]
}
Resposta · 200
{
    "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"
        }
    ]
}

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á.

Requisição · CATALOGO / SAVE
{
    "codInternoCliente": "SERV-0042",
    "prazoRetorno": 5,
    "tipoRetorno": "MES"
}
Resposta · 200
{
    "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"
        }
    ]
}

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ávelO que viraQuem preenche
$metadado.nomeClienteNome do cliente.Você, no campo nomeCliente do lembrete.
$metadado.linkAtendimentoLink 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.linkLink 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.

POST https://api.rcall.com.br/v1?model=RECORRENCIA&action=SAVE
CampoTipoDescrição
canal obrigatóriotextoWHATSAPP, SMS ou EMAIL. Precisa estar disponível para a sua empresa e ter mensagem no catálogo.
destino obrigatóriotextoTelefone com DDD (10 a 13 dígitos; a máscara é ignorada) ou e-mail, conforme o canal.
nomeCliente obrigatóriotexto (120)Como o cliente é chamado na mensagem; o RCall App também salva o contato no celular com ele (Maria Souza @Cliente RCall).
codigoCatalogotextoO codInternoCliente ou o codigo do catálogo. Sem ele, o lembrete sai com a mensagem padrão do canal.
dataOperacaodataQuando a venda ou o atendimento aconteceu. O RCall soma o prazo do catálogo. Sem ela, vale o momento da requisição.
variaveisobjetoValores das variáveis da mensagem: { "chave": "valor" }. Até 30 variáveis, 500 caracteres cada.
referenciatexto (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.

Requisição · RECORRENCIA / SAVE
{
    "codigoCatalogo": "SERV-0042",
    "canal": "WHATSAPP",
    "destino": "(85) 99999-1234",
    "nomeCliente": "Mariana Alves",
    "dataOperacao": "2026-11-09",
    "variaveis": {
        "veiculo": "Onix 2022"
    }
}
Resposta · 200
{
    "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"
}

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çãoO que aconteceExemplo (catálogo de 6 meses)
Data sem horaO lembrete sai às 08:00 do dia calculado.2026-10-10 → 2027-04-10 08:00:00
Data com horaA hora é mantida.2026-10-10 14:30 → 2027-04-10 14:30:00
Sem dataOperacaoA operação é o momento da requisição.agora + 6 meses
Resultado no passadoO 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 0O 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.

POST 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).

Requisição · RECORRENCIA / SAVE
{
    "codigoCatalogo": "SERV-0042",
    "canal": "WHATSAPP",
    "destino": "85999991234",
    "nomeCliente": "Mariana Alves",
    "envioImediato": true,
    "variaveis": {
        "veiculo": "Onix 2022"
    }
}
Resposta · 200
{
    "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"
}
  • O lote responde 200 mesmo com itens recusados: confira recusadas e o sucesso de 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.

POST https://api.rcall.com.br/v1?model=ARQUIVO&action=UPLOAD
cURL · multipart/form-data, campo "file"
curl -X POST "https://api.rcall.com.br/v1?model=ARQUIVO&action=UPLOAD" \
  -H "Authorization: Bearer SEU_TOKEN" \
  -F "file=@garantia.pdf"
Resposta · 200
{
    "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áginaO que faz
Painel de indicadoresAgendadas, enviadas, abertas e retornos da sua empresa, com o histórico de 30 dias. Só leitura e só números.
Cadastro de catálogoFormulá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.

Resposta de erro
{
    "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"
}
StatusQuando aconteceO que fazer
400Dado 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.
401Token ausente, inválido ou vencido.Confira o token e a situação da assinatura.
403Requisição de um IP diferente do autorizado para o token.Ajuste o IP do token em API & integrações.
404Catálogo ou lembrete não encontrado na sua empresa.Confira o código ou o id.
422O canal não está disponível para a sua empresa.Use outro canal ou configure-o no painel.
500Falha 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.

Endereço
POST
Fale com a gente