Create Binding
Create a delivery binding that routes domain signals through a deliverable resolver and serializer to a destination. Includes field mapping and retry policy configuration.
Create a binding that wires a domain event to a destination. The compatibility triangle is validated on creation: the signal event type must be compatible with the deliverable resolver, the serializer must support the deliverable shape, and the connector must support the serializer format.
The typical workflow is: query the catalog endpoints top-down (signals, then deliverables, then serializers, then connectors), pick compatible values, and create the binding. A single event can fan out to multiple bindings — create separate bindings for each destination or output format you need.
The response returns the binding with is_active: true and last_status: null. The field_map controls payload projection: use static to inject fixed values, drop to remove fields, and key-value pairs to rename fields. The delivery_policy defaults to 7 attempts with exponential backoff over ~10 hours if omitted.
After creation, the binding is immediately live — the next matching signal will trigger delivery. Use POST /v1/delivery/bindings/:id/preview (internal) to dry-run the resolve-project-serialize pipeline. Monitor delivery health via the history and DLQ endpoints.
/v1/delivery/catalog/*) to discover valid combinations before creating a binding. The catalog lists all available signals, deliverables, serializers, and connectors with their compatibility constraints./v1/delivery/bindingsResponse
Response fields (201 Created)
Response (201 Created)
{
"id": "d4e5f6a7-b8c9-0123-defa-345678901234",
"name": "Notify on extraction complete",
"signal_filter": { "event_type": "document.extraction.completed" },
"deliverable_type": "document_capture",
"destination_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"serializer_format": "json",
"serializer_config": {},
"field_map": { "vendor": "$.vendor_name", "total": "$.amount" },
"delivery_policy": { "max_attempts": 5, "backoff_schedule": [1000, 5000, 30000] },
"is_active": true,
"last_status": null,
"created_at": "2024-09-10T09:00:00.000Z",
"updated_at": "2024-09-10T09:00:00.000Z"
}Errors
Error responses