Crie uma key, liste conversas, envie uma resposta, registre um webhook. Sem install de SDK. SDK é açúcar.
Abra Configurações → API Keys, clique em Nova key, dê um label, escolha escopos. Copie uma vez. Keys que começam com ir_live_ enviam mensagens reais. Keys que começam com ir_test_ nunca enviam.
# .env
IR_API_KEY=ir_live_3f2a...Todo endpoint de lista usa cursor pagination. Passe ?cursor= pra próxima página. Máximo 100 por chamada.
curl https://api.instantreply.co/v1/conversations \
-H "Authorization: Bearer $IR_API_KEY"POST uma mensagem pra uma conversa. Com uma test key a chamada retorna um 201 falso e nunca toca a Meta. Com uma live key a plataforma cuida de entrega, retries e compliance.
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." }'A resposta inclui um signing secret (whsec_...). Verifique X-InstantReply-Signature em todo payload com HMAC_SHA256(secret, timestamp + "." + rawBody). A entrega e pelo menos uma vez com tres tentativas; processe X-InstantReply-Delivery de forma idempotente e veja GET /v1/webhooks/:id/deliveries.
curl -X POST https://api.instantreply.co/v1/webhooks \
-H "Authorization: Bearer $IR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://yourapp.com/webhooks/ir",
"events": [
"message.received",
"message.sent",
"conversation.created",
"conversation.closed",
"conversation.assigned",
"contact.updated",
"template.status_update",
"message.delivery_failed"
]
}'