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

# Validate Scenarios V2 JSON

> Check a spec against the agent it targets: metric slugs, personalities, test profiles, channel support and every tag. Returns the plan a run would follow, with case count and estimated cost. Creates nothing and places no calls. Use this before committing a suite or opening a pull request; use `scenarios_run_json` to execute one.



## OpenAPI

````yaml post /test_framework/v2/scenarios/validate_scenarios_json/
openapi: 3.1.0
info:
  title: Cekura API
  version: v1
  description: >-
    Complete API documentation for the Cekura platform. This API provides
    endpoints for testing, observing, and evaluating AI voice agents — including
    managing agents, running evaluators, defining metrics, and analyzing call
    quality.
servers:
  - url: https://api.cekura.ai
security: []
paths:
  /test_framework/v2/scenarios/validate_scenarios_json/:
    post:
      tags:
        - test_framework
      summary: Validate a JSON test-suite spec without running it
      description: >-
        Check a spec against the agent it targets: metric slugs, personalities,
        test profiles, channel support and every tag. Returns the plan a run
        would follow, with case count and estimated cost. Creates nothing and
        places no calls. Use this before committing a suite or opening a pull
        request; use `scenarios_run_json` to execute one.
      operationId: scenarios-validate-json_3
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TestSuiteSpecUpload'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/TestSuiteSpecUpload'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/TestSuiteSpecUpload'
      responses:
        '200':
          description: '{dry_run, valid, plan}'
        '400':
          content:
            application/json:
              schema:
                type: object
                properties:
                  field_name:
                    type: array
                    items:
                      type: string
          description: ''
      security:
        - api_key: []
        - oauth2: []
        - supabase_session: []
components:
  schemas:
    TestSuiteSpecUpload:
      type: object
      description: >-
        Accepts a spec as a JSON body or an uploaded file.


        CI posts JSON directly; the dashboard uploads the same file the customer
        has

        in their repo. Both land in ``spec``.
      properties:
        spec:
          description: The test-suite spec. Use this when posting JSON directly.
        file:
          type: string
          format: uri
          description: A .json spec file. Use this instead of 'spec' for uploads.
        agent_id:
          type: integer
          description: >-
            Agent to test. Overrides 'agent_id' in the spec, letting one spec
            file run against several environments.
        name:
          type: string
          description: Label for this run. Defaults to the spec's suite name.
          maxLength: 255
        channel:
          enum:
            - voice
            - text
            - elevenlabs
            - livekit_v2
            - pipecat_v2
          type: string
          x-spec-enum-id: 3bf42909f82c4c98
          description: >-
            How to reach the agent: 'voice' for a phone call (the default),
            'text' for chat, 'elevenlabs' for an ElevenLabs WebRTC session, or
            'livekit_v2' or 'pipecat_v2' for their respective WebRTC sessions.


            * `voice` - voice

            * `text` - text

            * `elevenlabs` - elevenlabs

            * `livekit_v2` - livekit_v2

            * `pipecat_v2` - pipecat_v2
        livekit_data:
          type: object
          additionalProperties: {}
          description: >-
            Optional LiveKit overrides. These apply only to this run and are not
            part of the portable test-suite spec.
        pipecat_data:
          type: object
          additionalProperties: {}
          description: >-
            Optional Pipecat Cloud overrides. These apply only to this run and
            are not part of the portable test-suite spec.
  securitySchemes:
    api_key:
      type: apiKey
      in: header
      name: X-CEKURA-API-KEY
      description: >-
        API Key Authentication. It should be included in the header of each
        request.
    oauth2:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: OAuth access token issued by Cekura for connected apps.
    supabase_session:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Cekura dashboard session token. Not a customer API credential.

````