Skip to content
TriedDocs
Testing

Create batch test

Run a set of test cases against an agent with a simulated caller and a pass or fail judge.

POSThttps://api.tried.com.au/create-batch-test

Needs keys Starts a batch test and returns at once. Each test case becomes a test run. The runs execute one after another in the background: a simulated caller talks to the agent through the same engine as the Test LLM playground, then a judge decides pass or fail against the test case's success_criteria. Poll Get batch test for results.

OpenAI key

With an OpenAI key, the simulated caller is played by the test case's llm_model and the judge is gpt-5.6-terra. Without a key, both use the mock behaviour described in Mock mode.

Request#

Field Type Required Description
agent_id string Yes Agent to test. Must exist in the workspace.
test_case_definition_ids array of strings Yes 1 to 50 test case IDs. Each must belong to agent_id. Runs execute in this order.

Example request#

curl -X POST https://api.tried.com.au/create-batch-test \
  -H "Authorization: Bearer $TRIED_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "agent_id": "agent_3e4f5a6b7c8d9e0f1a2b3c4d",
    "test_case_definition_ids": ["test_case_8f7e6d5c4b3a29180f1e2d3c", "test_case_1a2b3c4d5e6f708192a3b4c5"]
  }'
const res = await fetch("https://api.tried.com.au/create-batch-test", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.TRIED_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    agent_id: "agent_3e4f5a6b7c8d9e0f1a2b3c4d",
    test_case_definition_ids: ["test_case_8f7e6d5c4b3a29180f1e2d3c", "test_case_1a2b3c4d5e6f708192a3b4c5"],
  }),
});
const batchTest = await res.json();
import os, requests

res = requests.post(
    "https://api.tried.com.au/create-batch-test",
    headers={"Authorization": f"Bearer {os.environ['TRIED_API_KEY']}"},
    json={
        "agent_id": "agent_3e4f5a6b7c8d9e0f1a2b3c4d",
        "test_case_definition_ids": ["test_case_8f7e6d5c4b3a29180f1e2d3c", "test_case_1a2b3c4d5e6f708192a3b4c5"],
    },
)
batch_test = res.json()

Response#

201 Created

{
  "batch_test_id": "batch_test_2c3d4e5f6a7b8c9d0e1f2a3b",
  "agent_id": "agent_3e4f5a6b7c8d9e0f1a2b3c4d",
  "status": "in_progress",
  "total_count": 2,
  "pass_count": 0,
  "fail_count": 0,
  "error_count": 0,
  "created_timestamp": 1760850000000,
  "completed_timestamp": null
}
Field Type Description
batch_test_id string Batch test ID, prefix batch_test_.
status string in_progress, then complete when every run has finished.
total_count integer Number of runs.
pass_count, fail_count, error_count integer Runs that passed, failed, or errored.
completed_timestamp integer or null Unix ms when the last run finished.

How a run ends#

A conversation stops when the simulated caller ends it, the agent ends the call, the mock script runs out, it reaches 400 utterances (agent and user turns), or it runs for 10 minutes. The judge then grades the transcript. A run that throws (for example, the agent fails to respond) gets status error with an error message. Tool calls are answered from the test case's tool_mocks.

Mock mode#

Without an OpenAI key:

  • Simulated caller. The user_prompt is split into sentences, turned into first person ("You are Sam" becomes "I am Sam"), and spoken one sentence per turn, followed by "Thanks, that's all. Goodbye."
  • Judge. If success_criteria has phrases in quotes, the run passes only when every quoted phrase appears in the transcript. Otherwise it picks the significant words of the criteria and passes when at least 60% of them appear. Criteria with no checkable words pass. Each explanation starts with Mock judge:.

Errors#

Status When
400 Body fails validation, for example test_case_definition_ids: Array must contain at most 50 element(s).
401 Missing or invalid API key.
403 The key's IP allowlist or scopes reject the request, or the caller has the read-only member role. This route needs the agents scope.
404 Agent <agent_id> not found, or Test case <id> not found for agent <agent_id>.
429 Rate limit exceeded. See Rate limits.

See Errors for the body format.

Retell compatibility#

Same path and method as Retell, with a different body and response. Tried takes an agent_id instead of a response engine, accepts up to 50 test cases, and returns batch_test_id with created_timestamp and completed_timestamp.