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

# Create a dataset slice

> Freeze the selected rows and fields at one cutoff. Use `fromSlice` to reuse an existing slice's filter at a new cutoff. Split fields are always frozen. Returns a slice with status `creating`; poll until `ready` or `failed`. Uploads and blocking field operations prevent creation.



## OpenAPI

````yaml /api-reference/openapi.json post /datasets/{datasetId}/slices
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:
  /datasets/{datasetId}/slices:
    post:
      tags:
        - Datasets
      summary: Create a dataset slice
      description: >-
        Freeze the selected rows and fields at one cutoff. Use `fromSlice` to
        reuse an existing slice's filter at a new cutoff. Split fields are
        always frozen. Returns a slice with status `creating`; poll until
        `ready` or `failed`. Uploads and blocking field operations prevent
        creation.
      operationId: createDatasetSlice
      parameters:
        - in: path
          name: datasetId
          required: true
          schema:
            $ref: '#/components/schemas/DatasetId'
      requestBody:
        content:
          application/json:
            schema:
              anyOf:
                - additionalProperties: false
                  properties:
                    frozenColumns:
                      description: >-
                        Fields to freeze, by name or ID. Defaults to all fields.
                        Split fields are always frozen; other fields omitted
                        here keep their latest values.
                      items:
                        type: string
                      maxItems: 500
                      type: array
                    itemFilter:
                      additionalProperties: false
                      description: >-
                        Select rows at the slice cutoff. Omit to include all
                        rows. This filter cannot use `createdBefore`, another
                        slice, or split parts.
                      properties:
                        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
                      type: object
                    name:
                      description: >-
                        A name to tell slices apart, for example "October eval".
                        Defaults to Slice 1, Slice 2 and so on.
                      maxLength: 120
                      minLength: 1
                      type: string
                  type: object
                - additionalProperties: false
                  properties:
                    fromSlice:
                      description: >-
                        A ready slice of this dataset to take again: the same
                        filter and frozen fields at a new cutoff, so rows added
                        or changed since are picked up.
                      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
                    frozenColumns:
                      description: >-
                        Fields, by field name or id, to freeze at the new
                        cutoff. Defaults to the fields the source slice froze.
                      items:
                        type: string
                      maxItems: 500
                      type: array
                    name:
                      description: >-
                        A name to tell slices apart, for example "October eval".
                        Defaults to Slice 1, Slice 2 and so on.
                      maxLength: 120
                      minLength: 1
                      type: string
                  required:
                    - fromSlice
                  type: object
              description: >-
                Select dataset rows and fields to freeze at one cutoff. The
                resulting slice keeps those rows and frozen values; create
                another slice to include later changes.
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DatasetSlice'
          description: Slice started
          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'
        '400':
          description: >-
            Unknown field, unsupported filter, or a source slice that is not
            ready
          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: Dataset 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'
        '409':
          description: >-
            An upload to the dataset is in progress, or a split field is being
            filled
          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 slice = await client.datasets.createSlice({
              datasetId: "ds.019a0000-0000-7000-8000-000000000001",
              name: "Training snapshot",
              frozenColumns: [
                "text",
                "split"
              ]
            });
            console.log(slice);
components:
  schemas:
    DatasetId:
      description: Dataset ID with prefix `ds.`.
      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
    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
    DatasetSlice:
      properties:
        createdAt:
          description: When the slice was requested.
          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
        cutoff:
          description: >-
            The moment the slice was taken: its rows and its frozen fields are
            read as they were just before it.
          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
        datasetId:
          description: ID of the dataset containing this slice, with prefix `ds.`.
          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
        error:
          anyOf:
            - properties:
                code:
                  description: Machine-readable reason the slice could not be created.
                  enum:
                    - no_rows
                    - cutoff_not_settled
                  type: string
                message:
                  description: Explanation of the slice creation failure.
                  type: string
              required:
                - code
                - message
              type: object
            - type: 'null'
          description: Why the slice failed.
        fromSliceId:
          anyOf:
            - 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
            - type: 'null'
          description: The slice this one was taken from, if any.
        frozenFieldIds:
          description: >-
            Fields the slice reads as they were at its cutoff. Other fields read
            live.
          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
        id:
          description: >-
            Slice id. The same id always selects the same rows with the same
            frozen values.
          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
        itemFilter:
          anyOf:
            - additionalProperties: false
              description: >-
                Conditions selecting dataset rows; omitted conditions do not
                restrict the selection.
              properties:
                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
              type: object
            - description: >-
                Conditions selecting dataset rows; omitted conditions do not
                restrict the selection.
              type: 'null'
          description: >-
            The filter the rows matched when the slice was taken; null for every
            row.
        name:
          description: The name that tells this slice apart.
          maxLength: 120
          minLength: 1
          type: string
        rows:
          description: Rows in the slice once it is ready; 0 until then.
          maximum: 9007199254740991
          minimum: 0
          type: integer
        status:
          description: Only a ready slice can select rows.
          enum:
            - creating
            - ready
            - failed
          type: string
      required:
        - id
        - datasetId
        - name
        - itemFilter
        - frozenFieldIds
        - fromSliceId
        - status
        - rows
        - error
        - cutoff
        - createdAt
      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.