GET /v1/validation/{validation_id}

Retrieve a validation using the validation_id returned by POST. GET is retrieval only.

curl --silent --show-error --fail-with-body \
  "https://api.ivorleaf.io/v1/validation/$IVORLEAF_VALIDATION_ID" \
  --header "X-API-Key: $IVORLEAF_API_KEY" \
  --header "X-Ivorleaf-Client: api"

Read the state

All three stored states return HTTP 200:

statusMeaning
in_progressExecution remains active; the body contains validation_id and status.
completedThe full stored ValidationResponse, including determination and relationships.
failedA sanitized ValidationExecutionFailure with validation_id, status, and error.code / error.message.

For example, a stored failure has this shape:

{"validation_id":"VAL-EXAMPLE","status":"failed","error":{"code":"upstream_timeout","message":"Validation exceeded its execution budget."}}

A successful HTTP retrieval does not guarantee successful execution. See Errors for failure codes. A stored failure remains terminal on retrieval.

Organization scope

Only an active, allowed credential in the owning organization can retrieve the result. Another allowed credential in that same organization can retrieve it. Missing and cross-organization IDs return 404.

GET performs 0 new inference, 0 new Source Inspection, 0 VUs, and 0 usage-event writes. It never reruns the validation. Normal authentication and request-rate controls still apply.

For active results, respect Retry-After before a later GET. See Async Execution and the current API Reference.