Webhooks
Hyphen sends outbound webhooks when workflow, approval, document, and generation events occur.
Base URL used below: https://apisvr.tryhyphen.com
Registration API
Register per-org webhook targets with /webhooks:
curl -X POST https://apisvr.tryhyphen.com/webhooks \
-H "X-Org-Id: acme-corp" \
-H "Content-Type: application/json" \
-d '{
"event": "document.uploaded",
"url": "https://example.com/hyphen/webhooks",
"secret": "whsec_abc123",
"filter": {
"tags": ["invoices"],
"content_type": "text/csv"
},
"auto_payload": {
"source": "hyphen"
}
}'
Supported registration endpoints:
POST /webhooksGET /webhooksGET /webhooks/:idPATCH /webhooks/:idDELETE /webhooks/:id
Current validation for registrations allows these events:
document.uploadeddocument.version_createddocument.deleteddocument.expired
Note: runtime emits additional events too (listed below). If you need registration support for all emitted events, expand the event allow-list in the server validation schema.
Payload Envelope
Every delivery uses this envelope:
{
"event": "document.uploaded",
"timestamp": "2026-03-03T10:30:00.000Z",
"payload": {
"document_id": "doc_a1b2c3d4e5f6",
"name": "Q4 Transactions",
"content_type": "text/csv"
}
}
Field meanings:
event: event nametimestamp: ISO timestamp at send timepayload: event-specific payload data
Signature Verification
If a secret is configured on the webhook target, Hyphen sends:
X-Hyphen-Signature: sha256=<hex-hmac>
HMAC algorithm: SHA-256 over the raw JSON body.
Runtime Event Names
Observed emitted events in current runtime:
workflow_run_startedworkflow_run_completedworkflow_run_failedpbot_approval_requestedpbot_approval_decideddocument.uploadeddocument.deletedexternal_form_createdexternal_form_updatedexternal_form_deletedexternal_form_submittedworkflow_creation_statusllm_generation_statusllm_key_missing
Retry Policy
Delivery behavior:
- Success: any
2xx - Retryable HTTP:
429,408,5xx - Non-retryable HTTP: all other
4xx - Backoff: exponential (starting at 1 second)
- Max attempts: 5
- For
429,Retry-Afteris honored when larger than current delay
If all targets fail for an event, sender raises an error for that event path; webhook delivery still remains non-blocking for most request handlers.
Legacy Compatibility
Hyphen also supports a legacy org config key webhook_url and will deliver to it if set.
Use new /webhooks registrations for event-level routing, filtering, activation state, and signing.