postSessionWebhook is configured, Pathors POSTs JSON to your URL whenever a subscribed lifecycle event fires. You choose which events trigger the webhook (multi-select); each event carries its own payload, identified by the top-level event field.
Event types
Configure
The webhook lives on the agent. Configure it via the agent settings UI, or programmatically via update-agent:string
required
HTTPS endpoint that accepts POST + JSON.
array
Optional. Custom HTTP headers sent to your endpoint along with
Content-Type: application/json. Each entry is { "key": string, "value": string }. Use cases are up to you — e.g. an Authorization token to verify the source, or a routing identifier on a shared receiver.array of string
Which lifecycle events fire the webhook. Defaults to
["session.ended"] when omitted, which preserves the pre-2026 single-event behavior.Subscribing to multiple events
Subscribing to more than one event delivers one POST per event per session. Branch on the top-levelevent field — see the implementation example on the payloads page.
Delivery semantics
session.finalizedfires at most once per session — a CAS guard on the underlying database row dedupes it even under concurrent writes. The other events (session.ended,call.ended,recording.ready) are emitted per processing step and may be re-delivered (for example on internal retries); if you need exactly-once handling, dedupe on(sessionId, event).- No automatic retry. A non-2xx response from your endpoint is logged to
webhook_logsbut Pathors does not resend. If you need at-least-once, ingest from a queue you control. - Respond fast. Pathors waits for your response synchronously; long-running work belongs in a background job on your side.
- Backwards compatibility. Configurations that pre-date the multi-event support omit
eventsand behave asevents: ["session.ended"]. Existing receivers do not need to change.
Next steps
Webhook payloads
Full payload schemas + receiver example.
Update agent
Set
postSessionWebhook programmatically.