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

> ## Agent Instructions
> Use https://docs.fastino.ai/llms.txt to discover and navigate pages. Use https://docs.fastino.ai/llms-full.txt when you need the complete documentation corpus. Use https://docs.fastino.ai/openapi.json as the source of truth for customer-facing routes. For GLiDE decision inference, call POST https://api.fastino.ai/v1/systemone with model fastino/GLiDE. Do not infer undocumented routes. Read API keys from FASTINO_API_KEY and never embed credentials in code, logs, or reports.

# List training runs

> Call GET /v1/training/jobs to list the training runs you drive step by step with the Tinker-compatible SDK, newest first, with limit and offset pagination.

`GET /v1/training/jobs`

Returns the interactive training jobs visible to the authenticated caller, newest first. An interactive job is a training run that you create and drive step by step with the Tinker-compatible SDK; its job ID is the SDK's run ID. Set the SDK's `base_url` to `https://api.fastino.ai/v1/training/compat/tinker` and pass your Fastino API key through the SDK's credential command: `TINKER_CREDENTIAL_CMD='printf %s "$FASTINO_API_KEY"'`. Tinker `tml-` keys are rejected with `401`. You see your own runs and your team's runs in projects you can access.

## Request

<ParamField header="X-API-Key" type="string" required>
  Your Fastino API key.
</ParamField>

<ParamField query="type" type="string">
  Job type. Use `interactive` (the default here). Config jobs are listed by [List training jobs](/api-reference/training-jobs/list) for now, so `config` returns `400`.
</ParamField>

<ParamField query="limit" type="integer" default="20">
  Page size. Values are clamped to `1` through `1000`.
</ParamField>

<ParamField query="offset" type="integer" default="0">
  Number of runs to skip.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl "https://api.fastino.ai/v1/training/jobs?type=interactive&limit=20&offset=0" \
    -H "X-API-Key: $FASTINO_API_KEY"
  ```
</RequestExample>

## Response

<ResponseField name="success" type="boolean">
  Whether the request succeeded.
</ResponseField>

<ResponseField name="training_jobs" type="object[]">
  Training runs for this page. Each run has the fields described in [Get a training run](/api-reference/training-runs/get).
</ResponseField>

<ResponseField name="count" type="integer">
  Number of runs in this page.
</ResponseField>

<ResponseField name="total" type="integer">
  Total number of visible runs before pagination.
</ResponseField>

<ResponseField name="has_more" type="boolean">
  Whether another page exists after this one.
</ResponseField>

<ResponseExample>
  ```json Response theme={null}
  {
    "success": true,
    "training_jobs": [
      {
        "type": "interactive",
        "training_run_id": "YOUR_SESSION_ID:train:0",
        "base_model": "Qwen/Qwen3.6-35B-A3B",
        "model_owner": "YOUR_TEAM_ID",
        "is_lora": true,
        "corrupted": false,
        "lora_rank": 32,
        "last_request_time": "2026-10-09T18:42:10Z",
        "last_checkpoint": null,
        "last_sampler_checkpoint": {
          "checkpoint_id": "sampler_weights/step-100",
          "checkpoint_type": "sampler",
          "time": "2026-10-09T18:40:02Z",
          "tinker_path": "tinker://YOUR_SESSION_ID:train:0/sampler_weights/step-100",
          "size_bytes": 167772160,
          "public": false,
          "user_metadata": null,
          "expires_at": null
        },
        "user_metadata": {"experiment": "baseline"}
      }
    ],
    "count": 1,
    "total": 1,
    "has_more": false
  }
  ```
</ResponseExample>

Invalid pagination values return `422`. A missing or invalid API key returns `401`. If training runs are not enabled for your team, the route returns `404`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.