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

# Create Dataset Version from Request History

Create a dataset version asynchronously from existing request logs. You can populate the version with explicit request log IDs or with structured request-log filters.

## Behavior Notes

* If both `request_log_ids` and `filter_group` are present, explicit request IDs take precedence.
* The endpoint queues a background job and reuses the draft dataset for the dataset group when one already exists.
* Jobs are capped at 50,000 request logs.
* Filter-based datasets persist their filter parameters so refresh flows can replay the same query later.
* Completion triggers the `dataset_version_created_from_filter_params` webhook.

## Related

* [Create from History](/features/evaluations/datasets-create-from-history)
* [Search Request Logs](/reference/search-request-logs)
* [Get Dataset Rows](/reference/get-dataset-rows)


## OpenAPI

````yaml POST /api/public/v2/dataset-versions/from-filter-params
openapi: 3.1.0
info:
  title: FastAPI
  version: 0.1.0
servers: []
security:
  - ApiKeyAuth: []
paths:
  /api/public/v2/dataset-versions/from-filter-params:
    post:
      tags:
        - datasets
      summary: Create Dataset Version from Filter Params
      operationId: createDatasetVersionFromFilterParams
      requestBody:
        required: true
        description: >-
          Dataset version creation payload from request IDs or request-log
          filters.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDatasetVersionFromFilterParamsRequest'
            examples:
              explicitIds:
                summary: Explicit request IDs
                value:
                  dataset_group_id: 123
                  request_log_ids:
                    - 1001
                    - 1002
                    - 1003
              filteredHistory:
                summary: Structured filter group
                value:
                  dataset_group_id: 123
                  filter_group:
                    logic: AND
                    filters:
                      - field: request_start_time
                        operator: between
                        value:
                          - '2026-04-01T00:00:00Z'
                          - '2026-04-30T23:59:59Z'
                      - field: tags
                        operator: in
                        value:
                          - staging
                      - field: metadata
                        operator: key_equals
                        nested_key: app_name
                        value: checkout
                  q: timeout
                  sort_by: request_start_time
                  sort_order: desc
      responses:
        '201':
          description: Dataset version creation queued.
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/CreateDatasetVersionFromFilterParamsResponse
              examples:
                queued:
                  summary: Dataset job queued
                  value:
                    success: true
                    message: Dataset version creation queued
                    dataset_id: 456
                    dataset_group_id: 123
                    version_number: -1
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '422':
          $ref: '#/components/responses/ValidationError'
components:
  schemas:
    CreateDatasetVersionFromFilterParamsRequest:
      type: object
      title: CreateDatasetVersionFromFilterParamsRequest
      required:
        - dataset_group_id
      properties:
        dataset_group_id:
          type: integer
          description: Dataset group that will receive the generated dataset version.
        request_log_ids:
          type: array
          items:
            type: integer
          maxItems: 50000
          nullable: true
          description: >-
            Explicit request log IDs to snapshot. When provided, this mode takes
            precedence over filter_group.
        filter_group:
          anyOf:
            - $ref: '#/components/schemas/StructuredFilterGroup'
            - type: 'null'
          description: >-
            Structured request-log filters used to populate the dataset
            asynchronously.
        q:
          type: string
          nullable: true
          description: Free-text request-log search query applied with filter_group.
        sort_by:
          type: string
          enum:
            - request_start_time
            - input_tokens
            - output_tokens
            - cost
            - latency_ms
            - status
          nullable: true
        sort_order:
          type: string
          enum:
            - asc
            - desc
          nullable: true
        variables_to_parse:
          type: array
          items:
            type: string
          nullable: true
          description: Request fields or variables to parse into dataset columns.
    CreateDatasetVersionFromFilterParamsResponse:
      type: object
      title: CreateDatasetVersionFromFilterParamsResponse
      required:
        - success
        - dataset_id
        - dataset_group_id
        - version_number
      properties:
        success:
          type: boolean
          enum:
            - true
        message:
          type: string
        dataset_id:
          type: integer
        dataset_group_id:
          type: integer
        version_number:
          type: integer
          description: Version number of the draft or generated dataset version.
    StructuredFilterGroup:
      type: object
      title: StructuredFilterGroup
      description: >-
        A group of filters combined with AND or OR logic. Can be nested
        recursively.
      required:
        - filters
      properties:
        logic:
          type: string
          enum:
            - AND
            - OR
          default: AND
          description: How to combine the filters in this group.
        filters:
          type: array
          description: List of filters or nested filter groups.
          items:
            oneOf:
              - $ref: '#/components/schemas/StructuredFilter'
              - $ref: '#/components/schemas/StructuredFilterGroup'
    ErrorResponse:
      type: object
      properties:
        success:
          type: boolean
          default: false
          description: Indicates that the request failed.
        message:
          type: string
          description: Human-readable error message.
        error:
          type: string
          description: Machine-readable or fallback error message.
      additionalProperties: true
      description: >-
        Standard error response. Some legacy endpoints may return either message
        or error.
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    StructuredFilter:
      type: object
      title: StructuredFilter
      description: A single filter condition on a request log field.
      required:
        - field
        - operator
      properties:
        field:
          type: string
          description: The request log field to filter on.
          enum:
            - pl_id
            - prompt_id
            - engine
            - provider_type
            - input_text
            - output_text
            - prompt_version_number
            - input_tokens
            - output_tokens
            - cost
            - latency_ms
            - request_start_time
            - request_end_time
            - status
            - is_json
            - is_tool_call
            - is_plain_text
            - tags
            - metadata_keys
            - metadata
            - tool_names
            - output
            - output_keys
            - input_variables
            - input_variable_keys
        operator:
          type: string
          description: The comparison operator.
          enum:
            - is
            - is_not
            - in
            - not_in
            - contains
            - not_contains
            - starts_with
            - ends_with
            - eq
            - neq
            - gt
            - gte
            - lt
            - lte
            - between
            - before
            - after
            - is_true
            - is_false
            - is_empty
            - is_not_empty
            - is_null
            - is_not_null
            - key_equals
            - key_not_equals
            - key_contains
        value:
          description: >-
            The value to compare against. Type depends on the field and
            operator.
          oneOf:
            - type: string
            - type: number
            - type: boolean
            - type: array
            - type: 'null'
        nested_key:
          type: string
          nullable: true
          description: >-
            Required for nested fields (metadata, output, input_variables).
            Specifies which key within the nested object to filter on.
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
  responses:
    UnauthorizedError:
      description: Unauthorized - missing or invalid API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    ForbiddenError:
      description: Forbidden - API key does not have access to the requested resource.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFoundError:
      description: Not found - requested resource does not exist or is not accessible.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    ValidationError:
      description: Validation error - request parameters or body are invalid.
      content:
        application/json:
          schema:
            oneOf:
              - $ref: '#/components/schemas/HTTPValidationError'
              - $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-KEY

````