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

# List Training Jobs

> Get a paginated list of training jobs.

Get a paginated list of training jobs.

### Query parameters

<ParamField query="page" type="integer">
  Page number
</ParamField>

<ParamField query="page_size" type="integer">
  Items per page
</ParamField>

<ParamField query="status" type="string,null">
  Filter by status
</ParamField>

### Response

`TrainingJobListResponse-Input`

<ResponseField name="request_id" type="string,null">
  Request tracking ID
</ResponseField>

<ResponseField name="timestamp" type="string (date-time)">
  Response timestamp
</ResponseField>

<ResponseField name="total" type="integer" required>
  Total number of items
</ResponseField>

<ResponseField name="page" type="integer">
  Current page number
</ResponseField>

<ResponseField name="page_size" type="integer">
  Items per page
</ResponseField>

<ResponseField name="has_next" type="boolean">
  Whether there are more pages
</ResponseField>

<ResponseField name="has_prev" type="boolean">
  Whether there are previous pages
</ResponseField>

<ResponseField name="items" type="TrainingJobDetail[]">
  List of training jobs

  <Expandable title="TrainingJobDetail">
    <ResponseField name="training_id" type="string" required>
      Training job identifier
    </ResponseField>

    <ResponseField name="status" type="string" required>
      Current status
    </ResponseField>

    <ResponseField name="created_at" type="string (date-time)" required>
      Creation timestamp
    </ResponseField>

    <ResponseField name="started_at" type="string (date-time),null">
      Start timestamp
    </ResponseField>

    <ResponseField name="completed_at" type="string (date-time),null">
      Completion timestamp
    </ResponseField>

    <ResponseField name="progress" type="number">
      Progress percentage
    </ResponseField>

    <ResponseField name="current_episode" type="integer">
      Current training episode
    </ResponseField>

    <ResponseField name="total_episodes" type="integer">
      Total episodes
    </ResponseField>

    <ResponseField name="metrics" type="object">
      Training metrics
    </ResponseField>

    <ResponseField name="error" type="string,null">
      Error message if failed
    </ResponseField>

    <ResponseField name="config" type="object">
      Training configuration
    </ResponseField>
  </Expandable>
</ResponseField>

### Status codes

| Code  | Meaning                 |
| ----- | ----------------------- |
| `200` | List of training jobs   |
| `401` | Authentication required |
| `422` | Validation Error        |
| `429` | Rate limit exceeded     |

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url 'http://localhost:8000/training' \
    --header 'Authorization: Bearer YOUR_API_KEY'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "timestamp": "2026-08-31T14:22:05Z",
    "total": 102,
    "page": 1,
    "page_size": 20,
    "has_next": false,
    "has_prev": false,
    "items": [
      {
        "training_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
        "status": "pending",
        "created_at": "2026-08-31T14:22:05Z",
        "started_at": "2026-08-31T14:22:05Z",
        "completed_at": "2026-08-31T14:22:05Z",
        "progress": 0,
        "current_episode": 0,
        "total_episodes": 0,
        "metrics": {},
        "error": "string",
        "config": {}
      }
    ]
  }
  ```
</ResponseExample>
