> ## Documentation Index
> Fetch the complete documentation index at: https://docs.archetypeai.app/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Start with /introduction/getting-started. Use the Direct Query API (POST /query) with the Newton Fusion model (text, image, and video reasoning) or the Newton Omega encoder (time-series embeddings). ATAI_API_ENDPOINT must include the version path: /v0.5 for most APIs, /v0.6 for the Fine-Tuning Service. Pages whose descriptions are marked (Archived) document the legacy Lens runtime — do not use them for new projects.

# List Job Progress

> Retrieve paginated progress entries for a specific job

<Callout icon="clock" color="#3064E3" iconType="solid">
  Requires [version 1.1.0](/release-notes/1.1.x#v1-1-0) or later of the Archetype platform.
</Callout>

## Overview

This endpoint returns a paginated list of progress entries reported during job execution. Progress entries provide real-time metrics and status updates as the job processes inputs.

## Request

<ParamField path="id" type="string" required>
  The unique job identifier
</ParamField>

<ParamField query="kind" type="string">
  Filter progress entries by kind
</ParamField>

<ParamField query="input_id" type="string">
  Filter progress entries associated with a specific input
</ParamField>

<ParamField query="offset" type="integer">
  Number of items to skip for pagination (default: 0)
</ParamField>

<ParamField query="limit" type="integer">
  Maximum number of items to return per page
</ParamField>

## Response

<ResponseField name="job_id" type="string">
  The job identifier
</ResponseField>

<ResponseField name="total" type="integer">
  Total number of progress entries matching the filter criteria
</ResponseField>

<ResponseField name="offset" type="integer">
  Current pagination offset
</ResponseField>

<ResponseField name="limit" type="integer">
  Maximum number of items returned
</ResponseField>

<ResponseField name="entries" type="array">
  Array of progress entry objects, each containing:

  * `id` — Unique progress entry identifier
  * `kind` — Type of progress entry
  * `step` — Step number within the processing sequence
  * `message` — Optional human-readable progress message
  * `metrics` — Metrics data (e.g., percentage complete, items processed)
  * `payload` — Additional progress-specific data
  * `input_id` — Associated input ID (if applicable)
  * `index` — Index within the input (if applicable)
  * `created_at` — Progress entry timestamp
</ResponseField>

<RequestExample>
  ```bash cURL theme={"system"}
  curl "https://api.u1.archetypeai.app/v0.5/batch/jobs/job_2abc3def4ghi5jkl6mno7pqr/progress?limit=20" \
    -H "Authorization: Bearer $ATAI_API_KEY"
  ```

  ```python Python theme={"system"}
  import requests
  import os

  api_key = os.environ.get("ATAI_API_KEY")
  job_id = "job_2abc3def4ghi5jkl6mno7pqr"

  response = requests.get(
      f"https://api.u1.archetypeai.app/v0.5/batch/jobs/{job_id}/progress",
      headers={"Authorization": f"Bearer {api_key}"},
      params={"limit": 20}
  )

  data = response.json()
  print(f"Total progress entries: {data['total']}")
  for entry in data["entries"]:
      print(f"  Step {entry['step']}: {entry.get('message', '')} — {entry['metrics']}")
  ```

  ```javascript JavaScript theme={"system"}
  const jobId = 'job_2abc3def4ghi5jkl6mno7pqr';
  const params = new URLSearchParams({ limit: '20' });

  const response = await fetch(`https://api.u1.archetypeai.app/v0.5/batch/jobs/${jobId}/progress?${params}`, {
    headers: {
      'Authorization': `Bearer ${process.env.ATAI_API_KEY}`
    }
  });

  const data = await response.json();
  console.log(`Total progress entries: ${data.total}`);
  data.entries.forEach(entry => {
    console.log(`  Step ${entry.step}: ${entry.message || ''}`);
  });
  ```
</RequestExample>

<ResponseExample>
  ```json 200 - Success theme={"system"}
  {
    "job_id": "job_2abc3def4ghi5jkl6mno7pqr",
    "total": 3,
    "offset": 0,
    "limit": 20,
    "entries": [
      {
        "id": 501,
        "kind": "inference",
        "step": 1,
        "message": "Processing input 1 of 10",
        "metrics": {
          "percent_complete": 10,
          "items_processed": 1,
          "items_total": 10
        },
        "payload": {},
        "input_id": "inp_abc123def456",
        "index": 0,
        "created_at": "2026-04-14T10:03:00Z"
      },
      {
        "id": 502,
        "kind": "inference",
        "step": 2,
        "message": "Processing input 5 of 10",
        "metrics": {
          "percent_complete": 50,
          "items_processed": 5,
          "items_total": 10
        },
        "payload": {},
        "input_id": null,
        "index": null,
        "created_at": "2026-04-14T10:06:00Z"
      }
    ]
  }
  ```

  ```json 404 - Not Found theme={"system"}
  {
    "code": "NOT_FOUND",
    "message": "Job not found",
    "error_uid": "err_abc123"
  }
  ```

  ```json 401 - Unauthorized theme={"system"}
  {
    "detail": "Invalid access with key: api_key_not_found"
  }
  ```
</ResponseExample>
