Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.chamelio.ai/llms.txt

Use this file to discover all available pages before exploring further.

Chamelio webhooks let you subscribe to platform events and receive HTTP POST notifications to your endpoint as they happen — no polling required.

How Webhooks Work

  1. You register a webhook endpoint URL in the Chamelio web application
  2. When a subscribed event occurs, Chamelio sends an HTTP POST request to your URL with the event payload
  3. Your server processes the payload and responds with a 2xx status code to acknowledge receipt

Registering a Webhook

Configure webhook endpoints in Settings → Integrations → Webhooks in the Chamelio web application. You can:
  • Register multiple endpoint URLs
  • Subscribe each endpoint to specific event types
  • View delivery logs and retry failed deliveries

Authentication & Verification

Each webhook request includes a signature header so you can verify it came from Chamelio:
X-Chamelio-Signature: sha256=<hmac_hex_digest>
The signature is an HMAC-SHA256 digest of the raw request body, computed using your webhook secret. Verify it on your server before processing the payload:
import hmac
import hashlib

def verify_signature(payload_body: bytes, secret: str, signature_header: str) -> bool:
    expected = "sha256=" + hmac.new(
        secret.encode(),
        payload_body,
        hashlib.sha256
    ).hexdigest()
    return hmac.compare_digest(expected, signature_header)
Always verify the signature before processing a webhook payload. Skipping this step exposes your endpoint to spoofed requests.

Retry Policy

If your endpoint does not respond with a 2xx status within 10 seconds, Chamelio will retry delivery with exponential backoff:
AttemptDelay
1st retry1 minute
2nd retry5 minutes
3rd retry30 minutes
4th retry2 hours
After 4 failed retries the event is marked as undelivered. You can manually replay events from the webhook delivery log in the Chamelio web application.

Common Payload Fields

All webhook events share a common envelope:
{
  "event": "core.document.uploaded",
  "event_id": "evt_01HXYZ1234567890",
  "organization_id": "org_abc123",
  "timestamp": "2025-06-01T14:32:00Z",
  "data": { ... }
}
FieldTypeDescription
eventstringEvent type identifier (e.g., core.document.uploaded)
event_idstringUnique identifier for this event delivery. Use this to deduplicate retries
organization_idstringID of the organization in which the event occurred
timestampstringISO 8601 UTC timestamp of when the event was generated
dataobjectEvent-specific payload. See individual event pages for the schema

Available Events

Core — Documents

EventDescription
core.document.uploadedA new document was uploaded to Core
core.document.upload_with_issuesA document was uploaded but processing encountered issues
core.document.upload_completedA document upload finished processing successfully
core.document.updatedA document’s attributes or metadata were updated
core.document.deletedA document was deleted from Core

Flows — Workflows

EventDescription
flows.workflow.new_versionA new version of a workflow was published
flows.workflow.deletedA workflow was deleted

Flows — Tasks

EventDescription
flows.tasks.createdA new workflow task was created
flows.tasks.step_changeA task moved to a different step
flows.tasks.completedA task was completed
flows.tasks.canceledA task was canceled
flows.tasks.commentedA comment was added to a task