Webhook Ingestion
Secure multi-tenant webhooks for production call lifecycle, media, transcript, tools, handoffs and errors.
Endpoint
POST /api/v1/webhooks/ingest
Authorization: Bearer zh_live_demo
X-Ziply-Timestamp: <unix_sec>
X-Ziply-Signature: <hex hmac-sha256 of "${ts}.${rawBody}">
X-Ziply-Provider: vapi|livekit|twilio|...
Body: { type, version, idempotency_key, occurred_at, call, data }Demo credentials
API key: zh_live_demo
Secret: whsec_demo_ziplyhuman_change_me
Security controls
Tenant auth: Bearer API key maps to organization + webhook secret.
HMAC:signature = HMAC-SHA256(secret, timestamp + "." + rawBody).
Replay protection: timestamps outside ±5 minutes rejected.
Idempotency: same key returns prior result without reprocessing.
Schema: type versioning (2026-01-01); invalid payloads → dead letter.
Rate limit: 120 req/min per tenant (demo in-memory).
Retries: clients should retry 429/5xx with backoff; DLQ holds permanent failures.
Event catalog (20 types)
call.startedIngest call started from production agents
call.ringingIngest call ringing from production agents
call.answeredIngest call answered from production agents
call.endedIngest call ended from production agents
call.transferredIngest call transferred from production agents
call.failedIngest call failed from production agents
audio.stream.startedIngest audio stream started from production agents
audio.stream.stoppedIngest audio stream stopped from production agents
transcript.partialIngest transcript partial from production agents
transcript.finalIngest transcript final from production agents
agent.response.generatedIngest agent response generated from production agents
tool.call.startedIngest tool call started from production agents
tool.call.completedIngest tool call completed from production agents
tool.call.failedIngest tool call failed from production agents
workflow.state.changedIngest workflow state changed from production agents
handoff.initiatedIngest handoff initiated from production agents
handoff.completedIngest handoff completed from production agents
recording.availableIngest recording available from production agents
customer.feedback.submittedIngest customer feedback submitted from production agents
provider.error.receivedIngest provider error received from production agents
Delivery audit log
| Time | Event | Status | HTTP | ms |
|---|
No deliveries yet — send a signed test event.
Dead-letter queue
DLQ empty.