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

# Bulk Create Prompt Test Cases

> 
Add multiple test cases to a dataset in a single request. Use for batch imports, e.g. from CSV or production logs.

Maximum 100 test cases per request.



## OpenAPI

````yaml https://app.freeplay.ai/openapi.json post /api/v2/projects/{project_id}/prompt-datasets/{dataset_id}/test-cases/bulk
openapi: 3.1.0
info:
  title: Freeplay API
  version: 0.1.0
servers: []
security:
  - BearerAuth: []
paths:
  /api/v2/projects/{project_id}/prompt-datasets/{dataset_id}/test-cases/bulk:
    post:
      tags:
        - Prompt Datasets
      summary: Bulk Create Prompt Test Cases
      description: >-

        Add multiple test cases to a dataset in a single request. Use for batch
        imports, e.g. from CSV or production logs.


        Maximum 100 test cases per request.
      operationId: post_bulk_create_prompt_dataset_test_cases
      parameters:
        - name: project_id
          in: path
          required: true
          schema:
            type: string
        - name: dataset_id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              properties:
                data:
                  items:
                    $ref: '#/components/schemas/PromptTestCase'
                  title: Data
                  type: array
              required:
                - data
              title: CreatePromptTestCasesRequest
              type: object
      responses:
        '201':
          content:
            application/json:
              schema:
                properties:
                  data:
                    items:
                      $ref: '#/components/schemas/PromptTestCaseResponse'
                    title: Data
                    type: array
                required:
                  - data
                title: CreatePromptTestCasesResponse
                type: object
          description: >-
            CreatePromptTestCasesResponse(data:
            list[server.api_routes.prompt_datasets_api_v2.PromptTestCaseResponse])
