API Reference

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

MethodPathScope
GET/contactsread
POST/contactswrite
GET/conversationsread
POST/conversations/:id/messageswrite
GET/campaignsread
GET/campaigns/:idread

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:

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