Evaluators

Start customer-driven (API chat) evaluator runs

Changed on

API CHAT RUN (pull mode): open one or more chat conversations that YOU drive turn-by-turn over REST — Cekura plays the simulated user, you play the agent under test. No agent connection is dialed; there is no server-side conversation loop, so a conversation can span minutes or up to an hour with turns arbitrarily far apart.

Run-count: total conversations = len(scenarios) × frequency.

Driving each run (the response result.runs[].id are the run IDs):

  1. If the scenario has a first message, the simulated user speaks first — read it from the run transcript. Otherwise you speak first.
  2. POST /runs/{run_id}/chat/ with your agent's message → returns a turn_id.
  3. Poll GET /runs/{run_id}/chat/{turn_id}/ until status is ready to read the reply.
  4. Repeat until ended is true, or call POST /runs/{run_id}/end-chat/.

timeout is the overall run timeout: each conversation is finalized and scored automatically once it elapses (defaults to the project's duration, capped at 1 hour).

post/test_framework/v1/scenarios/run_scenarios_api_chat/

Request

  • Base URL
    https://api.cekura.ai
  • URL
    https://api.cekura.ai/test_framework/v1/scenarios/run_scenarios_api_chat/
  • Auth
    • API key in header X-CEKURA-API-KEY
    • or HTTP bearer
    • or HTTP bearer

Request body

agent_idinteger

ID of the agent to run evaluators for

assistant_idstring

Alternative to agent ID - the assistant ID to use for this scenario Example: "asst_1234567890"

namestring

Label text for result

scenariosinteger[]

List of evaluator IDs to run. Either scenarios, tags, or folder_path must be provided. Runs start in the order given. Example: [11, 22, 33]

To run evaluators by tag or folder, use the tags or folder_path fields instead.

tagsstring[]

List of tags to filter evaluators to run. Either evaluators or tags must be provided. Example: ["tag1", "tag2", "tag3"]

folder_pathstring

Dot-separated folder path to select evaluators from (e.g. "Sales.Inbound"). Mutually exclusive with scenarios and tags. Requires project_id.

project_idinteger

Project ID. Required when using folder_path (or when passing a folder path string via scenarios). Example: 1376

frequencyinteger

The number of times each evaluator will run. Each repeat runs the whole list in order before the next one starts (A, B, A, B), rather than grouping repeats of one evaluator. Example: 1

personality_idsinteger[] nullable

Personality IDs to override for this run. Defaults to each scenario's personality.

test_profile_idsinteger[] nullable

Test-profile IDs to override for this run. Defaults to each scenario's test profile.

timeoutinteger nullable

Overall run timeout in seconds — the whole conversation's max lifetime (NOT a per-message timeout). When it elapses the run is finalized and scored automatically. Defaults to the project's configured duration. Capped at 3600 (1 hour).

agent_version_idstring

Run against a stored version of the agent instead of the agent as it is live. Cekura makes a private copy of the agent in your provider account, puts that version's prompt on it, and runs against the copy — voice, model and tools stay as the agent is configured now, and the live agent is never changed. Accepts the version label shown in the agent's version history (v12, or p1 for a version an improvement run proposed) or its numeric history_id. List them with GET /test_framework/v1/aiagents/{id}/history/; a version is usable when its is_runnable is true. Available for VAPI, Retell, ElevenLabs and Bland agents that are outbound and have a single prompt. Example: "v12"

Response

idinteger

Unique identifier for the Result Example: 123

namestring required

Name of the Result Example: "Test Result 1"

agentinteger

ID of the AI agent that was tested Example: 123

agent_inboundboolean

Whether the agent is configured for inbound calls (true) or outbound calls (false) Example: true or false

status'running' | 'completed' | 'failed' | 'pending' | 'in_progress' | 'evaluating' | 'in_queue' | 'timeout' | 'cancelled' | 'scaling_up'

Current status of the result

  • running - Running
  • completed - Completed
  • failed - Failed
  • pending - Pending
  • in_progress - In Progress
  • evaluating - Evaluating
  • in_queue - In Queue
  • timeout - Timeout
  • cancelled - Cancelled
  • scaling_up - Scaling Up
success_ratenumber double

Percentage of runs that passed, 0 to 100

run_as_textboolean

Whether this test was run in text mode instead of voice mode Example: true or false

is_cronjobstring

Whether this result was created by a scheduled cronjob Example: true or false

runsobject

Run summaries for this result. For full run data including transcripts and metric scores, fetch the result detail endpoint — there runs is a dict keyed by run ID.

created_atstring date-time

Timestamp when this test result was created Example: 2021-01-01 00:00:00

updated_atstring date-time

Timestamp when this test result was last updated

Changes