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

# Get a training

> Return the training metadata and saved configuration, including applied defaults and dataset selections.



## OpenAPI

````yaml /api-reference/openapi.json get /trainings/{trainingId}
openapi: 3.1.0
info:
  description: >-
    Manage projects, datasets, labeling pipelines, and model training. **Beta:**
    endpoints, request and response shapes, and error contracts can change
    without notice or a backward-compatibility promise.
  title: Toloka Platform API
  version: 2.0.0
servers:
  - url: https://platform.toloka.ai/api/v2-beta
security:
  - apiKeyAuth: []
  - scopedTokenAuth: []
tags:
  - description: The authenticated API key owner.
    name: Account
  - description: A project is the container for pipelines, datasets, and files.
    name: Projects
  - description: Rows and typed fields. Field schemas are immutable once created.
    name: Datasets
  - description: Append rows to a dataset from a file.
    name: Dataset uploads
  - description: Read a dataset out as a file.
    name: Dataset exports
  - description: A pipeline is a graph of nodes that processes each dataset item.
    name: Pipelines
  - description: The nodes, connections, fields, and version of a pipeline graph.
    name: Pipeline graph
  - description: Execute a pipeline over a dataset and inspect each item.
    name: Runs
  - description: Per-node checks that a pipeline must pass before deployment.
    name: Checks
  - description: Named credentials available to pipeline code.
    name: Secrets
  - description: Project files available to pipeline code and labeling interfaces.
    name: Files
  - description: >-
      Global, read-only catalog of the models a synthetic generation node can
      use, with their budget bounds.
    name: Generation models
  - description: >-
      Global, read-only catalog of the expert audience: the values a node
      `audience` filter can use.
    name: Audience
  - description: >-
      Project lists of experts a node can take its workforce from with
      `audienceMode: service`. Available only to teams with the audience service
      enabled.
    name: Expert lists
  - description: >-
      Experts banned in a project: they cannot be invited and are removed from
      the work they are in. Available only to teams with expert bans enabled.
    name: Expert ban list
  - description: Global, read-only base model catalog.
    name: Base models
  - description: Project-owned mutable model-training drafts.
    name: Trainings
  - description: Project-owned Models and immutable Model Versions.
    name: Models
  - name: Batch inference
paths:
  /trainings/{trainingId}:
    get:
      tags:
        - Trainings
      summary: Get a training
      description: >-
        Return the training metadata and saved configuration, including applied
        defaults and dataset selections.
      operationId: getTraining
      parameters:
        - in: path
          name: trainingId
          required: true
          schema:
            $ref: '#/components/schemas/TrainingId'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Training'
          description: Training draft
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
        '404':
          description: Training not found
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
        '429':
          description: Rate limit exceeded
          headers:
            RateLimit-Limit:
              $ref: '#/components/headers/RateLimit-Limit'
            RateLimit-Policy:
              $ref: '#/components/headers/RateLimit-Policy'
            RateLimit-Remaining:
              $ref: '#/components/headers/RateLimit-Remaining'
            RateLimit-Reset:
              $ref: '#/components/headers/RateLimit-Reset'
            X-Request-Id:
              $ref: '#/components/headers/X-Request-Id'
      x-codeSamples:
        - label: TypeScript SDK
          lang: typescript
          source: |
            import { createClient } from "@toloka-platform/sdk";

            const client = createClient({
              baseUrl: "https://platform.toloka.ai",
              apiKey: process.env.TOLOKA_API_KEY!,
            });

            const training = await client.trainings.get({
              trainingId: "trg.019a0000-0000-7000-8000-000000000001"
            });
            console.log(training);
