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.
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.
{
"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
}
}
}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.createdX-Silah-DeliveryUnique ID for this delivery attemptX-Silah-Attempt1 for the first try; retries after 1 min, 5 min, 30 min, 2 h and 6 h count upX-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);
}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 APIGET /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}/webhooksShip your first integration this afternoon.
Free forever for small teams. Upgrade when you're ready. No credit card, no sales call.