Uma superfície versionada
As rotas REST públicas vivem em /v1. Rotas compatíveis em /api/v1 chegam na mesma API.
Construa sobre a REST API de produção para conversas de WhatsApp, Instagram e Messenger. Aqui você encontra auth, paginação, mensagens, jornadas, templates, webhooks assinados, debug de entregas e endpoints para desenvolvedores.
Use o InstantReply como camada de mensagens do seu produto ou ferramenta interna. Seu backend pode ler conversas, enviar respostas, atualizar contatos, rotear leads, disparar jornadas de WhatsApp, validar templates e reagir a mensagens de clientes em tempo real.
As rotas REST públicas vivem em /v1. Rotas compatíveis em /api/v1 chegam na mesma API.
É a mesma superfície de produção usada pelo dashboard, automações, respostas IA e envios de jornada.
Registre um endpoint webhook e receba POSTs assinados quando o cliente responde ou a entrega muda.
Autentique com uma API key com escopo em Authorization: Bearer $IR_API_KEY. Separe keys live e test. Você pode rotacionar keys no developer settings sem trocar o segredo de assinatura do webhook.
curl https://api.instantreply.co/v1/conversations \
-H "Authorization: Bearer $IR_API_KEY"curl -X POST https://api.instantreply.co/v1/conversations/$ID/messages \
-H "Authorization: Bearer $IR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"content":"Thanks for reaching out - how can we help?"}'Todo endpoint de lista aceita ?cursor= e retorna o próximo cursor quando existem mais registros. Trate o cursor como opaco e envie de volta exatamente como recebeu.
Falhas retornam um envelope JSON com code, message, doc_url e request_id. Guarde X-Request-Id quando precisar que o suporte rastreie uma chamada.
Estas são as rotas mais usadas por desenvolvedores. O inventário completo está no catálogo REST, mas esta página explica para que serve cada grupo e como ele entra na integração.
Leia conversas, envie respostas e sincronize histórico de mensagens.
/v1/conversationsLista conversas com filtros por status, canal, responsável e paginação por cursor.
/v1/conversations/:idLê uma conversa com cliente, canal, etapa, tags e atividade recente.
/v1/conversations/:idAtualiza atribuição, status, tags ou campos de roteamento da conversa.
/v1/conversations/:id/messagesLê o histórico de mensagens de uma conversa.
/v1/conversations/:id/messagesEnvia uma resposta pelo canal da conversa com o escopo messages:send. Exige Idempotency-Key. integration_id precisa corresponder à conta conectada à conversa; caso contrário, retorna 409 ACCOUNT_MISMATCH.
/v1/messagesLista mensagens de todas as conversas para auditoria, sync ou analítica.
/v1/messagesEnvia conteúdo de 1 a 4096 caracteres com o escopo messages:send e Idempotency-Key obrigatória. Use conversation_id ou contact_id mais channel para uma conversa existente. integration_id seleciona a conta conectada (consulte GET /v1/channels); chats de contato ambíguos retornam 409 ACCOUNT_REQUIRED.
/v1/messages/:idBusca detalhes de conteúdo e entrega de uma mensagem.
Mantenha o registro do cliente sincronizado e consulte métricas operacionais.
/v1/contactsLista contatos com etapa, score, owner e identidade de canal.
/v1/contacts/:idLê um perfil de contato e contexto de conversa.
/v1/contacts/:idAtualiza campos criados por lead capture ou CRM.
/v1/channelsLista canais conectados de WhatsApp, Instagram e Messenger.
/v1/channels/:integration_idAtiva respostas de DM com { ai_enabled } ou respostas a comentários dessa página com { ai_comment_replies_enabled }; exige automations:write.
/v1/analytics/summaryConsulta métricas de volume, resposta e conversão.
/v1/usageLê uso de plano para mensagens, IA, webhooks e chamadas API.
/v1/statusEstado público sem autenticação das dependências de banco de dados e Redis: 200 quando saudáveis, 503 quando degradadas; error_rate fica null até haver histórico real suficiente.
Gerencie API keys e assine eventos em tempo real no seu servidor.
/v1/keysLista API keys ativas e escopos.
/v1/keysCria uma key com escopo para backend, agente ou ambiente test.
/v1/keys/:id/rotateRotaciona uma key sem downtime.
/v1/keys/:idRevoga uma key imediatamente.
/v1/webhooksLista endpoints webhook.
/v1/webhooksRegistra um endpoint webhook assinado.
/v1/webhooks/:idDesativa um endpoint webhook.
/v1/webhooks/:id/deliveriesInspeciona tentativas recentes e falhas.
Dispare jornadas de WhatsApp, revise entregas e sincronize eventos de negócio.
/v1/journeysLista journey templates disponíveis na conta.
/v1/triggerInscreve um contato numa jornada ou template workflow.
/v1/trigger/status/:idExplica o resultado atual de entrega de um trigger.
/v1/trigger/validateValida um payload antes do envio.
/v1/trigger/batchDispara um lote de contatos com resultado por linha.
/v1/eventsEnvia um evento externo de negócio para o InstantReply.
/v1/campaigns/:id/sendInicia o envio de uma campanha aprovada.
Valide, envie e depure templates de WhatsApp sem adivinhar política da Meta.
/v1/templatesLista templates e status no InstantReply e na Meta.
/v1/templates/:id/sendEnvia um template aprovado com templates:send. integration_id seleciona o remetente; se omitido, usa o número vinculado ao template ou o único número ativo. Se houver vários números sem seleção, retorna 409 AMBIGUOUS_INTEGRATION.
/v1/templatesCria um rascunho de template.
/v1/templates/:id/validateRevisa categoria e oferece coaching para UTILITY.
/v1/templates/:id/submitEnvia o template para revisão da Meta.
/v1/developer/capabilitiesLê escopos, features habilitadas e limites.
/v1/developer/onboardingConsulta checklist de integração.
/v1/developer/limitsConsulta rate limits e cotas.
/v1/developer/troubleshooting/errors/:codeBusca um erro conhecido do provedor.
Registre POST /v1/webhooks uma vez e o InstantReply enviará eventos em tempo real para seu servidor. A entrega é at-least-once, então processe X-InstantReply-Delivery de forma idempotente.
Seu servidor precisa aceitar POST JSON e responder 2xx em ate 8 segundos.
Chame POST /v1/webhooks com uma key que tenha webhooks:write e assine eventos exatos, *, ou wildcards como message.*.
O segredo whsec_ aparece uma unica vez. Verifique cada entrega e use GET /v1/webhooks/:id/deliveries para debugar falhas.
Ao registrar um webhook, seu segredo de assinatura whsec_ é exibido uma única vez, apenas no corpo dessa resposta: guarde-o imediatamente, ele nunca é mostrado de novo. Perdeu? Exclua o endpoint e registre um novo. Verifique X-InstantReply-Signature com HMAC-SHA256 sobre timestamp.rawBody antes de confiar no payload. Tentativas recentes ficam em GET /v1/webhooks/:id/deliveries.
app.post("/webhooks/instantreply", express.raw({ type: "application/json" }), (req, res) => {
const timestamp = req.header("X-InstantReply-Timestamp")
const signature = req.header("X-InstantReply-Signature")
const rawBody = req.body.toString("utf8")
const signedPayload = timestamp + "." + rawBody
verifyHmacSha256(process.env.IR_WEBHOOK_SECRET, signedPayload, signature)
res.sendStatus(204)
})| Evento | Quando dispara |
|---|---|
message.received | Um cliente envia mensagem por WhatsApp, Instagram ou Messenger. |
message.sent | Sai uma mensagem pela IA, dashboard, API, automação ou jornada. |
conversation.created | Uma conversa nova abre por inbound, coexistence ou jornada. |
conversation.closed | Uma conversa é resolvida manualmente ou por automação. |
conversation.assigned | O owner muda por atribuição manual ou regra de roteamento. |
contact.updated | Lead extraction ou CRM sync atualiza um contato. |
contact.opted_out | Um contato cancela o recebimento, por exemplo ao responder STOP, para o seu CRM suprimi-lo. |
contact.opted_in | Um contato que tinha cancelado volta a aceitar mensagens, por exemplo ao responder START. |
template.status_update | A Meta reporta revisão ou mudança de qualidade de um template. |
message.delivery_failed | O provedor rejeita ou falha a entrega depois das tentativas. |
ticket.created | Um ticket de suporte é criado a partir de um repasse ou de uma revisão. |
ticket.updated | O status, a prioridade ou a atribuição de um ticket muda. |
ticket.assigned | O responsável pelo ticket muda. |
ticket.closed | Um ticket de suporte é resolvido. |
Os endpoints de templates ajudam equipes a publicar templates de WhatsApp com compliance. Valide categoria, envie para a Meta, inspecione resultados do provedor e explique erros conhecidos.
Swagger/OpenAPI gerado está disponível em ambientes não produtivos para validação interna. Produção não expõe /openapi.json de forma intencional. Use esta referência, o catálogo REST e o guia rápido como superfície pública.
Sua integração está pronta quando estes pontos estão certos.