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

> List job-level events for the specified job, cursor-paginated, in chronological order

<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 cursor-paginated list of job-level (lifecycle) events for the specified job, with the
newest event first.

<Note>
  To get a list of all job events, including those from workers, use the [List Job
  Logs](/api-reference/fine-tuning/list-job-logs) endpoint.
</Note>

## Request

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

<ParamField query="level" type="string">
  Filter by severity. Permitted values include `INFO`, `WARN`, `ERROR`, `SUCCESS`, `FAILED`.
</ParamField>

<ParamField query="q" type="string">
  Case-insensitive search matched against the event message and type.
</ParamField>

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

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

<ParamField query="limit" type="integer">
  The maximum number of events to return (1–100).
</ParamField>

## Response

Returns a page of events.

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

<ResponseField name="data" type="array">
  The contents of the page of events emitted for the job.

  <Expandable title="FineTuningEvent">
    <ResponseField name="id" type="string" required>
      The event ID. Pass as the `after` cursor to page.
    </ResponseField>

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

    <ResponseField name="level" type="string" required>
      Severity. One of `INFO`, `WARN`, `ERROR`, `SUCCESS`, `FAILED`.
    </ResponseField>

    <ResponseField name="type" type="string" required>
      The event type.
    </ResponseField>

    <ResponseField name="index" type="integer">
      Worker index that emitted the event; `null` for job-level events.
    </ResponseField>

    <ResponseField name="message" type="string">
      Human-readable message, if any.
    </ResponseField>
  </Expandable>
</ResponseField>

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

<RequestExample>
  ```bash cURL theme={"system"}
  curl "https://api.u1.archetypeai.app/v0.6/fine_tuning/jobs/your-job-id/events?level=INFO&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}/events",
      headers={"Authorization": f"Bearer {api_key}"},
      params={"level": "INFO", "limit": 20}
  )

  print(response.json())
  ```

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

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

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

<ResponseExample>
  ```json 200 - Job-level events theme={"system"}
  {
    "object": "list",
    "data": [
      {
        "id": "your-event-id",
        "created_at": 1765201323,
        "level": "INFO",
        "type": "job.started",
        "index": null,
        "message": "Training started."
      }
    ],
    "has_more": false
  }
  ```

  ```json 400 - Invalid cursor theme={"system"}
  {
    "code": "invalid_cursor",
    "message": "Invalid cursor",
    "suggestion": null,
    "error_uid": "err-xxxxxxxx"
  }
  ```

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