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

# Create evaluations test cases

> Requires scopes: eval:write



## OpenAPI

````yaml /api-reference/openapi.json post /api/evaluations/{id}/test-cases
openapi: 3.1.2
info:
  title: EvalGate API
  version: 18.13.0
  description: EvalGate API. See docs/api-contract.md for stability commitments.
servers:
  - url: https://evalgate.com
    description: Production
  - url: http://localhost:3000
    description: Local
security: []
paths:
  /api/evaluations/{id}/test-cases:
    post:
      tags:
        - evaluations
      summary: Create evaluations test cases
      description: 'Requires scopes: eval:write'
      operationId: post_evaluations_id_test_cases
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: integer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PostApiEvaluationsIdTestCasesRequest'
      responses:
        '201':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: >-
                  #/components/schemas/PostApiEvaluationsIdTestCasesResponse201ApplicationJson
        '400':
          $ref: '#/components/responses/ValidationError'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          $ref: '#/components/responses/Conflict'
        '429':
          $ref: '#/components/responses/RateLimited'
        '500':
          $ref: '#/components/responses/InternalError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
      security:
        - bearerAuth: []
components:
  schemas:
    PostApiEvaluationsIdTestCasesRequest:
      type: object
      properties:
        name:
          type: string
        input:
          type: string
        metadata:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/JsonValue'
        expectedOutput:
          oneOf:
            - type: 'null'
            - type: string
      additionalProperties: false
      required:
        - name
        - input
    PostApiEvaluationsIdTestCasesResponse201ApplicationJson:
      type: object
      properties:
        id:
          type: number
        name:
          type: string
        createdAt:
          type: string
          format: date-time
        evaluationId:
          type: number
        metadata:
          oneOf:
            - type: 'null'
            - type: object
              properties:
                tags:
                  type: array
                  items:
                    type: string
                category:
                  oneOf:
                    - type: string
                      enum:
                        - policy
                    - type: string
                      enum:
                        - support
                    - type: string
                      enum:
                        - safety
                    - type: string
                      enum:
                        - regression
                    - type: string
                      enum:
                        - behavioral
                    - type: string
                      enum:
                        - adversarial
                    - type: string
                      enum:
                        - functional
                    - type: string
                      enum:
                        - quality
                    - type: string
                      enum:
                        - performance
                    - type: string
                      enum:
                        - edge_case
                    - type: string
                      enum:
                        - compliance
                    - type: string
                      enum:
                        - hours
                    - type: string
                      enum:
                        - dangerous
                    - type: string
                      enum:
                        - harmful
                    - type: string
                      enum:
                        - illegal
                difficulty:
                  oneOf:
                    - type: string
                      enum:
                        - medium
                    - type: string
                      enum:
                        - hard
                    - type: string
                      enum:
                        - easy
                    - type: string
                      enum:
                        - flaky
                source:
                  oneOf:
                    - type: string
                      enum:
                        - unknown
                    - type: string
                      enum:
                        - manual
                    - type: string
                      enum:
                        - coverage_gap
                    - type: string
                      enum:
                        - synthetic
                    - type: string
                      enum:
                        - import
                    - type: string
                      enum:
                        - production_failure
                    - type: string
                      enum:
                        - auto_augmented
                    - type: string
                      enum:
                        - demo_seed
                    - type: string
                      enum:
                        - seedforge
                    - type: string
                      enum:
                        - evalgate_synthesize
                behavior:
                  oneOf:
                    - type: string
                      enum:
                        - retrieval
                    - type: string
                      enum:
                        - tool_use
                    - type: string
                      enum:
                        - classification
                    - type: string
                      enum:
                        - extraction
                    - type: string
                      enum:
                        - multi_step_reasoning
                failureClusterId:
                  type: string
                agentWorkflow:
                  type: object
                  properties:
                    version:
                      type: number
                      enum:
                        - 1
                    workflowClass:
                      oneOf:
                        - type: string
                          enum:
                            - approval_gated_mutation
                        - type: string
                          enum:
                            - background_execution
                        - type: string
                          enum:
                            - recovery_required
                        - type: string
                          enum:
                            - policy_conflict
                        - type: string
                          enum:
                            - handoff_heavy
                        - type: string
                          enum:
                            - memory_sensitive
                        - type: string
                          enum:
                            - parallel_tool_use
                    autonomyLevel:
                      oneOf:
                        - type: string
                          enum:
                            - manual
                        - type: string
                          enum:
                            - default_approvals
                        - type: string
                          enum:
                            - bypass_approvals
                        - type: string
                          enum:
                            - autopilot
                    approvalMode:
                      oneOf:
                        - type: string
                          enum:
                            - none
                        - type: string
                          enum:
                            - human_review
                        - type: string
                          enum:
                            - policy_guided
                        - type: string
                          enum:
                            - auto_with_audit
                    riskLevel:
                      oneOf:
                        - type: string
                          enum:
                            - medium
                        - type: string
                          enum:
                            - high
                        - type: string
                          enum:
                            - critical
                        - type: string
                          enum:
                            - low
                    memoryMode:
                      oneOf:
                        - type: string
                          enum:
                            - none
                        - type: string
                          enum:
                            - session
                        - type: string
                          enum:
                            - mixed
                        - type: string
                          enum:
                            - persistent
                    backgroundExecution:
                      type: boolean
                    requiresCheckpoint:
                      type: boolean
                    expectedHandoff:
                      type: boolean
                    requiredHooks:
                      type: array
                      items:
                        oneOf:
                          - type: string
                            enum:
                              - session_start
                          - type: string
                            enum:
                              - pre_plan
                          - type: string
                            enum:
                              - pre_tool
                          - type: string
                            enum:
                              - post_tool
                          - type: string
                            enum:
                              - pre_write
                          - type: string
                            enum:
                              - pre_handoff
                          - type: string
                            enum:
                              - on_error
                          - type: string
                            enum:
                              - session_end
                    activeTools:
                      type: array
                      items:
                        type: string
                    permissionScope:
                      type: object
                      properties:
                        filesystem:
                          type: array
                          items:
                            type: string
                        network:
                          oneOf:
                            - type: string
                              enum:
                                - open
                            - type: string
                              enum:
                                - none
                            - type: string
                              enum:
                                - restricted
                        externalSystems:
                          type: array
                          items:
                            type: string
                        mutatesState:
                          oneOf:
                            - type: boolean
                              enum:
                                - false
                            - type: boolean
                              enum:
                                - true
                      additionalProperties: false
                    expectedFailureModes:
                      type: array
                      items:
                        type: string
                    scenario:
                      type: string
                    provenance:
                      type: object
                      properties:
                        source:
                          oneOf:
                            - type: string
                              enum:
                                - evaluation_run
                            - type: string
                              enum:
                                - manual
                            - type: string
                              enum:
                                - coverage_gap
                            - type: string
                              enum:
                                - trace_failure
                        evaluationId:
                          type: number
                        runId:
                          type: number
                        testCaseId:
                          type: number
                        traceId:
                          oneOf:
                            - type: 'null'
                            - type: string
                      additionalProperties: false
                      required:
                        - source
                  additionalProperties: false
                  required:
                    - version
                    - workflowClass
                    - autonomyLevel
                    - approvalMode
                    - riskLevel
                    - memoryMode
                    - backgroundExecution
                    - requiresCheckpoint
                    - expectedHandoff
                    - requiredHooks
                    - activeTools
                    - permissionScope
                    - expectedFailureModes
                    - scenario
                workflowExperimentRecipe:
                  oneOf:
                    - type: 'null'
                    - type: object
                      properties:
                        version:
                          type: number
                          enum:
                            - 1
                        title:
                          type: string
                        objective:
                          type: string
                        workflowClass:
                          oneOf:
                            - type: string
                              enum:
                                - approval_gated_mutation
                            - type: string
                              enum:
                                - background_execution
                            - type: string
                              enum:
                                - recovery_required
                            - type: string
                              enum:
                                - policy_conflict
                            - type: string
                              enum:
                                - handoff_heavy
                            - type: string
                              enum:
                                - memory_sensitive
                            - type: string
                              enum:
                                - parallel_tool_use
                        source:
                          oneOf:
                            - type: string
                              enum:
                                - coverage_gap
                            - type: string
                              enum:
                                - failure
                        linkedFailureModes:
                          type: array
                          items:
                            type: string
                        linkedTestCaseIds:
                          type: array
                          items:
                            type: number
                        comparedVariants:
                          type: array
                          items:
                            type: object
                            properties:
                              id:
                                type: string
                              label:
                                type: string
                              changes:
                                type: array
                                items:
                                  type: string
                              autonomyLevel:
                                oneOf:
                                  - type: string
                                    enum:
                                      - manual
                                  - type: string
                                    enum:
                                      - default_approvals
                                  - type: string
                                    enum:
                                      - bypass_approvals
                                  - type: string
                                    enum:
                                      - autopilot
                              approvalMode:
                                oneOf:
                                  - type: string
                                    enum:
                                      - none
                                  - type: string
                                    enum:
                                      - human_review
                                  - type: string
                                    enum:
                                      - policy_guided
                                  - type: string
                                    enum:
                                      - auto_with_audit
                              memoryMode:
                                oneOf:
                                  - type: string
                                    enum:
                                      - none
                                  - type: string
                                    enum:
                                      - session
                                  - type: string
                                    enum:
                                      - mixed
                                  - type: string
                                    enum:
                                      - persistent
                              hooks:
                                type: array
                                items:
                                  oneOf:
                                    - type: string
                                      enum:
                                        - session_start
                                    - type: string
                                      enum:
                                        - pre_plan
                                    - type: string
                                      enum:
                                        - pre_tool
                                    - type: string
                                      enum:
                                        - post_tool
                                    - type: string
                                      enum:
                                        - pre_write
                                    - type: string
                                      enum:
                                        - pre_handoff
                                    - type: string
                                      enum:
                                        - on_error
                                    - type: string
                                      enum:
                                        - session_end
                              expectedImpact:
                                type: string
                            additionalProperties: false
                            required:
                              - id
                              - label
                              - changes
                              - expectedImpact
                        successMetrics:
                          type: array
                          items:
                            type: string
                        guardrails:
                          type: array
                          items:
                            type: string
                        recommendedIterations:
                          type: number
                        rationale:
                          type: string
                      additionalProperties: false
                      required:
                        - version
                        - title
                        - objective
                        - workflowClass
                        - source
                        - linkedFailureModes
                        - linkedTestCaseIds
                        - comparedVariants
                        - successMetrics
                        - guardrails
                        - recommendedIterations
                        - rationale
                candidateId:
                  oneOf:
                    - type: string
                    - type: number
                failureReportId:
                  oneOf:
                    - type: 'null'
                    - type: number
                evalCaseId:
                  oneOf:
                    - type: string
                    - type: number
              additionalProperties: false
        input:
          type: string
        inputHash:
          oneOf:
            - type: 'null'
            - type: string
        expectedOutput:
          oneOf:
            - type: 'null'
            - type: string
        lifecycleState:
          type: string
        originType:
          type: string
        datasetId:
          oneOf:
            - type: 'null'
            - type: string
        datasetVersionId:
          oneOf:
            - type: 'null'
            - type: string
        datasetRowId:
          oneOf:
            - type: 'null'
            - type: string
        datasetRowContentHash:
          oneOf:
            - type: 'null'
            - type: string
        lastLifecycleTransitionAt:
          type: string
          format: date-time
        archivedAt:
          oneOf:
            - type: 'null'
            - type: string
              format: date-time
        supersededById:
          oneOf:
            - type: 'null'
            - type: number
        supersededAt:
          oneOf:
            - type: 'null'
            - type: string
              format: date-time
        supersessionReason:
          oneOf:
            - type: 'null'
            - type: string
      additionalProperties: false
      required:
        - id
        - name
        - createdAt
        - evaluationId
        - metadata
        - input
        - inputHash
        - expectedOutput
        - lifecycleState
        - originType
        - datasetId
        - datasetVersionId
        - datasetRowId
        - datasetRowContentHash
        - lastLifecycleTransitionAt
        - archivedAt
        - supersededById
        - supersededAt
        - supersessionReason
    JsonValue:
      oneOf:
        - type: 'null'
        - type: boolean
        - type: number
        - type: string
        - type: array
          items:
            $ref: '#/components/schemas/JsonValue'
        - type: object
          additionalProperties:
            $ref: '#/components/schemas/JsonValue'
    ApiError:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              enum:
                - UNAUTHORIZED
                - FORBIDDEN
                - NOT_FOUND
                - INVALID_REFERENCE
                - VALIDATION_ERROR
                - RATE_LIMITED
                - CONFLICT
                - INTERNAL_ERROR
                - SERVICE_UNAVAILABLE
                - QUOTA_EXCEEDED
                - FEATURE_LIMIT_REACHED
                - NO_ORG_MEMBERSHIP
                - SHARE_REVOKED
                - SHARE_EXPIRED
                - SHARE_UNAVAILABLE
                - PROVIDER_KEY_MISSING
                - PROVIDER_KEY_EXPIRED
                - PROVIDER_RATE_LIMITED
                - PROVIDER_UNAUTHORIZED
                - PROVIDER_UNAVAILABLE
                - AGENT_HANDOFF_INVALID
                - AGENT_HANDOFF_EXPIRED
                - AGENT_HANDOFF_DENIED
                - AGENT_HANDOFF_CONSUMED
                - PAYLOAD_TOO_LARGE
                - METHOD_NOT_ALLOWED
            message:
              type: string
            details: {}
            requestId:
              type: string
              format: uuid
            redaction:
              type: object
              properties:
                applied:
                  type: boolean
                  enum:
                    - true
                fieldCount:
                  type: integer
                  minimum: 0
                secretCount:
                  type: integer
                  minimum: 0
              required:
                - applied
                - fieldCount
                - secretCount
          required:
            - code
            - message
      required:
        - error
  responses:
    ValidationError:
      description: Validation error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
      headers:
        RateLimit-Limit:
          description: Quota in requests for the active window.
          schema:
            type: integer
            minimum: 0
        RateLimit-Remaining:
          description: Remaining requests in the active window.
          schema:
            type: integer
            minimum: 0
        RateLimit-Reset:
          description: Reset delay in seconds (not a Unix timestamp).
          schema:
            type: integer
            minimum: 1
        X-RateLimit-Limit:
          schema:
            type: integer
            minimum: 0
        X-RateLimit-Remaining:
          schema:
            type: integer
            minimum: 0
        X-RateLimit-Reset:
          description: Legacy reset timestamp in Unix milliseconds.
          schema:
            type: integer
            minimum: 0
        RateLimit-Policy:
          description: IETF HTTPAPI structured quota policy (work in progress).
          schema:
            type: string
        RateLimit:
          description: >-
            IETF HTTPAPI structured remaining quota and reset delay (work in
            progress).
          schema:
            type: string
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
      headers:
        RateLimit-Limit:
          description: Quota in requests for the active window.
          schema:
            type: integer
            minimum: 0
        RateLimit-Remaining:
          description: Remaining requests in the active window.
          schema:
            type: integer
            minimum: 0
        RateLimit-Reset:
          description: Reset delay in seconds (not a Unix timestamp).
          schema:
            type: integer
            minimum: 1
        X-RateLimit-Limit:
          schema:
            type: integer
            minimum: 0
        X-RateLimit-Remaining:
          schema:
            type: integer
            minimum: 0
        X-RateLimit-Reset:
          description: Legacy reset timestamp in Unix milliseconds.
          schema:
            type: integer
            minimum: 0
        RateLimit-Policy:
          description: IETF HTTPAPI structured quota policy (work in progress).
          schema:
            type: string
        RateLimit:
          description: >-
            IETF HTTPAPI structured remaining quota and reset delay (work in
            progress).
          schema:
            type: string
        WWW-Authenticate:
          description: >-
            Bearer challenge. Agent-facing routes include the RFC 9728
            resource_metadata URL.
          schema:
            type: string
    Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
      headers:
        RateLimit-Limit:
          description: Quota in requests for the active window.
          schema:
            type: integer
            minimum: 0
        RateLimit-Remaining:
          description: Remaining requests in the active window.
          schema:
            type: integer
            minimum: 0
        RateLimit-Reset:
          description: Reset delay in seconds (not a Unix timestamp).
          schema:
            type: integer
            minimum: 1
        X-RateLimit-Limit:
          schema:
            type: integer
            minimum: 0
        X-RateLimit-Remaining:
          schema:
            type: integer
            minimum: 0
        X-RateLimit-Reset:
          description: Legacy reset timestamp in Unix milliseconds.
          schema:
            type: integer
            minimum: 0
        RateLimit-Policy:
          description: IETF HTTPAPI structured quota policy (work in progress).
          schema:
            type: string
        RateLimit:
          description: >-
            IETF HTTPAPI structured remaining quota and reset delay (work in
            progress).
          schema:
            type: string
    NotFound:
      description: Resource not found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
      headers:
        RateLimit-Limit:
          description: Quota in requests for the active window.
          schema:
            type: integer
            minimum: 0
        RateLimit-Remaining:
          description: Remaining requests in the active window.
          schema:
            type: integer
            minimum: 0
        RateLimit-Reset:
          description: Reset delay in seconds (not a Unix timestamp).
          schema:
            type: integer
            minimum: 1
        X-RateLimit-Limit:
          schema:
            type: integer
            minimum: 0
        X-RateLimit-Remaining:
          schema:
            type: integer
            minimum: 0
        X-RateLimit-Reset:
          description: Legacy reset timestamp in Unix milliseconds.
          schema:
            type: integer
            minimum: 0
        RateLimit-Policy:
          description: IETF HTTPAPI structured quota policy (work in progress).
          schema:
            type: string
        RateLimit:
          description: >-
            IETF HTTPAPI structured remaining quota and reset delay (work in
            progress).
          schema:
            type: string
    Conflict:
      description: Conflict
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
      headers:
        RateLimit-Limit:
          description: Quota in requests for the active window.
          schema:
            type: integer
            minimum: 0
        RateLimit-Remaining:
          description: Remaining requests in the active window.
          schema:
            type: integer
            minimum: 0
        RateLimit-Reset:
          description: Reset delay in seconds (not a Unix timestamp).
          schema:
            type: integer
            minimum: 1
        X-RateLimit-Limit:
          schema:
            type: integer
            minimum: 0
        X-RateLimit-Remaining:
          schema:
            type: integer
            minimum: 0
        X-RateLimit-Reset:
          description: Legacy reset timestamp in Unix milliseconds.
          schema:
            type: integer
            minimum: 0
        RateLimit-Policy:
          description: IETF HTTPAPI structured quota policy (work in progress).
          schema:
            type: string
        RateLimit:
          description: >-
            IETF HTTPAPI structured remaining quota and reset delay (work in
            progress).
          schema:
            type: string
    RateLimited:
      description: Rate limit exceeded
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
      headers:
        RateLimit-Limit:
          description: Quota in requests for the active window.
          schema:
            type: integer
            minimum: 0
        RateLimit-Remaining:
          description: Remaining requests in the active window.
          schema:
            type: integer
            minimum: 0
        RateLimit-Reset:
          description: Reset delay in seconds (not a Unix timestamp).
          schema:
            type: integer
            minimum: 1
        X-RateLimit-Limit:
          schema:
            type: integer
            minimum: 0
        X-RateLimit-Remaining:
          schema:
            type: integer
            minimum: 0
        X-RateLimit-Reset:
          description: Legacy reset timestamp in Unix milliseconds.
          schema:
            type: integer
            minimum: 0
        RateLimit-Policy:
          description: IETF HTTPAPI structured quota policy (work in progress).
          schema:
            type: string
        RateLimit:
          description: >-
            IETF HTTPAPI structured remaining quota and reset delay (work in
            progress).
          schema:
            type: string
        Retry-After:
          description: Delay in seconds before retrying when present.
          schema:
            type: integer
            minimum: 1
    InternalError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
      headers:
        RateLimit-Limit:
          description: Quota in requests for the active window.
          schema:
            type: integer
            minimum: 0
        RateLimit-Remaining:
          description: Remaining requests in the active window.
          schema:
            type: integer
            minimum: 0
        RateLimit-Reset:
          description: Reset delay in seconds (not a Unix timestamp).
          schema:
            type: integer
            minimum: 1
        X-RateLimit-Limit:
          schema:
            type: integer
            minimum: 0
        X-RateLimit-Remaining:
          schema:
            type: integer
            minimum: 0
        X-RateLimit-Reset:
          description: Legacy reset timestamp in Unix milliseconds.
          schema:
            type: integer
            minimum: 0
        RateLimit-Policy:
          description: IETF HTTPAPI structured quota policy (work in progress).
          schema:
            type: string
        RateLimit:
          description: >-
            IETF HTTPAPI structured remaining quota and reset delay (work in
            progress).
          schema:
            type: string
    ServiceUnavailable:
      description: Service unavailable
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ApiError'
      headers:
        RateLimit-Limit:
          description: Quota in requests for the active window.
          schema:
            type: integer
            minimum: 0
        RateLimit-Remaining:
          description: Remaining requests in the active window.
          schema:
            type: integer
            minimum: 0
        RateLimit-Reset:
          description: Reset delay in seconds (not a Unix timestamp).
          schema:
            type: integer
            minimum: 1
        X-RateLimit-Limit:
          schema:
            type: integer
            minimum: 0
        X-RateLimit-Remaining:
          schema:
            type: integer
            minimum: 0
        X-RateLimit-Reset:
          description: Legacy reset timestamp in Unix milliseconds.
          schema:
            type: integer
            minimum: 0
        RateLimit-Policy:
          description: IETF HTTPAPI structured quota policy (work in progress).
          schema:
            type: string
        RateLimit:
          description: >-
            IETF HTTPAPI structured remaining quota and reset delay (work in
            progress).
          schema:
            type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: EvalGate API key
      description: >-
        Organization-scoped EvalGate API key. Discover the supported agent
        scopes at /.well-known/oauth-protected-resource. Per-operation grants
        are listed in x-evalgate-required-scopes; OpenAPI bearer security
        requirement arrays remain empty as required for non-OAuth schemes.
      x-evalgate-scopes-supported:
        - eval:read
        - eval:write
        - objectives:read
        - objectives:write
        - runs:read
        - runs:write
        - traces:read
        - traces:write
        - exports:download
        - reports:write
        - prompt:publish
        - scorer:publish
        - red_team:read
        - red_team:run
        - red_team:approve
        - docs:read
        - agent:read
        - agent:execute
        - resources:read
        - resources:write
        - contexts:read
        - contexts:write
        - observations:write
        - checks:read
        - checks:run
        - standards:read
        - standards:write
        - standards:approve
        - grants:read
        - grants:write
        - admin:keys
        - admin:workspace
        - admin:org
      x-evalgate-protected-resource-metadata: https://www.evalgate.com/.well-known/oauth-protected-resource

````

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