List Gates
List review gates with GET /v1/structuring/gates: per-schema gates with embedded rules that decide whether each structuring result auto-approves or queues.
A review gate sits between structuring and delivery: after a result's validation checks run, every active gate for the result's schema evaluates its rules, and each gate records an approval decision — auto_approved when every active rule passes, pending when any rule fails. GET /v1/structuring/gates lists all active gates for your organization with their active rules embedded, so one call shows the full quality policy in force.
Gates are scoped to one schema via user_schema_id and evaluated in creation order. Rule evaluation is strict AND: a single failing rule flags the result. A schema with no gates at all records no decision — results carry approval status none and flow onward unguarded. A gate whose rule list is empty passes vacuously and auto-approves every result, which is a common misconfiguration to check for when records seem to skip review.
Use this listing as the audit view of your review policy: filter by schema_id to see exactly which conditions a document type must clear before delivery, and read each gate's embedded rules without a second fetch. The links.rules URL on each gate is the management route for attaching new rules; the links.self URL is the detail route that also accepts PUT and DELETE.
/v1/structuring/gatesQuery parameters
curl
curl -s "https://api.talonic.com/v1/structuring/gates?schema_id=36ef3a00-a4dc-4e49-af6a-66ae20f9b58a" \
-H "Authorization: Bearer tlnc_your_api_key"Response
Response fields
Response
{
"data": [
{
"id": "4014c518-7f75-425c-bf67-3052464b95a0",
"name": "Finance approval gate",
"user_schema_id": "36ef3a00-a4dc-4e49-af6a-66ae20f9b58a",
"destination_id": null,
"on_approve": "export",
"on_flag": "queue",
"auto_approve_after_hours": 24,
"is_active": true,
"rules": [
{
"id": "285aae61-8378-49e2-926a-ac54e4e54853",
"name": "Row confidence at least 0.85",
"type": "min_confidence",
"config": { "min": 0.85 },
"sort_order": 0
},
{
"id": "c79acb3e-3f43-419c-abcc-72f25ff7a058",
"name": "No failed checks",
"type": "validation_pass",
"config": { "scope": "all", "max_failures": 0 },
"sort_order": 1
}
],
"created_at": "2026-08-29T11:35:09.040Z",
"updated_at": "2026-08-29T11:35:09.040Z",
"links": {
"self": "/v1/structuring/gates/4014c518-7f75-425c-bf67-3052464b95a0",
"rules": "/v1/structuring/gates/4014c518-7f75-425c-bf67-3052464b95a0/rules"
}
}
]
}Errors
Error responses
When a gate flags a result, the decision is recorded with status pending together with per-rule outcomes (rule_results) and a summary of the check outcomes that fed it (validation_summary: total/passed/failed/skipped/errors). When every rule passes, the decision lands as auto_approved with decision_source: "auto". Multiple gates on the same schema each record their own independent decision for every result, which is why [approve/reject](approve-reject-result) calls require a gate_id.