components:
  schemas:
    PromptTestCase:
      properties:
        inputs:
          additionalProperties: true
          title: Inputs
          type: object
        output:
          default: null
          title: Output
          type:
            - string
            - 'null'
        metadata:
          default: null
          title: Metadata
          additionalProperties:
            anyOf:
              - type: string
              - type: number
              - type: integer
              - type: boolean
          type:
            - object
            - 'null'
        history:
          default: null
          title: History
          items:
            discriminator:
              mapping:
                assistant:
                  $ref: '#/components/schemas/AssistantMessage'
                developer:
                  $ref: '#/components/schemas/DeveloperMessage'
                system:
                  $ref: '#/components/schemas/SystemMessage'
                user:
                  $ref: '#/components/schemas/UserMessage'
              propertyName: role
            oneOf:
              - $ref: '#/components/schemas/UserMessage'
              - $ref: '#/components/schemas/SystemMessage'
              - $ref: '#/components/schemas/DeveloperMessage'
              - $ref: '#/components/schemas/AssistantMessage'
          type:
            - array
            - 'null'
        media_inputs:
          default: null
          title: Media Inputs
          additionalProperties:
            discriminator:
              mapping:
                base64:
                  $ref: '#/components/schemas/MediaInputBase64'
                url:
                  $ref: '#/components/schemas/MediaInputUrl'
              propertyName: type
            oneOf:
              - $ref: '#/components/schemas/MediaInputUrl'
              - $ref: '#/components/schemas/MediaInputBase64'
          type:
            - object
            - 'null'
      required:
        - inputs
      title: PromptTestCase
      type: object
    PromptTestCaseResponse:
      properties:
        id:
          format: uuid
          title: Id
          type: string
        inputs:
          additionalProperties: true
          title: Inputs
          type: object
        output:
          default: null
          title: Output
          type:
            - string
            - 'null'
        output_message:
          anyOf:
            - discriminator:
                mapping:
                  assistant:
                    $ref: '#/components/schemas/AssistantMessageInfo'
                  developer:
                    $ref: '#/components/schemas/DeveloperMessageInfo'
                  system:
                    $ref: '#/components/schemas/SystemMessageInfo'
                  user:
                    $ref: '#/components/schemas/UserMessageInfo'
                propertyName: role
              oneOf:
                - $ref: '#/components/schemas/UserMessageInfo'
                - $ref: '#/components/schemas/SystemMessageInfo'
                - $ref: '#/components/schemas/DeveloperMessageInfo'
                - $ref: '#/components/schemas/AssistantMessageInfo'
            - $ref: '#/components/schemas/UserMessage'
            - $ref: '#/components/schemas/AssistantMessage'
            - $ref: '#/components/schemas/SystemMessage'
            - $ref: '#/components/schemas/DeveloperMessage'
            - type: 'null'
          default: null
          title: Output Message
        metadata:
          default: null
          title: Metadata
          additionalProperties:
            anyOf:
              - type: string
              - type: number
              - type: integer
              - type: boolean
          type:
            - object
            - 'null'
        media_inputs:
          default: null
          title: Media Inputs
          additionalProperties:
            $ref: '#/components/schemas/MediaInputBase64'
          type:
            - object
            - 'null'
        history:
          default: null
          title: History
          items:
            anyOf:
              - discriminator:
                  mapping:
                    assistant:
                      $ref: '#/components/schemas/AssistantMessageInfo'
                    developer:
                      $ref: '#/components/schemas/DeveloperMessageInfo'
                    system:
                      $ref: '#/components/schemas/SystemMessageInfo'
                    user:
                      $ref: '#/components/schemas/UserMessageInfo'
                  propertyName: role
                oneOf:
                  - $ref: '#/components/schemas/UserMessageInfo'
                  - $ref: '#/components/schemas/SystemMessageInfo'
                  - $ref: '#/components/schemas/DeveloperMessageInfo'
                  - $ref: '#/components/schemas/AssistantMessageInfo'
              - $ref: '#/components/schemas/UserMessage'
              - $ref: '#/components/schemas/AssistantMessage'
              - $ref: '#/components/schemas/SystemMessage'
              - $ref: '#/components/schemas/DeveloperMessage'
          type:
            - array
            - 'null'
      required:
        - id
        - inputs
      title: PromptTestCaseResponse
      type: object
    AssistantMessage:
      properties:
        content:
          anyOf:
            - type: string
            - items:
                discriminator:
                  mapping:
                    audio:
                      $ref: '#/components/schemas/AudioBlock'
                    file:
                      $ref: '#/components/schemas/FileBlock'
                    image:
                      $ref: '#/components/schemas/ImageBlock'
                    text:
                      $ref: '#/components/schemas/TextBlock'
                    tool_call:
                      $ref: '#/components/schemas/ToolCallBlock'
                    tool_result:
                      $ref: '#/components/schemas/ToolResultBlock'
                  propertyName: type
                oneOf:
                  - $ref: '#/components/schemas/TextBlock'
                  - $ref: '#/components/schemas/ToolResultBlock'
                  - $ref: '#/components/schemas/ToolCallBlock'
                  - $ref: '#/components/schemas/ImageBlock'
                  - $ref: '#/components/schemas/AudioBlock'
                  - $ref: '#/components/schemas/FileBlock'
              type: array
          title: Content
        role:
          const: assistant
          default: assistant
          title: Role
          type: string
      required:
        - content
      title: AssistantMessage
      type: object
    DeveloperMessage:
      properties:
        content:
          title: Content
          type: string
        role:
          const: developer
          default: developer
          title: Role
          type: string
      required:
        - content
      title: DeveloperMessage
      type: object
    SystemMessage:
      properties:
        content:
          title: Content
          type: string
        role:
          const: system
          default: system
          title: Role
          type: string
      required:
        - content
      title: SystemMessage
      type: object
    UserMessage:
      properties:
        content:
          anyOf:
            - type: string
            - items:
                discriminator:
                  mapping:
                    audio:
                      $ref: '#/components/schemas/AudioBlock'
                    file:
                      $ref: '#/components/schemas/FileBlock'
                    image:
                      $ref: '#/components/schemas/ImageBlock'
                    text:
                      $ref: '#/components/schemas/TextBlock'
                    tool_call:
                      $ref: '#/components/schemas/ToolCallBlock'
                    tool_result:
                      $ref: '#/components/schemas/ToolResultBlock'
                  propertyName: type
                oneOf:
                  - $ref: '#/components/schemas/TextBlock'
                  - $ref: '#/components/schemas/ToolResultBlock'
                  - $ref: '#/components/schemas/ToolCallBlock'
                  - $ref: '#/components/schemas/ImageBlock'
                  - $ref: '#/components/schemas/AudioBlock'
                  - $ref: '#/components/schemas/FileBlock'
              type: array
          title: Content
        role:
          const: user
          default: user
          title: Role
          type: string
      required:
        - content
      title: UserMessage
      type: object
    MediaInputBase64:
      properties:
        type:
          const: base64
          title: Type
          type: string
        data:
          title: Data
          type: string
        content_type:
          title: Content Type
          type: string
      required:
        - type
        - data
        - content_type
      title: MediaInputBase64
      type: object
    MediaInputUrl:
      properties:
        type:
          const: url
          title: Type
          type: string
        url:
          title: Url
          type: string
      required:
        - type
        - url
      title: MediaInputUrl
      type: object
    AssistantMessageInfo:
      properties:
        content:
          items:
            discriminator:
              mapping:
                audio:
                  $ref: '#/components/schemas/AudioBlockInfo'
                file:
                  $ref: '#/components/schemas/FileBlockInfo'
                image:
                  $ref: '#/components/schemas/ImageBlockInfo'
                text:
                  $ref: '#/components/schemas/TextBlockInfo'
                tool_call:
                  $ref: '#/components/schemas/ToolCallBlockInfo'
                tool_result:
                  $ref: '#/components/schemas/ToolResultBlockInfo'
              propertyName: type
            oneOf:
              - $ref: '#/components/schemas/TextBlockInfo'
              - $ref: '#/components/schemas/ToolResultBlockInfo'
              - $ref: '#/components/schemas/ToolCallBlockInfo'
              - $ref: '#/components/schemas/ImageBlockInfo'
              - $ref: '#/components/schemas/AudioBlockInfo'
              - $ref: '#/components/schemas/FileBlockInfo'
          title: Content
          type: array
        role:
          const: assistant
          default: assistant
          title: Role
          type: string
      required:
        - content
      title: AssistantMessageInfo
      type: object
    DeveloperMessageInfo:
      properties:
        content:
          title: Content
          type: string
        role:
          const: developer
          default: developer
          title: Role
          type: string
      required:
        - content
      title: DeveloperMessageInfo
      type: object
    SystemMessageInfo:
      properties:
        content:
          title: Content
          type: string
        role:
          const: system
          default: system
          title: Role
          type: string
      required:
        - content
      title: SystemMessageInfo
      type: object
    UserMessageInfo:
      properties:
        content:
          items:
            discriminator:
              mapping:
                audio:
                  $ref: '#/components/schemas/AudioBlockInfo'
                file:
                  $ref: '#/components/schemas/FileBlockInfo'
                image:
                  $ref: '#/components/schemas/ImageBlockInfo'
                text:
                  $ref: '#/components/schemas/TextBlockInfo'
                tool_call:
                  $ref: '#/components/schemas/ToolCallBlockInfo'
                tool_result:
                  $ref: '#/components/schemas/ToolResultBlockInfo'
              propertyName: type
            oneOf:
              - $ref: '#/components/schemas/TextBlockInfo'
              - $ref: '#/components/schemas/ToolResultBlockInfo'
              - $ref: '#/components/schemas/ToolCallBlockInfo'
              - $ref: '#/components/schemas/ImageBlockInfo'
              - $ref: '#/components/schemas/AudioBlockInfo'
              - $ref: '#/components/schemas/FileBlockInfo'
          title: Content
          type: array
        role:
          const: user
          default: user
          title: Role
          type: string
      required:
        - content
      title: UserMessageInfo
      type: object
    AudioBlock:
      properties:
        media_id:
          format: uuid
          title: Media Id
          type: string
        type:
          const: audio
          default: audio
          title: Type
          type: string
      required:
        - media_id
      title: AudioBlock
      type: object
    FileBlock:
      properties:
        media_id:
          format: uuid
          title: Media Id
          type: string
        filename:
          default: null
          title: Filename
          type:
            - string
            - 'null'
        type:
          const: file
          default: file
          title: Type
          type: string
      required:
        - media_id
      title: FileBlock
      type: object
    ImageBlock:
      properties:
        media_id:
          format: uuid
          title: Media Id
          type: string
        type:
          const: image
          default: image
          title: Type
          type: string
      required:
        - media_id
      title: ImageBlock
      type: object
    TextBlock:
      properties:
        text:
          title: Text
          type: string
        type:
          const: text
          default: text
          title: Type
          type: string
      required:
        - text
      title: TextBlock
      type: object
    ToolCallBlock:
      properties:
        id:
          title: Id
          type: string
        name:
          title: Name
          type: string
        arguments:
          $ref: '#/components/schemas/JSONValue'
        thought_signature:
          default: null
          title: Thought Signature
          type:
            - string
            - 'null'
        type:
          const: tool_call
          default: tool_call
          title: Type
          type: string
      required:
        - id
        - name
        - arguments
      title: ToolCallBlock
      type: object
    ToolResultBlock:
      properties:
        tool_call_id:
          title: Tool Call Id
          type: string
        content:
          anyOf:
            - type: string
            - items:
                discriminator:
                  mapping:
                    audio:
                      $ref: '#/components/schemas/AudioBlock'
                    file:
                      $ref: '#/components/schemas/FileBlock'
                    image:
                      $ref: '#/components/schemas/ImageBlock'
                    text:
                      $ref: '#/components/schemas/TextBlock'
                    tool_call:
                      $ref: '#/components/schemas/ToolCallBlock'
                    tool_result:
                      $ref: '#/components/schemas/ToolResultBlock'
                  propertyName: type
                oneOf:
                  - $ref: '#/components/schemas/TextBlock'
                  - $ref: '#/components/schemas/ToolResultBlock'
                  - $ref: '#/components/schemas/ToolCallBlock'
                  - $ref: '#/components/schemas/ImageBlock'
                  - $ref: '#/components/schemas/AudioBlock'
                  - $ref: '#/components/schemas/FileBlock'
              type: array
          title: Content
        type:
          const: tool_result
          default: tool_result
          title: Type
          type: string
      required:
        - tool_call_id
        - content
      title: ToolResultBlock
      type: object
    AudioBlockInfo:
      properties:
        media_reference:
          discriminator:
            mapping:
              downloaded_file:
                $ref: '#/components/schemas/DownloadedMediaReference'
              session_asset:
                $ref: '#/components/schemas/SessionMediaReference'
              test_case_asset:
                $ref: '#/components/schemas/TestCaseMediaReference'
              uploaded_file:
                $ref: '#/components/schemas/UploadedMediaReference'
            propertyName: kind
          oneOf:
            - $ref: '#/components/schemas/SessionMediaReference'
            - $ref: '#/components/schemas/TestCaseMediaReference'
            - $ref: '#/components/schemas/UploadedMediaReference'
            - $ref: '#/components/schemas/DownloadedMediaReference'
          title: Media Reference
        type:
          const: audio
          default: audio
          title: Type
          type: string
      required:
        - media_reference
      title: AudioBlockInfo
      type: object
    FileBlockInfo:
      properties:
        media_reference:
          discriminator:
            mapping:
              downloaded_file:
                $ref: '#/components/schemas/DownloadedMediaReference'
              session_asset:
                $ref: '#/components/schemas/SessionMediaReference'
              test_case_asset:
                $ref: '#/components/schemas/TestCaseMediaReference'
              uploaded_file:
                $ref: '#/components/schemas/UploadedMediaReference'
            propertyName: kind
          oneOf:
            - $ref: '#/components/schemas/SessionMediaReference'
            - $ref: '#/components/schemas/TestCaseMediaReference'
            - $ref: '#/components/schemas/UploadedMediaReference'
            - $ref: '#/components/schemas/DownloadedMediaReference'
          title: Media Reference
        type:
          const: file
          default: file
          title: Type
          type: string
      required:
        - media_reference
      title: FileBlockInfo
      type: object
    ImageBlockInfo:
      properties:
        media_reference:
          discriminator:
            mapping:
              downloaded_file:
                $ref: '#/components/schemas/DownloadedMediaReference'
              session_asset:
                $ref: '#/components/schemas/SessionMediaReference'
              test_case_asset:
                $ref: '#/components/schemas/TestCaseMediaReference'
              uploaded_file:
                $ref: '#/components/schemas/UploadedMediaReference'
            propertyName: kind
          oneOf:
            - $ref: '#/components/schemas/SessionMediaReference'
            - $ref: '#/components/schemas/TestCaseMediaReference'
            - $ref: '#/components/schemas/UploadedMediaReference'
            - $ref: '#/components/schemas/DownloadedMediaReference'
          title: Media Reference
        type:
          const: image
          default: image
          title: Type
          type: string
      required:
        - media_reference
      title: ImageBlockInfo
      type: object
    TextBlockInfo:
      properties:
        text:
          title: Text
          type: string
        type:
          const: text
          default: text
          title: Type
          type: string
      required:
        - text
      title: TextBlockInfo
      type: object
    ToolCallBlockInfo:
      properties:
        id:
          title: Id
          type: string
        name:
          title: Name
          type: string
        arguments:
          $ref: '#/components/schemas/JSONValue'
        thought_signature:
          default: null
          title: Thought Signature
          type:
            - string
            - 'null'
        type:
          const: tool_call
          default: tool_call
          title: Type
          type: string
      required:
        - id
        - name
        - arguments
      title: ToolCallBlockInfo
      type: object
    ToolResultBlockInfo:
      properties:
        tool_call_id:
          title: Tool Call Id
          type: string
        content:
          items:
            discriminator:
              mapping:
                audio:
                  $ref: '#/components/schemas/AudioBlockInfo'
                file:
                  $ref: '#/components/schemas/FileBlockInfo'
                image:
                  $ref: '#/components/schemas/ImageBlockInfo'
                text:
                  $ref: '#/components/schemas/TextBlockInfo'
                tool_call:
                  $ref: '#/components/schemas/ToolCallBlockInfo'
                tool_result:
                  $ref: '#/components/schemas/ToolResultBlockInfo'
              propertyName: type
            oneOf:
              - $ref: '#/components/schemas/TextBlockInfo'
              - $ref: '#/components/schemas/ToolResultBlockInfo'
              - $ref: '#/components/schemas/ToolCallBlockInfo'
              - $ref: '#/components/schemas/ImageBlockInfo'
              - $ref: '#/components/schemas/AudioBlockInfo'
              - $ref: '#/components/schemas/FileBlockInfo'
          title: Content
          type: array
        type:
          const: tool_result
          default: tool_result
          title: Type
          type: string
      required:
        - tool_call_id
        - content
      title: ToolResultBlockInfo
      type: object
    JSONValue:
      anyOf:
        - type: boolean
        - type: integer
        - type: number
        - type: string
        - additionalProperties:
            $ref: '#/components/schemas/JSONValue'
          type: object
        - items:
            $ref: '#/components/schemas/JSONValue'
          type: array
        - type: 'null'
    DownloadedMediaReference:
      properties:
        base64Data:
          title: Base64Data
          type: string
        contentType:
          title: Contenttype
          type: string
        media_type:
          enum:
            - audio
            - video
            - image
            - file
          title: Media Type
          type: string
        asset_id:
          default: null
          title: Asset Id
          format: uuid
          type:
            - string
            - 'null'
        session_id:
          default: null
          title: Session Id
          format: uuid
          type:
            - string
            - 'null'
        test_case_id:
          default: null
          title: Test Case Id
          format: uuid
          type:
            - string
            - 'null'
        filename:
          default: null
          title: Filename
          type:
            - string
            - 'null'
        kind:
          const: downloaded_file
          default: downloaded_file
          title: Kind
          type: string
      required:
        - base64Data
        - contentType
        - media_type
      title: DownloadedMediaReference
      type: object
    SessionMediaReference:
      properties:
        asset_id:
          format: uuid
          title: Asset Id
          type: string
        session_id:
          format: uuid
          title: Session Id
          type: string
        media_type:
          enum:
            - audio
            - video
            - image
            - file
          title: Media Type
          type: string
        filename:
          default: null
          title: Filename
          type:
            - string
            - 'null'
        kind:
          const: session_asset
          default: session_asset
          title: Kind
          type: string
      required:
        - asset_id
        - session_id
        - media_type
      title: SessionMediaReference
      type: object
    TestCaseMediaReference:
      properties:
        asset_id:
          format: uuid
          title: Asset Id
          type: string
        test_case_id:
          format: uuid
          title: Test Case Id
          type: string
        media_type:
          enum:
            - audio
            - video
            - image
            - file
          title: Media Type
          type: string
        filename:
          default: null
          title: Filename
          type:
            - string
            - 'null'
        kind:
          const: test_case_asset
          default: test_case_asset
          title: Kind
          type: string
      required:
        - asset_id
        - test_case_id
        - media_type
      title: TestCaseMediaReference
      type: object
    UploadedMediaReference:
      properties:
        base64Data:
          title: Base64Data
          type: string
        contentType:
          title: Contenttype
          type: string
        media_type:
          enum:
            - audio
            - video
            - image
            - file
          title: Media Type
          type: string
        filename:
          default: null
          title: Filename
          type:
            - string
            - 'null'
        kind:
          const: uploaded_file
          default: uploaded_file
          title: Kind
          type: string
      required:
        - base64Data
        - contentType
        - media_type
      title: UploadedMediaReference
      type: object
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer

````