---
title: "Update Config Test"
method: PUT
path: "/config-tests/{project_id}/{config_test_id}"
tags: ["Config Tests"]
---

# Update Config Test

`PUT /config-tests/{project_id}/{config_test_id}`

## Request

- Base URL: `https://api.puppeteerai.com`
- URL: `https://api.puppeteerai.com/config-tests/{project_id}/{config_test_id}`
- Auth: none declared. Required headers: `Authorization`

Update a test configuration with encrypted secrets.

## Path parameters

- `project_id` string, required
- `config_test_id` string, required

## Headers

- `Authorization` string, required

## Request body

- UpdateConfigTestInput: Request model for updating an existing config test.
  - `is_voice` boolean: Whether to run in voice mode
  - `call_direction` 'inbound' | 'outbound', nullable: Fake the call direction for voice runs so configs branching on <<call_direction>> can be tested
  - `name` string, required: Human-readable label for the config test
  - `ai_prompt` string, required: Persona description (AI prompt) for the simulated user
  - `user_messages` string[]: Scripted user messages to send in the conversation
  - `turn_count` integer, required: Maximum number of turns (AI responses) per conversation (max 100)
  - `json_data` object, nullable: JSON payload for thread initialization
  - `trigger_data` object, nullable: Maps a trigger class name to the payload delivered to its check() when the test runs, e.g. {'ReceivedHealthieWebhookTrigger': {...}}.
  - `expected_analysis_results` object: Assertions extracted from the transcript after the conversation runs. Shape: {variable_name: {type, prompt, expected_result, default_value, exclude_from_analysis}}
  - `expected_scheduled_call` object, nullable: Voice-only assertion that a scheduled call was booked. Shape: {match_type: 'any' | 'within_hours' | 'date' | 'exact', ...match-specific fields}
  - `mock_responses` object, nullable: Mock responses for HTTP services during the test run
  - `message_delay` number, nullable: Delay in seconds between simulation messages (default 2.0, 0 = no delay)
  - `persona_model` string, nullable: Model to use for persona message generation (default: gpt-5.6-luna)
  - `env_variables` object, nullable: Environment variable overrides for this test run
  - `env_secrets` object, nullable: Environment secret overrides for this test run
  - `retell_account_id` string, nullable: Retell account to use for voice tests; required when the project has multiple voice integrations
  - `gates_production` boolean, nullable: When true, this test must pass before production deploys are applied

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/getpuppeteer/apis/puppeteer-core-api.md) - [All operations](https://skmtc.dev/getpuppeteer/apis/puppeteer-core-api/llms.txt) - [OpenAPI document](https://skmtc.dev/getpuppeteer/apis/puppeteer-core-api/revisions/94b4e928b42f?raw)
