Trigger Delivery
Request delivery for a structuring run with POST /v1/structuring/delivery/:runId and learn how approved records reach destinations via delivery bindings.
POST /v1/structuring/delivery/{runId} requests delivery for an entire structuring run after review. The runId is the job run id (the same id GET /v1/jobs lists). The call verifies the run belongs to your organization and acknowledges the trigger; what actually ships is governed by the delivery pipeline's approved-records rule — only results with an approved decision are exported, so unreviewed and rejected records never leave the platform through this channel.
Structuring delivery is signal-driven under the hood. When a run completes, the platform emits a run.structuring.completed signal carrying the run and schema ids; delivery bindings subscribed to that signal resolve the run.structuring.outcome deliverable — the run's approved result rows — and send them to your configured destinations (webhook, S3, SFTP, email). A run with zero approved rows still fires the binding with an empty payload, so your consumer learns "the run produced nothing approved" instead of silence.
/v1/structuring/delivery/{runId}Path parameters
curl
curl -s -X POST https://api.talonic.com/v1/structuring/delivery/1a0c681d-ea20-4bb4-8892-01a6d7f834da \
-H "Authorization: Bearer tlnc_your_api_key"Response
Response fields
Response
{
"status": "triggered",
"run_id": "1a0c681d-ea20-4bb4-8892-01a6d7f834da",
"message": "Structuring delivery triggered."
}Errors
Error responses
The call is safe to repeat: it performs no destructive work of its own — repeating it re-acknowledges the same run rather than duplicating records, and duplicate suppression on the wire is the delivery pipeline's responsibility, not the caller's. The typical end-to-end sequence is: run completes → gates auto-approve the clean rows → reviewers action the [pending queue](pending-approvals) via [approve/reject](approve-reject-result) → trigger delivery for the run → the approved set lands at your destinations.
If triggered delivery never arrives, debug in this order: confirm the run id is the job run (not a pipeline or result id); confirm at least one result carries an approved decision — a fully-unreviewed run delivers an empty set; then check your delivery bindings and destination health under the [Delivery API](list-delivery-destinations), where per-delivery attempts and failures are visible in the delivery history.