Skip to main content
GET
/
v3
/
runs
/
{run_id}
/
curl -X GET 'https://api.anyformat.ai/v3/runs/069dcc2c-e14c-7606-8000-2ee4fb17b4f9/' \
  -H 'Authorization: Bearer YOUR_API_KEY'
import requests
import time

run_id = "069dcc2c-e14c-7606-8000-2ee4fb17b4f9"
url = f"https://api.anyformat.ai/v3/runs/{run_id}/"
headers = {"Authorization": "Bearer YOUR_API_KEY"}

for _ in range(100):
    run = requests.get(url, headers=headers).json()
    if run["status"] == "processed":
        print(run["results"])
        break
    if run["status"] in ("error", "cancelled"):
        print(f"Terminal: {run['status']}")
        break
    time.sleep(3)
interface RunDetail {
  id: string;
  workflow_id: string;
  document_packet_id: string;
  status: 'queued' | 'in_progress' | 'processed' | 'error' | 'cancelled';
  created_at: string | null;
  updated_at: string | null;
  results: Record<string, unknown> | null;
}

const runId = '069dcc2c-e14c-7606-8000-2ee4fb17b4f9';
const response = await fetch(`https://api.anyformat.ai/v3/runs/${runId}/`, {
  headers: { 'Authorization': 'Bearer YOUR_API_KEY' },
});

if (!response.ok) {
  throw new Error(`API error: ${response.status}`);
}

const run: RunDetail = await response.json();
if (run.status === 'processed') {
  console.log(run.results);
}
{
  "id": "069dcc2c-e14c-7606-8000-2ee4fb17b4f9",
  "workflow_id": "0686bb97-8c30-70f0-8000-97669e000eb8",
  "document_packet_id": "069dcc2c-e14c-7606-8000-2ee4fb17b4e1",
  "status": "processed",
  "created_at": "2026-07-01T12:00:00.000Z",
  "updated_at": "2026-07-01T12:02:30.000Z",
  "results": {
    "parse": {
      "markdown": "<DOCUMENT id=\"1\" page=\"1\">..."
    },
    "classifications": [],
    "splits": [],
    "extractions": [
      {
        "split_name": null,
        "partition": null,
        "fields": {
          "invoice_number": {
            "value": "INV-001",
            "value_override": null,
            "verification_status": "not_verified",
            "confidence": 95.0,
            "evidence": [{ "text": "Invoice #INV-001", "page_number": 1 }]
          }
        }
      }
    ]
  }
}
{
  "id": "069dcc2c-e14c-7606-8000-2ee4fb17b4f9",
  "workflow_id": "0686bb97-8c30-70f0-8000-97669e000eb8",
  "document_packet_id": "069dcc2c-e14c-7606-8000-2ee4fb17b4e1",
  "status": "in_progress",
  "created_at": "2026-07-01T12:00:00.000Z",
  "updated_at": "2026-07-01T12:00:15.000Z",
  "results": null
}
{
  "id": "069dcc2c-e14c-7606-8000-2ee4fb17b4f9",
  "workflow_id": "0686bb97-8c30-70f0-8000-97669e000eb8",
  "document_packet_id": "069dcc2c-e14c-7606-8000-2ee4fb17b4e1",
  "status": "error",
  "created_at": "2026-07-01T12:00:00.000Z",
  "updated_at": "2026-07-01T12:02:30.000Z",
  "results": null
}
Rate limit tier: general (600 req/min) — see Rate limits. Fetches a run by its run_id. The path is flat — no workflow id, no /results/ sub-path — and the response carries the run’s status and its results envelope in one shot, so a completed run is a single round-trip.

Status model

The endpoint always returns 200 while the run exists — there are no precondition errors while the extraction is in flight.
statusMeaningresults
queuedWaiting for a processing slotnull
in_progressExtraction actively runningnull
processedSuccess — terminalthe results envelope
errorExtraction failed — terminalnull
cancelledExtraction cancelled — terminalnull
Poll until status is terminal; a run that ended in error or cancelled stays readable with results: null. For production integrations, prefer webhooks over polling. The results envelope matches the shape documented at Response formats — the same parse, classifications, splits, and extractions sections v2 returned from its /results/ route. It’s the read path that changed, not the envelope. Unknown ids — including runs belonging to another organization — return 404.
curl -X GET 'https://api.anyformat.ai/v3/runs/069dcc2c-e14c-7606-8000-2ee4fb17b4f9/' \
  -H 'Authorization: Bearer YOUR_API_KEY'
