Skip to main content
PUT
JavaScript

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

planId
string<uuid>
required

The ID of the run plan to update

Body

application/json

Input for updating an existing simulation run plan

isHidden
boolean

Whether this plan is hidden from GET /v1/simulation/plan.

A run started without saveAsPlan creates a hidden plan to carry it. Send { "name": "...", "isHidden": false } to keep that configuration as a reusable plan, which is what the app does when you save a one-off run.

name
string

Name of the run plan

Minimum string length: 1
description
string

Description of the run plan

direction
enum<string>

Direction of the simulation (INBOUND or OUTBOUND)

Available options:
INBOUND,
OUTBOUND
iterationCount
integer

Number of iterations to run for each test case (1-10000)

Required range: 1 <= x <= 10000
maxConcurrentJobs
integer

Maximum number of concurrent simulation jobs

Required range: x >= 1
maxSimulationDurationSeconds
integer

Maximum duration in seconds for each simulation

Required range: x >= 1
silenceTimeoutSeconds
integer

Timeout in seconds for silence detection

Required range: x >= 1
maxNoResponseRetries
integer

How many more times to run a test case when the agent under test never responds: it never speaks on a call or never replies in a chat (0-10). 0 turns retries off. Failed checks and failures on Roark’s side are never retried.

Each retry is a separate attempt, billed like any other, so a plan retrying N times can place up to N + 1 calls per test case. Every silent attempt stays on the run with its own call; the run settles once each test case has a final attempt, and the agent never spoke verdict is judged on each test case’s last attempt.

Required range: 0 <= x <= 10
noResponseRetryBackoffSeconds
integer

Seconds a retry waits before it dials (30-600). Only used when maxNoResponseRetries is above 0.

Required range: 30 <= x <= 600
endCallPhrases
string[]

Phrases that trigger end of call. Empty array disables the feature.

endCallReasons
string[]

Semantic conditions that trigger end of call. The LLM evaluates the conversation against these conditions. Empty array disables the feature.

executionMode
enum<string>

Execution mode (PARALLEL or SEQUENTIAL)

Available options:
PARALLEL,
SEQUENTIAL_SAME_RUN_PLAN,
SEQUENTIAL_PROJECT
scenarios
object[]
deprecated

Deprecated: use flows instead. Replaces the scenarios on this run plan. Omit to leave them unchanged; send an empty array to detach them all, which is how a scenario-based plan is moved over to flows.

flows
object[]

Replaces the customer flows attached to this run plan. Omit to leave them unchanged; send an empty array to detach them all.

personas
object[]

Personas to include in this run plan

Minimum array length: 1
agentEndpoints
object[]

Agent endpoints to include in this run plan

Minimum array length: 1
metrics
object[]

Metric definitions to include in this run plan. Reference each by id (UUID) or slug.

Minimum array length: 1
enrichWithLiveConversation
boolean

Whether to merge the customer's own live recording into each simulation of this plan.

includeFlowMetrics
boolean

Whether to also collect each attached flow's own metrics, on top of this plan's list.

includeAutomaticMetrics
boolean

Whether to let the run add metrics by itself off the attached flows. See POST /v1/simulation/plan.

comparisonProperty
enum<string> | null

The property this plan investigates. Send null to clear the comparison; omit the field to leave it unchanged. See POST /v1/simulation/plan.

The pair moves together. Sending comparisonProperty without comparisonBaseline keeps the stored baseline when the property is unchanged and the baseline is still one of the values being run. Otherwise it becomes the new property's norm, or null when that norm is not being run either, because a baseline is a value of one specific property.

Available options:
ACCENT,
AGE,
BACKGROUND_NOISE,
BACKGROUND_NOISE_VOLUME,
BASE_EMOTION,
CONFIRMATION_STYLE,
GENDER,
INTENT_CLARITY,
LANGUAGE,
INTERRUPTION,
MEMORY_RELIABILITY,
RESPONSE_TIMING,
SPEECH_CLARITY,
SPEECH_PACE
comparisonBaseline
string | null

The reference value, shown first in the results. See POST /v1/simulation/plan.

A real value cannot be sent on its own: the property it belongs to decides which values are legal, and an omitted property means "leave unchanged", which this endpoint cannot check a baseline against. Send comparisonProperty with it, or get a 400.

null on its own IS allowed, and clears just the baseline while leaving the property set. Nothing needs validating when clearing, and a property with no baseline is a real state: the report falls back to that property's own norm, and GENDER has no norm to fall back to.

comparisonValues
(string | object)[]

The arms to run. See POST /v1/simulation/plan.

Omitting it keeps the arms the plan already has, pins included, so an edit that only renames the plan never widens a sweep you deliberately narrowed, and never multiplies what it costs. Send it with comparisonProperty and flows, which the arms are rebuilt from.

Minimum array length: 1

A value of comparisonProperty, run as its plain arm.

Minimum string length: 1
Example:

Response

The updated run plan

data
object
required

A simulation run plan defining the test matrix