Skip to content
Developers

Build on every conversation. In real time.

Signed webhooks for messages and conversations, a predictable JSON API, and automations that call your endpoints exactly when you need them.

Real-time webhooks

Messages and conversation changes, delivered as they happen.

Signed deliveries

HMAC-SHA256 over the raw body, with a secret you can rotate.

Consistent JSON

One envelope for every event, typed errors, cursor pagination.

Scoped by workspace

Endpoints, secrets and keys belong to one workspace.

Events

One envelope. Every event.

Subscribe an HTTPS endpoint to the events you need from Integrations in your workspace. Respond with any 2xx within five seconds.

  • message.createdA contact, teammate, Silah AI or an automation sent a message; notes carry private: true.
  • conversation.createdA new conversation started on any channel.
  • conversation.updatedStatus, assignee or AI setting changed.
  • conversation.resolvedA conversation was marked resolved.
  • automation.triggeredAn automation ran its Notify webhook action.
  • pingSent by the Test button so you can check your endpoint. Test samples of every event carry "test": true.
POST https://your-app.com/silah
{
  "id": "evt_8fK2qWm0aZ7rT1xYc3VbN9dE",
  "type": "message.created",
  "created_at": "2026-10-17T09:41:07Z",
  "workspace_id": "0192a6e1-…",
  "data": {
    "conversation": {
      "id": "0192a6e4-…",
      "status": "open",
      "channel": "whatsapp",
      "contact": { "name": "Nadia Rahman", "phone": "+880…" },
      "assignee": null,
      "ai_enabled": true
    },
    "message": {
      "sender": "contact",
      "body": "Do you ship to Chattogram?",
      "private": false
    }
  }
}
Security

Trust every delivery. Verify the signature.

Each request carries these headers. Compute the HMAC of the raw body with your signing secret and compare in constant time.

  • X-Silah-EventThe event type, e.g. message.created
  • X-Silah-DeliveryUnique ID for this delivery attempt
  • X-Silah-Attempt1 for the first try; retries after 1 min, 5 min, 30 min, 2 h and 6 h count up
  • X-Silah-Signaturesha256=<hex HMAC-SHA256 of the raw body with your signing secret>
import crypto from "node:crypto";

// rawBody: the exact bytes Silah sent (not re-serialised JSON)
export function verify(rawBody, header, secret) {
  const expected = "sha256=" + crypto.createHmac("sha256", secret).update(rawBody).digest("hex");
  const a = Buffer.from(expected);
  const b = Buffer.from(header ?? "");
  return a.length === b.length && crypto.timingSafeEqual(a, b);
}
REST API

Conversations, contacts, automations. All in JSON.

The same API the Silah dashboard uses: list and update conversations, send messages, manage contacts, automations and webhooks. Authenticate with a workspace API key from Integrations, scoped read-only or read-write.

Talk to us about the API
GET   /api/v1/workspaces/{id}/conversations
PATCH /api/v1/workspaces/{id}/conversations/{cid}
POST  /api/v1/workspaces/{id}/conversations/{cid}/messages
GET   /api/v1/workspaces/{id}/contacts
GET   /api/v1/workspaces/{id}/automations
POST  /api/v1/workspaces/{id}/webhooks

Ship your first integration this afternoon.

Free forever for small teams. Upgrade when you're ready. No credit card, no sales call.