import requests
import time

run_id = "069dcc2c-e14c-7606-8000-2ee4fb17b4f9"
url = f"https://api.anyformat.ai/v3/runs/{run_id}/"
headers = {"Authorization": "Bearer YOUR_API_KEY"}

for _ in range(100):
    run = requests.get(url, headers=headers).json()
    if run["status"] == "processed":
        print(run["results"])
        break
    if run["status"] in ("error", "cancelled"):
        print(f"Terminal: {run['status']}")
        break
    time.sleep(3)
interface RunDetail {
  id: string;
  workflow_id: string;
  document_packet_id: string;
  status: 'queued' | 'in_progress' | 'processed' | 'error' | 'cancelled';
  created_at: string | null;
  updated_at: string | null;
  results: Record<string, unknown> | null;
}

const runId = '069dcc2c-e14c-7606-8000-2ee4fb17b4f9';
const response = await fetch(`https://api.anyformat.ai/v3/runs/${runId}/`, {
  headers: { 'Authorization': 'Bearer YOUR_API_KEY' },
});

if (!response.ok) {
  throw new Error(`API error: ${response.status}`);
}

const run: RunDetail = await response.json();
if (run.status === 'processed') {
  console.log(run.results);
}
{
  "id": "069dcc2c-e14c-7606-8000-2ee4fb17b4f9",
  "workflow_id": "0686bb97-8c30-70f0-8000-97669e000eb8",
  "document_packet_id": "069dcc2c-e14c-7606-8000-2ee4fb17b4e1",
  "status": "processed",
  "created_at": "2026-07-01T12:00:00.000Z",
  "updated_at": "2026-07-01T12:02:30.000Z",
  "results": {
    "parse": {
      "markdown": "<DOCUMENT id=\"1\" page=\"1\">..."
    },
    "classifications": [],
    "splits": [],
    "extractions": [
      {
        "split_name": null,
        "partition": null,
        "fields": {
          "invoice_number": {
            "value": "INV-001",
            "value_override": null,
            "verification_status": "not_verified",
            "confidence": 95.0,
            "evidence": [{ "text": "Invoice #INV-001", "page_number": 1 }]
          }
        }
      }
    ]
  }
}
{
  "id": "069dcc2c-e14c-7606-8000-2ee4fb17b4f9",
  "workflow_id": "0686bb97-8c30-70f0-8000-97669e000eb8",
  "document_packet_id": "069dcc2c-e14c-7606-8000-2ee4fb17b4e1",
  "status": "in_progress",
  "created_at": "2026-07-01T12:00:00.000Z",
  "updated_at": "2026-07-01T12:00:15.000Z",
  "results": null
}
{
  "id": "069dcc2c-e14c-7606-8000-2ee4fb17b4f9",
  "workflow_id": "0686bb97-8c30-70f0-8000-97669e000eb8",
  "document_packet_id": "069dcc2c-e14c-7606-8000-2ee4fb17b4e1",
  "status": "error",
  "created_at": "2026-07-01T12:00:00.000Z",
  "updated_at": "2026-07-01T12:02:30.000Z",
  "results": null
}

Authorizations

Authorization
string
header
required

API key issued from app.anyformat.ai/api-key. Send as Authorization: Bearer <key>.

Path Parameters

run_id
string
required

Response

Successful Response

Flat single-run read: lifecycle status plus results inline.

results is null until the run reaches processed, then carries the same results envelope GET /v2/workflows/{id}/files/{id}/results/ returns — no separate results endpoint, no 412 while in flight.

id
string
required

Unique identifier of the run (hyphenated UUID).

Example:

"069dcc2c-e14c-7606-8000-2ee4fb17b4f9"

workflow_id
string
required

The workflow this run executed (hyphenated UUID).

Example:

"0686bb97-8c30-70f0-8000-97669e000eb8"

document_packet_id
string
required

The document packet the run executed on (hyphenated UUID).

Example:

"069dcc2c-e14c-7606-8000-2ee4fb17b4e1"

status
enum<string>
required

Execution status. Non-terminal: queued, in_progress. Terminal: processed (success), error, cancelled.

Available options:
queued,
in_progress,
processed,
error,
cancelled
Example:

"processed"

created_at
string<date-time> | null

Timestamp when the run was triggered (ISO 8601).

updated_at
string<date-time> | null

Timestamp of the run's last status change (ISO 8601).

results
ResultsResponse · object | null

Extraction results envelope; null until status is processed. Same shape as the v2 results endpoint.