---
title: "List all trainings"
method: GET
path: "/training"
---

# List all trainings

`GET /training`

List all training scenarios for your organization. Trainings teach the AI how to respond to specific situations. Supports filtering by search term, type, and draft status, with pagination.

## Query parameters

- `search` string
- `type` 'BEHAVIORAL' | 'SCENARIO_SPECIFIC'
- `is_draft` 'true' | 'false'
- `limit` integer
- `offset` integer
- `sort_by` 'created_at' | 'handoff_count'
- `metadata` string

## Response `200`

Default Response

- ListTrainingsOutput
  - `items` TrainingPublicResponseDto[], required
    - `id` string, required — Unique training ID
    - `title` string, required — The scenario title or trigger phrase (last published version)
    - `content` string, required — The instruction body — how the AI should respond (last published version)
    - `draft_title` string, nullable, required — Draft title being edited (null if no draft exists). Use draft_title ?? title.
    - `draft_content` string, nullable, required — Draft body being edited (null if no draft exists). Use draft_content ?? content.
    - `type` 'BEHAVIORAL' | 'SCENARIO_SPECIFIC', required — BEHAVIORAL (always active) or SCENARIO_SPECIFIC (semantic match)
    - `is_draft` boolean, required — Draft trainings are saved but not used by the AI
    - `directory_id` string, nullable, required — Directory this training belongs to
    - `restricted_to_channels` SessionChannel[], required — Channels this applies to (empty = all)
    - `restricted_to_segments` string[], required — Contact segments this applies to (empty = all)
    - `current_version` number, nullable, required — Active published version number (null if unpublished draft)
    - `metadata` object, nullable, required — Arbitrary key-value metadata for external integrations
    - `published_at` string, date-time, nullable, required — When the current version was published
    - `start_time` string, date-time, nullable, required — Active window start (UTC). Null = no start bound.
    - `end_time` string, date-time, nullable, required — Active window end (UTC). Null = no end bound.
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
  - `total` number, required — Total matching items before pagination
  - `limit` number, required
  - `offset` number, required
  - `has_more` boolean, required — Whether more items exist beyond this page

## Other responses

- `500` — Internal Server Error

---

[API](https://skmtc.net/open/apis/opencx-api.md) · [All operations](https://skmtc.net/open/apis/opencx-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/open/opencx-api/versions/57b06b52302d/schema)