components:
  schemas:
    TrainingId:
      description: Training draft ID with prefix `trg.`.
      pattern: >-
        ^trg\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
      type: string
    Training:
      description: >-
        A project-owned mutable Training draft. The output Model is bound on the
        first Training Run.
      properties:
        archivedAt:
          anyOf:
            - format: date-time
              pattern: >-
                ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
              type: string
            - type: 'null'
          description: >-
            Time the training was archived, as an ISO 8601 timestamp, or null
            while it is active.
        configuration:
          $ref: '#/components/schemas/TrainingConfiguration'
        createdAt:
          description: Time the training was created, as an ISO 8601 timestamp.
          format: date-time
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
          type: string
        id:
          $ref: '#/components/schemas/TrainingId'
        modelId:
          anyOf:
            - $ref: '#/components/schemas/ModelId'
            - type: 'null'
          description: >-
            Output model ID with prefix `mdl.`, or null before the first
            training run.
        name:
          description: Name of the training draft.
          type: string
        projectId:
          $ref: '#/components/schemas/ProjectId'
        updatedAt:
          description: Time the training was last updated, as an ISO 8601 timestamp.
          format: date-time
          pattern: >-
            ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
          type: string
      required:
        - id
        - projectId
        - modelId
        - name
        - configuration
        - archivedAt
        - createdAt
        - updatedAt
      type: object
    TrainingConfiguration:
      description: A normalized method-specific Training draft.
      oneOf:
        - $ref: '#/components/schemas/SftTrainingConfiguration'
        - $ref: '#/components/schemas/GistingTrainingConfiguration'
    ModelId:
      description: Model ID with prefix `mdl.`.
      pattern: >-
        ^mdl\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
      type: string
    ProjectId:
      description: Project ID with prefix `pp.`.
      pattern: >-
        ^pp\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
      type: string
    SftTrainingConfiguration:
      additionalProperties: false
      description: A normalized supervised fine-tuning draft using LoRA.
      properties:
        batchSize:
          description: >-
            Sequences per optimizer step across all GPUs: 8, 16, 32, or 64. The
            default is 8.
          enum:
            - 8
            - 16
            - 32
            - 64
          type: number
        epochs:
          description: >-
            Passes over the training selection, 1 through 5. The cost estimate
            grows linearly with epochs.
          maximum: 5
          minimum: 1
          type: integer
        learningRate:
          description: >-
            Optimizer learning rate, 0.00001 through 0.001. The default is
            0.00015.
          maximum: 0.001
          minimum: 0.00001
          type: number
        loraRank:
          description: >-
            LoRA adapter rank: 8, 16, or 32. Defaults to 16. Alpha is twice the
            rank.
          enum:
            - 8
            - 16
            - 32
          type: number
        maxSequenceLength:
          description: >-
            Token budget per training example, prompt and target together: 64
            through 16384. The cost estimate is blocked when the longest example
            exceeds it. Defaults: 12288 for SFT, 3072 for gisting.
          maximum: 16384
          minimum: 64
          type: integer
        method:
          const: sft
          description: >-
            Training method; `sft` learns a LoRA adapter from prompt and target
            examples.
          type: string
        sliceId:
          description: >-
            The dataset slice to train on. It must freeze a split field.
            Training uses its train parts and validation uses its validate parts
            at the slice cutoff. Rows marked as test by any split field are
            excluded, except validation rows in a part with both validate and
            test roles in the selected split field.
          pattern: >-
            ^dsl\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
          type: string
        source:
          $ref: '#/components/schemas/TrainingModelSource'
        splitFieldId:
          description: >-
            The split field to use, identified by field ID. Required when the
            slice freezes more than one split field.
          pattern: >-
            ^df\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
          type: string
        trainParts:
          description: >-
            The train parts to learn on. Defaults to every part with the train
            role.
          items:
            maxLength: 64
            pattern: ^[A-Za-z0-9_]+(?:[.-][A-Za-z0-9_]+)*$
            type: string
          maxItems: 10
          minItems: 1
          type: array
        training:
          $ref: '#/components/schemas/TrainingDatasetSelection'
        validation:
          $ref: '#/components/schemas/TrainingDatasetSelection'
      required:
        - method
        - source
        - loraRank
        - epochs
        - learningRate
        - batchSize
        - maxSequenceLength
        - training
      type: object
    GistingTrainingConfiguration:
      additionalProperties: false
      description: A normalized prompt-gisting Training draft.
      properties:
        batchSize:
          description: >-
            Sequences per optimizer step across all GPUs: 8, 16, 32, or 64. The
            default is 8.
          enum:
            - 8
            - 16
            - 32
            - 64
          type: number
        epochs:
          description: >-
            Passes over the training selection, 1 through 5. The cost estimate
            grows linearly with epochs.
          maximum: 5
          minimum: 1
          type: integer
        gistTokens:
          description: >-
            Number of learned tokens that replace the prompt: 8, 32, 64, or a
            fraction of the prompt length: "1/4", "1/8", "1/16", or "1/32".
            Fractions are rounded up to a whole token and limited to 8 through
            256 tokens. Defaults to "1/8".
          enum:
            - 8
            - 32
            - 64
            - 1/4
            - 1/8
            - 1/16
            - 1/32
        learningRate:
          description: >-
            Optimizer learning rate for the soft tokens, 0.001 through 0.3. The
            default is 0.03.
          maximum: 0.3
          minimum: 0.001
          type: number
        maxSequenceLength:
          description: >-
            Token budget per training example, prompt and target together: 64
            through 16384. The cost estimate is blocked when the longest example
            exceeds it. Defaults: 12288 for SFT, 3072 for gisting.
          maximum: 16384
          minimum: 64
          type: integer
        method:
          const: gisting
          description: >-
            Training method; `gisting` learns tokens that replace a reusable
            prompt.
          type: string
        promptFileId:
          description: >-
            Project file ID with prefix `ppf.` containing the finalized UTF-8
            prompt to compress.
          pattern: >-
            ^ppf\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
          type: string
        sliceId:
          description: >-
            The dataset slice to train on. It must freeze a split field.
            Training uses its train parts and validation uses its validate parts
            at the slice cutoff. Rows marked as test by any split field are
            excluded, except validation rows in a part with both validate and
            test roles in the selected split field.
          pattern: >-
            ^dsl\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
          type: string
        source:
          $ref: '#/components/schemas/TrainingModelSource'
        splitFieldId:
          description: >-
            The split field to use, identified by field ID. Required when the
            slice freezes more than one split field.
          pattern: >-
            ^df\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
          type: string
        trainParts:
          description: >-
            The train parts to learn on. Defaults to every part with the train
            role.
          items:
            maxLength: 64
            pattern: ^[A-Za-z0-9_]+(?:[.-][A-Za-z0-9_]+)*$
            type: string
          maxItems: 10
          minItems: 1
          type: array
        training:
          $ref: '#/components/schemas/TrainingDatasetSelection'
        validation:
          $ref: '#/components/schemas/TrainingDatasetSelection'
      required:
        - method
        - source
        - promptFileId
        - gistTokens
        - epochs
        - learningRate
        - batchSize
        - maxSequenceLength
        - training
      type: object
    TrainingModelSource:
      description: The exact Base Model or Model Version used as the source.
      oneOf:
        - additionalProperties: false
          properties:
            baseModelId:
              description: Catalog base model identifier.
              enum:
                - qwen3-4b
                - qwen3-8b
                - qwen3-32b
                - qwen3-235b
              type: string
            type:
              const: base_model
              description: >-
                Training source: `base_model` uses a catalog model;
                `model_version` uses a published project model version.
              type: string
          required:
            - type
            - baseModelId
          type: object
        - additionalProperties: false
          properties:
            modelVersionId:
              description: Source model version ID with prefix `mdv.`.
              pattern: >-
                ^mdv\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
              type: string
            type:
              const: model_version
              description: >-
                Training source: `base_model` uses a catalog model;
                `model_version` uses a published project model version.
              type: string
          required:
            - type
            - modelVersionId
          type: object
    TrainingDatasetSelection:
      additionalProperties: false
      description: A Dataset and normalized filter selected for one Training input purpose.
      properties:
        datasetId:
          description: Dataset ID with prefix `ds.` containing the selected examples.
          pattern: >-
            ^ds\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
          type: string
        itemFilter:
          $ref: '#/components/schemas/TrainingDatasetItemFilter'
          description: >-
            Conditions selecting dataset rows; omitted conditions do not
            restrict the selection.
      required:
        - datasetId
        - itemFilter
      type: object
    TrainingDatasetItemFilter:
      additionalProperties: false
      description: A normalized Dataset item filter stored with a Training draft.
      properties:
        excludeParts:
          $ref: '#/components/schemas/DatasetSplitPartExclusions'
        fieldSources:
          $ref: '#/components/schemas/DatasetFieldSourceConditions'
        fieldValues:
          $ref: '#/components/schemas/DatasetFieldValueConditions'
        missingRevisionFields:
          description: >-
            Field IDs with prefix `df.` that must have no revision on a selected
            row; defaults to an empty array.
          items:
            pattern: >-
              ^df\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
            type: string
          type: array
        parts:
          $ref: '#/components/schemas/DatasetSplitPartInclusion'
        slice:
          $ref: '#/components/schemas/DatasetSliceSelection'
      required:
        - fieldValues
        - fieldSources
        - missingRevisionFields
      type: object
    DatasetSplitPartExclusions:
      description: Split-part selections to exclude; omit when no parts should be excluded.
      items:
        additionalProperties: false
        description: Split field and selected part names.
        properties:
          fieldId:
            description: Split field ID with prefix `df.`.
            pattern: >-
              ^df\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
            type: string
          names:
            description: Names of the split parts to select.
            items:
              maxLength: 64
              pattern: ^[A-Za-z0-9_]+(?:[.-][A-Za-z0-9_]+)*$
              type: string
            maxItems: 10
            minItems: 1
            type: array
        required:
          - fieldId
          - names
        type: object
      maxItems: 500
      type: array
    DatasetFieldSourceConditions:
      description: >-
        Field-author conditions that selected rows must satisfy; defaults to no
        conditions.
      items:
        additionalProperties: false
        description: Required authors for a field.
        properties:
          fieldId:
            description: Dataset field ID with prefix `df.`.
            pattern: >-
              ^df\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
            type: string
          sources:
            description: Revision authors to match for this field.
            items:
              $ref: '#/components/schemas/FieldRevisionSource'
            minItems: 1
            type: array
        required:
          - fieldId
          - sources
        type: object
      type: array
    DatasetFieldValueConditions:
      description: >-
        Field-value conditions that selected rows must satisfy; defaults to no
        conditions.
      items:
        additionalProperties: false
        description: Condition applied to a field value.
        properties:
          fieldId:
            description: Dataset field ID with prefix `df.` to compare.
            pattern: >-
              ^df\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
            type: string
          jsonPath:
            description: JSONPath locating the value within the field.
            minLength: 1
            type: string
          latestOnly:
            default: true
            description: >-
              Whether to test only the latest revision from the allowed authors;
              false tests any revision, and the default is true.
            type: boolean
          operator:
            description: >-
              Text comparison: `text_eq` for equality or `text_neq` for
              inequality.
            enum:
              - text_eq
              - text_neq
            type: string
          sources:
            default: []
            description: Allowed revision authors; an empty array allows any author.
            items:
              $ref: '#/components/schemas/FieldRevisionSource'
            type: array
          value:
            description: Scalar value compared as text; null is treated as an empty string.
            type:
              - string
              - number
              - boolean
              - 'null'
        required:
          - jsonPath
          - operator
          - value
          - fieldId
        type: object
      type: array
    DatasetSplitPartInclusion:
      additionalProperties: false
      description: Split parts to include; omit to include every part.
      properties:
        fieldId:
          description: Split field ID with prefix `df.`.
          pattern: >-
            ^df\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
          type: string
        names:
          description: Names of the split parts to select.
          items:
            maxLength: 64
            pattern: ^[A-Za-z0-9_]+(?:[.-][A-Za-z0-9_]+)*$
            type: string
          maxItems: 10
          minItems: 1
          type: array
      required:
        - fieldId
        - names
      type: object
    DatasetSliceSelection:
      additionalProperties: false
      description: >-
        Slice whose frozen rows and fields to read; omit to use live dataset
        rows.
      properties:
        sliceId:
          description: Dataset slice ID with prefix `dsl.`.
          pattern: >-
            ^dsl\.[0-9a-f]{8}-[0-9a-f]{4}-[7][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
          type: string
      required:
        - sliceId
      type: object
    FieldRevisionSource:
      description: Source that wrote a field revision.
      oneOf:
        - additionalProperties: false
          description: Source that wrote a field revision.
          properties:
            type:
              const: user
              description: >-
                Revision author: `user` for a user action or `system` for a
                platform operation.
              type: string
            userId:
              description: Identifier of the user who wrote the revision.
              minLength: 1
              type: string
          required:
            - type
            - userId
          type: object
        - additionalProperties: false
          description: Source that wrote a field revision.
          properties:
            source:
              description: Identifier of the platform operation that wrote the revision.
              minLength: 1
              type: string
            type:
              const: system
              description: >-
                Revision author: `user` for a user action or `system` for a
                platform operation.
              type: string
          required:
            - type
            - source
          type: object
  headers:
    RateLimit-Limit:
      description: The maximum number of requests allowed in the current window.
      schema:
        type: integer
    RateLimit-Policy:
      description: The rate limit policy (e.g., "60;w=60").
      schema:
        type: string
    RateLimit-Remaining:
      description: The number of requests remaining in the current window.
      schema:
        type: integer
    RateLimit-Reset:
      description: The number of seconds until the current window resets.
      schema:
        type: integer
    X-Request-Id:
      description: >-
        The request id: the X-Request-Id you sent when it is 1-128 characters of
        letters, digits, ".", "_" or "-", otherwise a generated UUID. Present on
        every response, including errors; quote it when reporting a problem.
      schema:
        type: string
  securitySchemes:
    apiKeyAuth:
      description: >-
        Enter `ApiKey <your-api-key>` in Authorization, including the `ApiKey `
        prefix. In cURL and Python samples, `<api-key>` means this full value.
        The TypeScript SDK adds the prefix for you.
      in: header
      name: Authorization
      type: apiKey
    scopedTokenAuth:
      description: >-
        Enter the project-scoped token as `pst_...` in X-Scoped-Token, without
        an `ApiKey ` prefix. Create a token with POST
        /projects/{projectId}/tokens.
      in: header
      name: X-Scoped-Token
      type: apiKey

````

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