Execute Resolution
Start a pending resolution run with POST /v1/resolutions/{id}/execute: returns immediately with processing status; poll the run to detect completion or failure.
Execute a resolution run to start applying the frozen normalization configuration to the source run's extracted values. The call flips the run to processing and returns immediately — all pipeline work happens asynchronously in the background. Poll [GET /v1/resolutions/{id}](get-resolution) to track the status, and read the [results](get-resolution-results) once it reaches completed.
Execution is guarded by the run's lifecycle state: a pending run starts normally, and a failed run can be re-executed in place — the same run row transitions back to processing and tries again, which is the intended retry path after a transient failure. A run that is already processing is rejected with 400 ("Resolution run is already processing"), as is a run that already completed ("Resolution run is already completed"); to resolve the same job again after completion, create a new resolution run.
Under the hood the executor works in batches, flushing each batch of resolved documents to the result rows before starting the next. This is why partial results are readable mid-run, and why a retried run does not start from zero: documents whose result row already completed are skipped on re-execution, so retrying after an infrastructure failure only redoes the unfinished remainder.
Deterministic rules (reference lookups, computes, format constraints) complete in seconds even for large runs. Policies that invoke LLM-assisted matching for values no deterministic rule could settle take longer — typically 1-5 minutes depending on how many values need model calls. Budget polling intervals accordingly rather than tight-looping.
/v1/resolutions/{id}/executePath parameters
curl
curl -s -X POST https://api.talonic.com/v1/resolutions/a1b2c3d4-e5f6-7890-abcd-ef1234567890/execute \
-H "Authorization: Bearer tlnc_your_api_key"Response
Response fields
Response
{
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"source_run_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"status": "processing",
"policy_snapshot": {
"name": "Resolution 42Docs Jul 14",
"sanity_check": false,
"fields": [
{
"field_name": "country",
"display_name": "Country",
"data_type": "string",
"reference_table": "iso-countries",
"modifiers": null,
"format": null,
"suppress_output": false,
"output_name": null
}
]
},
"dialect_snapshot": null,
"error_message": null,
"created_at": "2026-07-14T10:32:00.000Z",
"updated_at": "2026-07-14T10:33:05.000Z",
"links": {
"self": "/v1/resolutions/a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"results": "/v1/resolutions/a1b2c3d4-e5f6-7890-abcd-ef1234567890/results",
"source_run": "/v1/jobs/b2c3d4e5-f6a7-8901-bcde-f12345678901"
}
}Errors
Error responses