Build on top of Engage
A REST API and outbound webhooks for integrating Engage with your own backend. Generate a key from Settings → Developer to get started.
Authentication
Every request needs an API key in the Authorization header. Keys are scoped to read and/or write — generate one from the Developer tab in Settings.
curl https://engage.infynaxlabs.com/api/public-api/v1/contacts \
-H "Authorization: Bearer eng_live_..."The key is shown exactly once at creation — store it securely, it cannot be retrieved again.
Endpoints
Base URL: https://engage.infynaxlabs.com/api/public-api/v1
| Method | Path | Scope |
|---|---|---|
| GET | /contacts | read |
| POST | /contacts | write |
| GET | /conversations | read |
| POST | /conversations/:id/messages | write |
| GET | /campaigns | read |
| GET | /campaigns/:id | read |
List endpoints accept page and limit query params and return a standard pagination object alongside data.
Webhooks
Subscribe to message.received, conversation.resolved, and campaign.completed from the Developer tab. Each delivery is a signed POST to your URL:
POST <your-url>
Content-Type: application/json
X-Engage-Signature: sha256=<hmac>
X-Engage-Event: message.received
{
"event": "message.received",
"data": { "conversationId": "...", "contactPhone": "+91...", "content": "Hi!" },
"timestamp": "2026-06-28T10:00:00.000Z"
}Verify the signature with the secret shown when you created the webhook:
const crypto = require('crypto');
function isValid(rawBody, signatureHeader, secret) {
const expected = 'sha256=' + crypto.createHmac('sha256', secret)
.update(rawBody)
.digest('hex');
return crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(signatureHeader));
}A subscription that fails 20 deliveries in a row is automatically disabled — re-enable it from Settings once your endpoint is healthy again.
Zapier & Make
There's no published Zapier/Make app yet, but every webhook event above already works with both platforms' generic webhook actions today:
- Zapier: create a Zap with the "Webhooks by Zapier" trigger → "Catch Hook", copy the generated URL, then add it as a webhook in Engage's Developer settings for the event you want.
- Make: add a "Webhooks" module → "Custom webhook" as your scenario's trigger, copy its URL, and register it the same way.
Engage will POST the event payload to that URL the moment it happens — no polling needed on either side. For two-way integrations (e.g. Zapier creating a contact in Engage), use the REST API above with a write-scoped key in a Zapier/Make HTTP action.