> ## 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.

# List Job Checkpoints

> Get a cursor-paginated list of checkpoints produced by the job

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

## Overview

Returns a list of checkpoints produced by the job. The list is cursor-paginated, and is in reverse
chronological order (newest-first).

## Request

<ParamField path="id" type="string" required>
  The fine-tuning job ID of the job for which to list checkpoints. This is a TypeID-encoded
  identifier with the `FineTuningJobId` prefix.
</ParamField>

<ParamField query="after" type="string">
  Forward cursor: return items older than the item with this ID. Do not supply both this value
  and a value for `before`.
</ParamField>

<ParamField query="before" type="string">
  Backward cursor: return items newer than the item with this ID. Mutually exclusive with `after`.
</ParamField>

<ParamField query="limit" type="integer">
  The maximum number of items to return, between `1` and `100`.
</ParamField>

## Response

Returns a page of checkpoints.

<ResponseField name="object" type="string">
  The object type of a list response. Always `list`.
</ResponseField>

<ResponseField name="data" type="array">
  The checkpoints produced by the training job.

  <Expandable title="FineTuningCheckpoint">
    <ResponseField name="id" type="string" required>
      Checkpoint identifier.
    </ResponseField>

    <ResponseField name="created_at" type="integer" required>
      The Unix timestamp (in seconds) at which the checkpoint was produced.
    </ResponseField>

    <ResponseField name="step" type="integer" required>
      The training step at which the checkpoint was produced.
    </ResponseField>

    <ResponseField name="metrics" type="object" required>
      The structured metrics captured with the checkpoint.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="has_more" type="boolean">
  `true` if more checkpoints exist beyond this page.
</ResponseField>

<RequestExample>
  ```bash cURL theme={"system"}
  curl "https://api.u1.archetypeai.app/v0.6/fine_tuning/jobs/your-job-id/checkpoints?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 = "your-job-id"

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

  print(response.json())
  ```

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

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

  const data = await response.json();
  console.log(data);
  ```
</RequestExample>

<ResponseExample>
  ```json 200 - Checkpoints theme={"system"}
  {
    "object": "list",
    "data": [
      {
        "id": "ckp_...",
        "created_at": 1765201323,
        "step": 1000,
        "metrics": {
          "loss": 0.123
        }
      }
    ],
    "has_more": false
  }
  ```

  ```json 404 - Not found theme={"system"}
  {
    "code": "not_found",
    "message": "Not found",
    "suggestion": null,
    "error_uid": "err-xxxxxxxx"
  }
  ```
</ResponseExample>
