This page documents the canonical HTTP contract for this endpoint.
The list, detail, and cancellation endpoints require an authenticated principal, supplied by a user JWT/session or developer API key, and are scoped to that principal's organization and active runtime. Developer API keys additionally need jobs:read for list/get and columns:run for cancellation. A hard-user-scoped run is visible only to its owning user.
List runs
GET /api/operation-runs accepts optional resource_type, resource_id, executor_kind, executor_id, status, and limit. Resource filters are combined into one resource-reference match; executor filters are combined into one executor-reference match. The status value is split on commas, trimmed, and lowercased, then compared exactly; unsupported values simply match no rows. Results are ordered by most recently updated first. The response has operation_runs and compatibility alias operationRuns, plus count and limit.
Get a run
GET /api/operation-runs/{operation_run_id} returns the public operation-run view. It includes canonical operation identity, status, lifecycle revision, progress, steps, resource and executor references, result/error, and timestamps. Use the operation run ID returned by the initiating API. Native executor IDs such as job_id are separate identifiers and are not substitutes.
Request cancellation
POST /api/operation-runs/{operation_run_id}/cancel has no request body. It returns the refreshed public run view. A terminal run is returned unchanged. Cancellation can return 409 when the run lacks an exact runtime cancellation scope, belongs to a different active runtime, is committing, or cannot be cancelled. Cancellation is a request; inspect the returned lifecycle state to determine the outcome.
The response examples show a subset of the public run fields.
Statuses
Canonical statuses are queued, running, waiting, completed, partial, error, failed, cancelled, and missing. Treat the returned status as authoritative; the native executor may have a separate status vocabulary.
Authentication failures return 401; list returns empty arrays if no runs match. Detail and cancellation return 404 if the requested run is not visible. Missing organization context can return 400. Developer API key scope failures and active-runtime scope violations can return 403.
Most Research Table run requests return a canonical operationRunId. Bounded column planning can first return an arplan_ pre-admission ID instead. Poll that value with GET /api/operation-runs/planning/{planning_run_id}; when its status becomes resolved, poll the nested canonical operation_run.operation_run_id with the regular detail endpoint. Bulk-job endpoints remain useful for native executor diagnostics when a run references a bulk job.
Query parameters
resource_type· optionalstring
Match a resource reference type.
resource_id· optionalstring
Match a resource reference ID.
executor_kind· optionalstring
Match an executor reference kind.
executor_id· optionalstring
Match an executor reference ID.
status· optionalstring
One or more comma-separated status strings; values are trimmed and lowercased, with no enum validation.
limit· optionalinteger
Maximum rows, 1–100; default 20.
| Name | Type | Description |
|---|---|---|
| resource_type | string | Match a resource reference type. |
| resource_id | string | Match a resource reference ID. |
| executor_kind | string | Match an executor reference kind. |
| executor_id | string | Match an executor reference ID. |
| status | string | One or more comma-separated status strings; values are trimmed and lowercased, with no enum validation. |
| limit | integer | Maximum rows, 1–100; default 20. |
Errors
| Status | Meaning |
|---|---|
| 400 | Missing organization context. |
| 401 | Authentication required. |
| 403 | Developer API key lacks the endpoint scope. |
| 422 | Invalid query type or limit outside 1–100. |
