Delivery contract
WhenclientWebhookUrl is set, Offload sends JSON POST requests to that URL for terminal or paused states.
Headers:
Common envelope
Event types
case.completed
Sent when a case reaches COMPLETED.
case.failed
Sent when the workflow cannot complete.
case.input_needed
Sent when Offload needs a decision from your app before continuing.
Fields in data
| Field | Present when |
|---|---|
caseId | Always |
clientReferenceId | When you provided one at creation time |
status | Always |
channel | Always |
attemptCount | Always |
result | Usually on case.completed |
resultStatus | On terminal states and some workflow outcomes |
failureReason | On case.failed |
inputRequest | On case.input_needed |
inputRequestId | On case.input_needed |
inputRequestStatus | On case.input_needed |
inputRequestedAt | On case.input_needed |
metadata | When metadata was attached to the case |
Handling advice
- Deduplicate by
event_id. - Expect retries from the platform layer and keep handlers idempotent.
- Persist
case.input_neededpayloads so you retain the activeinputRequestId.