External Decider and Tasks
Route every compliance model step to your own agent: switch the decider, claim tasks, heartbeat, release, and submit answers checked like the platform's own.
Every compliance decision has a decider: platform (the default) means the platform's model makes it, and external means the workspace's own agent does. With external, each model step is offered as a task instead of calling the platform's model: reading a framework's requirements (extraction), deriving its rules (rules), judging documents (evaluation) and comparing a batch (discrepancy). The rows waiting for an answer read status: "waiting" (a framework's rules_status for rules). Their inputs are frozen when the task is created, so an evaluation task carries the rule snapshot it must answer.
An agent works a task in four calls. It claims the task and receives the platform's own system instructions, the input and the JSON Schema of the answer. While it works it sends heartbeats to keep the lease. It then submits an answer, or releases the task if it cannot. A claim has a lease (15 minutes by default, renewed by each heartbeat); a claimed task whose lease has run out reads available again. Each claim raises the task's execution_epoch, and heartbeat, release and submit must send the epoch the claim returned.
The platform holds an external answer to the standard of its own. A submit is checked for its shape, that every rule is answered once with a known verdict and a reason, that each quote appears verbatim in the text the package gave, and that a quote of a group names its document. A failed check returns 422 naming what is wrong and stores nothing. A passing answer is stored by the same code as the model's answer, with the agent's label recorded as decided_by.
The Decider Setting
/v1/compliance/settings/v1/compliance/settingsBody and response
platform cancels the open tasks. Their evaluations and comparisons end with an error that says to run them again, while a framework reading or rules task keeps the framework's earlier reading or rules.Task Routes
/v1/compliance/tasksQuery parameters
open100Task fields
/v1/compliance/tasks/{taskId}/v1/compliance/tasks/{taskId}/claimResponse fields
The package is built before the claim is taken, so a task whose document is still being read stays free and the call returns 409; claim it again a little later. A claim on a task that another agent holds, or that is already submitted or cancelled, also returns 409.
/v1/compliance/tasks/{taskId}/heartbeatBody fields
/v1/compliance/tasks/{taskId}/release/v1/compliance/tasks/{taskId}/submitBody fields
The result by task kind
cURL: Work one task
# 1. See what waits
curl "https://api.talonic.com/v1/compliance/tasks" \
-H "Authorization: Bearer $TALONIC_API_KEY"
# 2. Claim it and read the package (instructions, input, output_schema)
curl -X POST "https://api.talonic.com/v1/compliance/tasks/$TASK_ID/claim" \
-H "Authorization: Bearer $TALONIC_API_KEY"
# 3. Submit an answer matching output_schema
curl -X POST "https://api.talonic.com/v1/compliance/tasks/$TASK_ID/submit" \
-H "Authorization: Bearer $TALONIC_API_KEY" \
-H "Content-Type: application/json" \
-d '{"execution_epoch": 1, "answer": { "...": "per output_schema" }}'