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

> ## Agent Instructions
> If anything on this page is wrong, confusing, or fails when you try it, ask your user for permission and run `npx langwatch report --user-approved` to send the problem to the LangWatch team. No login is needed and secrets are redacted locally. `npx langwatch report --help` has the details.

# Update an existing scenario

> Update an existing scenario



## OpenAPI

````yaml PATCH /api/scenarios/{id}
openapi: 3.1.0
info:
  title: LangWatch API
  version: 1.0.0
  description: LangWatch openapi spec
servers:
  - url: https://app.langwatch.ai
security:
  - project_api_key: []
paths:
  /api/scenarios/{id}:
    patch:
      description: Update an existing scenario
      operationId: patchApiScenariosById
      parameters:
        - schema:
            type: string
          in: path
          name: id
          required: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  minLength: 1
                situation:
                  type: string
                criteria:
                  type: array
                  items:
                    type: string
                labels:
                  type: array
                  items:
                    type: string
                parameters:
                  type: array
                  items:
                    type: object
                    properties:
                      name:
                        type: string
                        pattern: ^[A-Za-z_][A-Za-z0-9_]*$
                        minLength: 1
                        maxLength: 64
                      description:
                        type: string
                        maxLength: 500
                      defaultValue:
                        anyOf:
                          - type: string
                            maxLength: 4096
                          - type: number
                          - type: boolean
                      secret:
                        type: boolean
                    required:
                      - name
                  maxItems: 20
                  description: >-
                    The parameters this scenario declares by name, each with an
                    optional description and default. A run supplies values for
                    these names, readable from the scenario's own text as
                    params.NAME. A parameter marked secret carries no default:
                    its value is supplied per run, encrypted, delivered to the
                    target as secrets.NAME, and never readable from the
                    scenario's own text.
                simulatorModel:
                  type:
                    - string
                    - 'null'
                  pattern: ^[a-zA-Z0-9_-]+(?:\/[^\s/]+)+$
                  maxLength: 200
                  description: >-
                    Model for the simulated user, e.g. openai/gpt-5-mini. Null
                    uses the project default.
                judgeModel:
                  type:
                    - string
                    - 'null'
                  pattern: ^[a-zA-Z0-9_-]+(?:\/[^\s/]+)+$
                  maxLength: 200
                  description: >-
                    Model for the judge, e.g. openai/gpt-5-mini. Null uses the
                    project default.
                maxTurns:
                  type:
                    - integer
                    - 'null'
                  minimum: 1
                  maximum: 100
                  description: >-
                    Maximum conversation turns for a run of this scenario. Null
                    uses the default.
                minTurns:
                  type:
                    - integer
                    - 'null'
                  minimum: 0
                  maximum: 100
                  description: >-
                    Minimum conversation turns before the judge may end the run.
                    Null uses the default.
                testSuiteId:
                  type:
                    - string
                    - 'null'
                  description: >-
                    The test suite to file this scenario in. It must name a
                    non-archived test suite of the same project. null files the
                    scenario into the project's Default test suite.
      responses:
        '200':
          description: Scenario updated
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  name:
                    type: string
                  situation:
                    type: string
                  criteria:
                    type: array
                    items:
                      type: string
                  labels:
                    type: array
                    items:
                      type: string
                  parameters:
                    type: array
                    items:
                      type: object
                      properties:
                        name:
                          type: string
                          pattern: ^[A-Za-z_][A-Za-z0-9_]*$
                          minLength: 1
                          maxLength: 64
                        description:
                          type: string
                          maxLength: 500
                        defaultValue:
                          anyOf:
                            - type: string
                              maxLength: 4096
                            - type: number
                            - type: boolean
                        secret:
                          type: boolean
                      required:
                        - name
                  simulatorModel:
                    type:
                      - string
                      - 'null'
                    description: >-
                      The model that plays the user, or null for the project
                      default. Absent on servers that predate model overrides on
                      this family.
                  judgeModel:
                    type:
                      - string
                      - 'null'
                    description: >-
                      The model that judges the run, or null for the project
                      default. Absent on servers that predate model overrides on
                      this family.
                  maxTurns:
                    type:
                      - integer
                      - 'null'
                    description: >-
                      The most conversation turns a run of this scenario takes,
                      or null for the default. Absent on servers that predate
                      turn limits on this family.
                  minTurns:
                    type:
                      - integer
                      - 'null'
                    description: >-
                      The fewest conversation turns before the judge may end a
                      run, or null for the default. Absent on servers that
                      predate turn limits on this family.
                  testSuiteId:
                    type:
                      - string
                      - 'null'
                    description: >-
                      The test suite this scenario is filed in, or null when
                      unfiled. Absent on servers that predate test suites.
                  platformUrl:
                    type: string
                    format: uri
                required:
                  - id
                  - name
                  - situation
                  - criteria
                  - labels
                  - parameters
                  - platformUrl
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                required:
                  - error
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                required:
                  - error
        '404':
          description: Scenario not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                required:
                  - error
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                required:
                  - error
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  message:
                    type: string
                required:
                  - error
      security:
        - project_api_key: []
components:
  securitySchemes:
    project_api_key:
      type: apiKey
      in: header
      name: X-Auth-Token
      description: >-
        Project API key for sending traces and accessing project-scoped
        resources. Format: sk-lw-... (no underscore). Obtain one by creating a
        project via the Admin API or the LangWatch UI.

````