Simulations
List simulation runs, newest first by default.
Filters combine with AND. The list omits each run's objective, request and scenarios; get-simulation-run returns them.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Page order: -created_at (the default, newest first) or +created_at.
[]20Runs of this saved case: runs tagged case:<case_id>.
Runs of this suite: runs tagged suite:<suite_id>.
Runs that carry every one of these tags.
[]Successful Response
Runs that match the filters, across every page.
Validation Error
GET /v1/{workspace_id}/simulations/runs HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"runs": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"branch_name": "text",
"status": "running",
"tags": [
"text"
],
"total_sessions": 1,
"total_turns": 1,
"error": "text",
"created_at": "text",
"completed_at": "text"
}
],
"has_more": true,
"continuation_token": null,
"total": 1
}Create a simulation coverage run with an optional Lakebase branch.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
Validation Error
POST /v1/{workspace_id}/simulations/runs HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 90
{
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"branch_name": "text",
"tags": [
"text"
]
}{
"id": "123e4567-e89b-12d3-a456-426614174000",
"workspace_id": "123e4567-e89b-12d3-a456-426614174000",
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"branch_name": "text",
"status": "text",
"tags": [
"text"
]
}List first-class simulation suites.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
GET /v1/{workspace_id}/simulations/suites HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
Successful Response
{
"suites": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"workspace_id": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"description": "",
"case_ids": [
"123e4567-e89b-12d3-a456-426614174000"
],
"required_tags": [
"text"
],
"tags": [
"text"
],
"metadata": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"case_count": 1,
"created_by": "123e4567-e89b-12d3-a456-426614174000",
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z"
}
]
}Create a reusable suite definition for saved simulation cases.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
""Successful Response
HTTP response shape for first-class simulation suites.
""Validation Error
POST /v1/{workspace_id}/simulations/suites HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 175
{
"name": "text",
"description": "",
"case_ids": [
"123e4567-e89b-12d3-a456-426614174000"
],
"required_tags": [
"text"
],
"tags": [
"text"
],
"metadata": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}{
"id": "123e4567-e89b-12d3-a456-426614174000",
"workspace_id": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"description": "",
"case_ids": [
"123e4567-e89b-12d3-a456-426614174000"
],
"required_tags": [
"text"
],
"tags": [
"text"
],
"metadata": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"case_count": 1,
"created_by": "123e4567-e89b-12d3-a456-426614174000",
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z"
}API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
HTTP response shape for first-class simulation suites.
""Validation Error
GET /v1/{workspace_id}/simulations/suites/{suite_id} HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"workspace_id": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"description": "",
"case_ids": [
"123e4567-e89b-12d3-a456-426614174000"
],
"required_tags": [
"text"
],
"tags": [
"text"
],
"metadata": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"case_count": 1,
"created_by": "123e4567-e89b-12d3-a456-426614174000",
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z"
}API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
No content
Validation Error
DELETE /v1/{workspace_id}/simulations/suites/{suite_id} HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
HTTP response shape for first-class simulation suites.
""Validation Error
PATCH /v1/{workspace_id}/simulations/suites/{suite_id} HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 179
{
"name": "text",
"description": "text",
"case_ids": [
"123e4567-e89b-12d3-a456-426614174000"
],
"required_tags": [
"text"
],
"tags": [
"text"
],
"metadata": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}{
"id": "123e4567-e89b-12d3-a456-426614174000",
"workspace_id": "123e4567-e89b-12d3-a456-426614174000",
"name": "text",
"description": "",
"case_ids": [
"123e4567-e89b-12d3-a456-426614174000"
],
"required_tags": [
"text"
],
"tags": [
"text"
],
"metadata": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"case_count": 1,
"created_by": "123e4567-e89b-12d3-a456-426614174000",
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z"
}List durable suite-run groups for a first-class suite.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
20Successful Response
Validation Error
GET /v1/{workspace_id}/simulations/suites/{suite_id}/runs HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"suite_id": "123e4567-e89b-12d3-a456-426614174000",
"runs": [
{
"suite_run_id": "123e4567-e89b-12d3-a456-426614174000",
"suite_id": "123e4567-e89b-12d3-a456-426614174000",
"run_ids": [
"123e4567-e89b-12d3-a456-426614174000"
],
"total_runs": 1,
"expected_case_count": 1,
"status": "running",
"status_counts": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"case_ids": [
"123e4567-e89b-12d3-a456-426614174000"
],
"total_sessions": 0,
"total_turns": 0,
"tags": [
"text"
],
"created_at": "text",
"completed_at": "text",
"result_pointer": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}
]
}List durable simulation cases for case-library inspection.
total counts every case that matches service_id, tags and search.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
50Sort axes as +field or -field, applied left to right. Newest created first when empty.
[]Case-insensitive substring match on the case description.
Successful Response
Cases matching the filters and search, across every page.
Validation Error
GET /v1/{workspace_id}/simulations/cases HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"items": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"workspace_id": "123e4567-e89b-12d3-a456-426614174000",
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"description": "text",
"persona": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"scenario": {
"instructions": "text",
"initial_message": "",
"temperament": "text"
},
"grounding": {
"patient_entity_id": "123e4567-e89b-12d3-a456-426614174000"
},
"evals": [
{
"type": "text",
"metric_key": "text",
"expected": null,
"params": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"weight": 1
}
],
"tags": [
"text"
],
"metadata": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"created_by": "123e4567-e89b-12d3-a456-426614174000",
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z"
}
],
"total": 1,
"has_more": true,
"continuation_token": null
}Create durable simulation cases for an internal benchmark suite.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
Validation Error
POST /v1/{workspace_id}/simulations/cases HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 472
{
"cases": [
{
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"description": "text",
"persona": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"scenario": {
"instructions": "text",
"initial_message": "",
"temperament": "text"
},
"grounding": {
"patient_entity_id": "123e4567-e89b-12d3-a456-426614174000"
},
"evals": [
{
"type": "text",
"metric_key": "text",
"expected": null,
"params": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"weight": 1
}
],
"tags": [
"text"
],
"metadata": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}
]
}{
"cases": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"workspace_id": "123e4567-e89b-12d3-a456-426614174000",
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"description": "text",
"persona": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"scenario": {
"instructions": "text",
"initial_message": "",
"temperament": "text"
},
"grounding": {
"patient_entity_id": "123e4567-e89b-12d3-a456-426614174000"
},
"evals": [
{
"type": "text",
"metric_key": "text",
"expected": null,
"params": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"weight": 1
}
],
"tags": [
"text"
],
"metadata": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"created_by": "123e4567-e89b-12d3-a456-426614174000",
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z"
}
]
}List the cases a suite selects, one page per call.
A suite selects its explicit case_ids plus every case that carries all of its required_tags, so explicit, tag-defined and hybrid suites all resolve here. Without search, total equals the suite's case_count.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
50Sort axes as +field or -field, applied left to right. Newest created first when empty.
[]Case-insensitive substring match on the case description.
Successful Response
Cases matching the filters and search, across every page.
Simulation suite not found
Validation Error
GET /v1/{workspace_id}/simulations/suites/{suite_id}/cases HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"items": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"workspace_id": "123e4567-e89b-12d3-a456-426614174000",
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"description": "text",
"persona": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"scenario": {
"instructions": "text",
"initial_message": "",
"temperament": "text"
},
"grounding": {
"patient_entity_id": "123e4567-e89b-12d3-a456-426614174000"
},
"evals": [
{
"type": "text",
"metric_key": "text",
"expected": null,
"params": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"weight": 1
}
],
"tags": [
"text"
],
"metadata": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"created_by": "123e4567-e89b-12d3-a456-426614174000",
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z"
}
],
"total": 1,
"has_more": true,
"continuation_token": null
}Fetch one durable simulation case for case-library inspection.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
HTTP response shape for durable simulation cases.
Simulation case not found
Validation Error
GET /v1/{workspace_id}/simulations/cases/{case_id} HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"workspace_id": "123e4567-e89b-12d3-a456-426614174000",
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"description": "text",
"persona": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"scenario": {
"instructions": "text",
"initial_message": "",
"temperament": "text"
},
"grounding": {
"patient_entity_id": "123e4567-e89b-12d3-a456-426614174000"
},
"evals": [
{
"type": "text",
"metric_key": "text",
"expected": null,
"params": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"weight": 1
}
],
"tags": [
"text"
],
"metadata": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"created_by": "123e4567-e89b-12d3-a456-426614174000",
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z"
}Delete one durable simulation case and remove it from every suite that lists it.
The case row and its id in the workspace's suites go in one transaction, so no suite keeps an id that resolves to nothing. A suite listing the case doesn't block the delete (no 409): a suite selects cases from the library, and the audit event records which suites lost the case.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
No content
Simulation case not found
Validation Error
DELETE /v1/{workspace_id}/simulations/cases/{case_id} HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
No content
Update editable fields on one durable simulation case.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Partial update for one durable simulation case.
Mirrors the nested CreateSimulationCaseItem shape with every field
optional so model_dump(exclude_unset=True) only emits the keys the
caller actually sent. Reuses the same nested submodels as create so the
durable fields (scenario, grounding, evals, metadata) can
be PATCHed. extra="forbid" rejects the retired pre-V192 flat fields
(scenario_instructions, initial_message, temperament, fixtures,
constraints, target_spec, assertions, provenance) with 422 instead of
silently dropping them.
Successful Response
HTTP response shape for durable simulation cases.
Simulation case not found
Validation Error
PATCH /v1/{workspace_id}/simulations/cases/{case_id} HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 460
{
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"persona": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"description": "text",
"scenario": {
"instructions": "text",
"initial_message": "",
"temperament": "text"
},
"grounding": {
"patient_entity_id": "123e4567-e89b-12d3-a456-426614174000"
},
"evals": [
{
"type": "text",
"metric_key": "text",
"expected": null,
"params": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"weight": 1
}
],
"tags": [
"text"
],
"metadata": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}{
"id": "123e4567-e89b-12d3-a456-426614174000",
"workspace_id": "123e4567-e89b-12d3-a456-426614174000",
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"description": "text",
"persona": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"scenario": {
"instructions": "text",
"initial_message": "",
"temperament": "text"
},
"grounding": {
"patient_entity_id": "123e4567-e89b-12d3-a456-426614174000"
},
"evals": [
{
"type": "text",
"metric_key": "text",
"expected": null,
"params": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"weight": 1
}
],
"tags": [
"text"
],
"metadata": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"created_by": "123e4567-e89b-12d3-a456-426614174000",
"created_at": "2026-01-01T00:00:00.000Z",
"updated_at": "2026-01-01T00:00:00.000Z"
}Fetch a single run including objective / bridge_request / scenarios.
Use the bridge_request payload to re-POST /bridge and replay the run.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
Full run payload — used by GET /runs/{run_id} for replay flows.
00pendingPossible values: 00000Validation Error
GET /v1/{workspace_id}/simulations/runs/{run_id} HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"branch_name": "text",
"status": "running",
"error": "text",
"tags": [
"text"
],
"total_sessions": 0,
"total_turns": 0,
"objective": "text",
"bridge_request": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"scenarios": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"snapshot": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"total_scenarios_requested": 1,
"created_at": "text",
"completed_at": "text",
"metric_status": "pending",
"metric_result_count": 0,
"metrics_last_checked_at": "2026-01-01T00:00:00.000Z",
"eval_results": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"run_id": "123e4567-e89b-12d3-a456-426614174000",
"case_id": "123e4567-e89b-12d3-a456-426614174000",
"session_id": "text",
"eval_key": "text",
"eval_type": "assertion",
"assertion_kind": "text",
"metric_key": "text",
"status": "passed",
"passed": true,
"score": 1,
"expected": null,
"actual": null,
"rationale": "text",
"justification": "text",
"references": [
1
],
"details": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"definition": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"created_at": "text"
}
],
"eval_result_count": 0,
"eval_pass_count": 0,
"eval_fail_count": 0,
"eval_error_count": 0,
"checks": [
{
"source_type": "metric",
"key": "text",
"label": "text",
"value_type": "numeric",
"evaluation_method": "threshold",
"expected": null,
"actual": null,
"expected_display": "text",
"actual_display": "text",
"verdict": "passed",
"score": 1,
"rationale": "text",
"references": [
1
],
"run_id": "text",
"case_id": "text",
"session_id": "text",
"trace_id": "text"
}
]
}Aggregate recent graded (case/suite) runs into the Simulations overview: overall pass rate, per-metric trend series, and per-case / per-suite rollups (each with its per-conversation verdicts).
limit (1 to 50) bounds how many recent runs are read. One request replaces the console's former one-fetch-per-run fan-out.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
15Successful Response
Aggregated Simulations overview: one request in place of the console's former one-detail-fetch-per-run fan-out.
Validation Error
GET /v1/{workspace_id}/simulations/performance HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"overview": {
"overall_pass_rate": 1,
"evals_run": 0,
"error_count": 0,
"pending_count": 0,
"skipped_count": 0,
"needs_attention_count": 0,
"runs_analyzed": 0
},
"metrics": [
{
"metric_key": "text",
"label": "text",
"per_run": [
{
"at": "text",
"value": 1,
"passed": 0,
"measured": 0
}
],
"results": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"run_id": "123e4567-e89b-12d3-a456-426614174000",
"case_id": "123e4567-e89b-12d3-a456-426614174000",
"session_id": "text",
"eval_key": "text",
"eval_type": "assertion",
"assertion_kind": "text",
"metric_key": "text",
"status": "passed",
"passed": true,
"score": 1,
"expected": null,
"actual": null,
"rationale": "text",
"justification": "text",
"references": [
1
],
"details": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"definition": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"created_at": "text"
}
],
"checks": [
{
"source_type": "metric",
"key": "text",
"label": "text",
"value_type": "numeric",
"evaluation_method": "threshold",
"expected": null,
"actual": null,
"expected_display": "text",
"actual_display": "text",
"verdict": "passed",
"score": 1,
"rationale": "text",
"references": [
1
],
"run_id": "text",
"case_id": "text",
"session_id": "text",
"trace_id": "text"
}
]
}
],
"by_case": [
{
"case_id": "123e4567-e89b-12d3-a456-426614174000",
"case_name": "text",
"pass_rate": 1,
"passed": 0,
"failed": 0,
"error": 0,
"pending": 0,
"skipped": 0,
"measured": 0,
"latest_run_id": "123e4567-e89b-12d3-a456-426614174000",
"latest_run_at": "text",
"assertions": [
{
"eval_key": "text",
"eval_type": "assertion",
"passed": 0,
"failed": 0,
"error": 0,
"pending": 0,
"skipped": 0,
"pass_rate": 1,
"results": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"run_id": "123e4567-e89b-12d3-a456-426614174000",
"case_id": "123e4567-e89b-12d3-a456-426614174000",
"session_id": "text",
"eval_key": "text",
"eval_type": "assertion",
"assertion_kind": "text",
"metric_key": "text",
"status": "passed",
"passed": true,
"score": 1,
"expected": null,
"actual": null,
"rationale": "text",
"justification": "text",
"references": [
1
],
"details": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"definition": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"created_at": "text"
}
],
"checks": [
{
"source_type": "metric",
"key": "text",
"label": "text",
"value_type": "numeric",
"evaluation_method": "threshold",
"expected": null,
"actual": null,
"expected_display": "text",
"actual_display": "text",
"verdict": "passed",
"score": 1,
"rationale": "text",
"references": [
1
],
"run_id": "text",
"case_id": "text",
"session_id": "text",
"trace_id": "text"
}
]
}
]
}
],
"by_suite": [
{
"suite_id": "123e4567-e89b-12d3-a456-426614174000",
"suite_name": "text",
"pass_rate": 1,
"passed": 0,
"failed": 0,
"error": 0,
"pending": 0,
"skipped": 0,
"measured": 0,
"latest_run_at": "text",
"cases": [
{
"case_id": "123e4567-e89b-12d3-a456-426614174000",
"case_name": "text",
"pass_rate": 1,
"passed": 0,
"failed": 0,
"error": 0,
"pending": 0,
"skipped": 0,
"measured": 0,
"latest_run_id": "123e4567-e89b-12d3-a456-426614174000",
"latest_run_at": "text",
"assertions": [
{
"eval_key": "text",
"eval_type": "assertion",
"passed": 0,
"failed": 0,
"error": 0,
"pending": 0,
"skipped": 0,
"pass_rate": 1,
"results": [
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"run_id": "123e4567-e89b-12d3-a456-426614174000",
"case_id": "123e4567-e89b-12d3-a456-426614174000",
"session_id": "text",
"eval_key": "text",
"eval_type": "assertion",
"assertion_kind": "text",
"metric_key": "text",
"status": "passed",
"passed": true,
"score": 1,
"expected": null,
"actual": null,
"rationale": "text",
"justification": "text",
"references": [
1
],
"details": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"definition": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"created_at": "text"
}
],
"checks": [
{
"source_type": "metric",
"key": "text",
"label": "text",
"value_type": "numeric",
"evaluation_method": "threshold",
"expected": null,
"actual": null,
"expected_display": "text",
"actual_display": "text",
"verdict": "passed",
"score": 1,
"rationale": "text",
"references": [
1
],
"run_id": "text",
"case_id": "text",
"session_id": "text",
"trace_id": "text"
}
]
}
]
}
]
}
]
}Finish a running run: failed when error is set, otherwise completed.
A run finishes once. Completing a finished run returns 409 and leaves it as it was.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Failure reason. Set it to finish the run as failed.
Successful Response
Run not found
Run has already finished
Validation Error
POST /v1/{workspace_id}/simulations/runs/{run_id}/complete HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"status": "completed"
}Promote a run-less (interactive playground) session into a coverage run.
Interactive text sessions are created run-less, so fork — which requires a run_id — 404s on them. This creates a coverage run, binds the existing agent-engine session to it (adopt-run, a Valkey meta update — the session itself is not recreated), and writes the platform-api SimulationCoverageSession record that get_session_metadata returns, unblocking fork/score.
Idempotent: a session that already has a coverage record returns its existing run with already_bound=True.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
Result of binding a run-less session to a (newly created) coverage run.
The coverage run the session is now bound to
The promoted session id (unchanged)
True when the session was already run-scoped; the existing run is returned unchanged
Simulation session or configuration not found
Request validation or simulation configuration error
Simulation runtime error
Voice agent not reachable
POST /v1/{workspace_id}/simulations/sessions/{session_id}/promote HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"run_id": "123e4567-e89b-12d3-a456-426614174000",
"session_id": "text",
"already_bound": true
}Create a simulation session within a run. Proxies to agent-engine.
The run must be in the workspace (404 otherwise) and service_id must be the run's service (422 otherwise), both checked before agent-engine is called.
entity_id ownership: agent-engine's _resolve_caller queries the entity with workspace_id scoping — a workspace-A entity_id resolves to None in workspace-B, so no cross-tenant data is exposed.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Simulated caller phone number used to resolve patient context when entity_id is not provided (or does not match a row). Omitted/blank values are normalized to the sim-orchestrator sentinel, which yields no phone match and an empty caller context — same default the voice test-call WebSocket uses, so patient lookups resolve consistently across modalities.
Optional world entity UUID to bind caller context directly. Precedence rules: (1) when this resolves to a world entity in the workspace, it WINS — caller_id is not used for identity resolution, and the resolution provenance is entity_id_lookup; (2) when this is a well-formed UUID with no matching entity (stale, deleted, wrong workspace), the session falls back to phone lookup against caller_id (provenance phone_lookup) — no error is raised, the sim is survivable; (3) malformed UUIDs are rejected with HTTP 422 before the request reaches agent-engine. The supplied caller_id is still recorded on the active call and surfaced in the greeting metadata in case (1).
Successful Response
Run or simulation configuration not found
Request validation or simulation configuration error
Simulation runtime error
Voice agent not reachable
POST /v1/{workspace_id}/simulations/runs/{run_id}/sessions HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 160
{
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"branch_name": "text",
"tags": [
"text"
],
"caller_id": "text",
"entity_id": "123e4567-e89b-12d3-a456-426614174000"
}{
"session_id": "text",
"greeting": "text",
"is_terminal": true,
"snapshot": {
"current_state": {
"name": "text",
"type": "text",
"objective": "",
"actions": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"exit_conditions": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"action_guidelines": [
"text"
],
"boundary_constraints": [
"text"
],
"guardrails": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"tools": [
"text"
],
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"reachable_states": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"turn_policy": {
"barge_in_enabled": true,
"greeting_shield_s": 0,
"safety_response": "suspend_forward",
"context_strategy": "full",
"block_forward_call": false,
"block_forward_call_after_turns": -1
},
"conversation_history": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"states_visited": [
"text"
],
"state_transitions": [
[
"text"
]
],
"total_turns": 0,
"tools_called": [
"text"
],
"terminal_reached": false,
"context_graph_topology": [
{
"ANY_ADDITIONAL_PROPERTY": "text"
}
],
"terminal_state": "text",
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}Step the session in the path and auto-store the turn observation.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
One caller turn for the session named in the path.
Leave unset: the path names the session. A value that differs from the path returns 422.
Successful Response
Simulation session or configuration not found
Request validation or simulation configuration error
Simulation runtime error
Voice agent not reachable
POST /v1/{workspace_id}/simulations/sessions/{session_id}/step HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 71
{
"caller_text": "text",
"emotion": "text",
"valence": 1,
"session_id": "text"
}{
"observation": {
"state_before": "text",
"state_after": "text",
"state_changed": true,
"agent_text": "text",
"is_terminal": true,
"tools_called": [
"text"
],
"tool_call_details": [
{
"tool_name": "text",
"input": "",
"result": "",
"call_id": "",
"succeeded": true
}
],
"selected_action": "text",
"empathy_tier": 0,
"has_pause": false,
"engine_ms": 1,
"nav_ms": 1
},
"snapshot": {
"current_state": {
"name": "text",
"type": "text",
"objective": "",
"actions": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"exit_conditions": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"action_guidelines": [
"text"
],
"boundary_constraints": [
"text"
],
"guardrails": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"tools": [
"text"
],
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"reachable_states": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"turn_policy": {
"barge_in_enabled": true,
"greeting_shield_s": 0,
"safety_response": "suspend_forward",
"context_strategy": "full",
"block_forward_call": false,
"block_forward_call_after_turns": -1
},
"conversation_history": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"states_visited": [
"text"
],
"state_transitions": [
[
"text"
]
],
"total_turns": 0,
"tools_called": [
"text"
],
"terminal_reached": false,
"context_graph_topology": [
{
"ANY_ADDITIONAL_PROPERTY": "text"
}
],
"terminal_state": "text",
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}Fork a session into N branches — clone + step each alternative atomically.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
One branch per alternative, in request order.
The parent's turn count when it forked. Each branch's first turn is stored at the next index.
Simulation session or configuration not found
Request validation or simulation configuration error
Simulation runtime error
Voice agent not reachable
POST /v1/{workspace_id}/simulations/sessions/{session_id}/fork HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 70
{
"alternatives": [
{
"caller_text": "text",
"emotion": "text",
"valence": 1
}
]
}{
"parent_session_id": "text",
"fork_turn_index": 1,
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"branches": [
{
"session_id": "text",
"observation": {
"state_before": "text",
"state_after": "text",
"state_changed": true,
"agent_text": "text",
"is_terminal": true,
"tools_called": [
"text"
],
"tool_call_details": [
{
"tool_name": "text",
"input": "",
"result": "",
"call_id": "",
"succeeded": true
}
],
"selected_action": "text",
"empathy_tier": 0,
"has_pause": false,
"engine_ms": 1,
"nav_ms": 1,
"caller_text": "text"
},
"error": "text"
}
]
}ASI assigns a score to a completed simulation session.
404 when the workspace has no coverage session with this id, such as a run-less playground session that was never promoted.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
Simulation session not found
Validation Error
POST /v1/{workspace_id}/simulations/sessions/{session_id}/score HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 36
{
"score": 1,
"score_rationale": "text"
}{
"ANY_ADDITIONAL_PROPERTY": "text"
}Create a test conversation session (no coverage run required).
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Simulated caller phone number used to resolve patient context when entity_id is not provided (or does not match a row). Omitted/blank values are normalized to the sim-orchestrator sentinel, which yields no phone match and an empty caller context — same default the voice test-call WebSocket uses, so patient lookups resolve consistently across modalities.
Optional world entity UUID to bind caller context directly. Precedence rules: (1) when this resolves to a world entity in the workspace, it WINS — caller_id is not used for identity resolution, and the resolution provenance is entity_id_lookup; (2) when this is a well-formed UUID with no matching entity (stale, deleted, wrong workspace), the session falls back to phone lookup against caller_id (provenance phone_lookup) — no error is raised, the sim is survivable; (3) malformed UUIDs are rejected with HTTP 422 before the request reaches agent-engine. The supplied caller_id is still recorded on the active call and surfaced in the greeting metadata in case (1).
Successful Response
Simulation session or configuration not found
Request validation or simulation configuration error
Simulation runtime error
Voice agent not reachable
POST /v1/{workspace_id}/simulations/sessions HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 160
{
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"branch_name": "text",
"tags": [
"text"
],
"caller_id": "text",
"entity_id": "123e4567-e89b-12d3-a456-426614174000"
}{
"session_id": "text",
"greeting": "text",
"is_terminal": true,
"snapshot": {
"current_state": {
"name": "text",
"type": "text",
"objective": "",
"actions": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"exit_conditions": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"action_guidelines": [
"text"
],
"boundary_constraints": [
"text"
],
"guardrails": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"tools": [
"text"
],
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"reachable_states": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"turn_policy": {
"barge_in_enabled": true,
"greeting_shield_s": 0,
"safety_response": "suspend_forward",
"context_strategy": "full",
"block_forward_call": false,
"block_forward_call_after_turns": -1
},
"conversation_history": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"states_visited": [
"text"
],
"state_transitions": [
[
"text"
]
],
"total_turns": 0,
"tools_called": [
"text"
],
"terminal_reached": false,
"context_graph_topology": [
{
"ANY_ADDITIONAL_PROPERTY": "text"
}
],
"terminal_state": "text",
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}Step a test conversation (no coverage auto-store).
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
Simulation session or configuration not found
Request validation or simulation configuration error
Simulation runtime error
Voice agent not reachable
POST /v1/{workspace_id}/simulations/sessions/step HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 71
{
"session_id": "text",
"caller_text": "text",
"emotion": "text",
"valence": 1
}{
"observation": {
"state_before": "text",
"state_after": "text",
"state_changed": true,
"agent_text": "text",
"is_terminal": true,
"tools_called": [
"text"
],
"tool_call_details": [
{
"tool_name": "text",
"input": "",
"result": "",
"call_id": "",
"succeeded": true
}
],
"selected_action": "text",
"empathy_tier": 0,
"has_pause": false,
"engine_ms": 1,
"nav_ms": 1
},
"snapshot": {
"current_state": {
"name": "text",
"type": "text",
"objective": "",
"actions": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"exit_conditions": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"action_guidelines": [
"text"
],
"boundary_constraints": [
"text"
],
"guardrails": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"tools": [
"text"
],
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"reachable_states": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"turn_policy": {
"barge_in_enabled": true,
"greeting_shield_s": 0,
"safety_response": "suspend_forward",
"context_strategy": "full",
"block_forward_call": false,
"block_forward_call_after_turns": -1
},
"conversation_history": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"states_visited": [
"text"
],
"state_transitions": [
[
"text"
]
],
"total_turns": 0,
"tools_called": [
"text"
],
"terminal_reached": false,
"context_graph_topology": [
{
"ANY_ADDITIONAL_PROPERTY": "text"
}
],
"terminal_state": "text",
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
5Successful Response
LLM-generated caller message suggestions
Simulation session or configuration not found
Request validation or simulation configuration error
Simulation runtime error
Voice agent not reachable
POST /v1/{workspace_id}/simulations/sessions/recommend HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 27
{
"session_id": "text",
"n": 5
}{
"suggestions": [
"text"
]
}API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
[]0[]falseSimulation session or configuration not found
Request validation or simulation configuration error
Simulation runtime error
Voice agent not reachable
GET /v1/{workspace_id}/simulations/sessions/{session_id} HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"current_state": {
"name": "text",
"type": "text",
"objective": "",
"actions": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"exit_conditions": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"action_guidelines": [
"text"
],
"boundary_constraints": [
"text"
],
"guardrails": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"tools": [
"text"
],
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"reachable_states": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"turn_policy": {
"barge_in_enabled": true,
"greeting_shield_s": 0,
"safety_response": "suspend_forward",
"context_strategy": "full",
"block_forward_call": false,
"block_forward_call_after_turns": -1
},
"conversation_history": [
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}
],
"states_visited": [
"text"
],
"state_transitions": [
[
"text"
]
],
"total_turns": 0,
"tools_called": [
"text"
],
"terminal_reached": false,
"context_graph_topology": [
{
"ANY_ADDITIONAL_PROPERTY": "text"
}
],
"terminal_state": "text",
"ANY_ADDITIONAL_PROPERTY": "anything"
}API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
Session destruction status
Simulation session or configuration not found
Request validation or simulation configuration error
Simulation runtime error
Voice agent not reachable
DELETE /v1/{workspace_id}/simulations/sessions/{session_id} HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"status": "text"
}API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
Simulation session or configuration not found
Request validation or simulation configuration error
Simulation runtime error
Voice agent not reachable
GET /v1/{workspace_id}/simulations/sessions/{session_id}/intelligence HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"session_id": "text",
"intelligence": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}Get the B&B knowledge graph for a service — topology + observations merged.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
falseSuccessful Response
The service's context graph states and transitions, overlaid with the stored turns.
Delayed-metric availability for the run. Set only when the request names a run_id.
Validation Error
GET /v1/{workspace_id}/simulations/services/{service_id}/graph HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"run_id": "123e4567-e89b-12d3-a456-426614174000",
"total_sessions": 1,
"total_turns": 1,
"total_forks": 1,
"coverage_percentage": 1,
"state_nodes": [
{
"id": "text",
"type": "text",
"theoretical": true,
"observed": true,
"turn_count": 1,
"session_count": 1,
"self_loop_count": 1,
"transition_out_count": 1,
"pass_count": 1,
"fail_count": 1,
"unknown_count": 1,
"is_terminal": true,
"first_seen_turn": 1,
"tools_used": [
"text"
],
"average_empathy_tier": 1,
"average_engine_ms": 1,
"average_nav_ms": 1
}
],
"edges": [
{
"source": "text",
"target": "text",
"type": "transition",
"theoretical": true,
"observed": true,
"frequency": 1,
"first_seen_turn": 1
}
],
"tree": {
"root_sessions": [
"text"
],
"forks": [
{
"parent_session_id": "text",
"fork_turn_index": 1,
"children": [
"text"
]
}
]
},
"sessions": [
{
"metric_status": "pending",
"metric_result_count": 1,
"metrics_last_checked_at": "2026-01-01T00:00:00.000Z",
"immediate_score": 1,
"immediate_score_rationale": "text",
"session_id": "text",
"parent_session_id": "text",
"fork_turn_index": 1,
"tags": [
"text"
],
"total_turns": 1,
"terminal_reached": true,
"score": 1,
"created_at": "text"
}
],
"turns": [
{
"session_id": "text",
"turn_index": 1,
"state_before": "text",
"state_after": "text",
"state_changed": true,
"caller_text": "text",
"agent_text": "text",
"tools_called": [
"text"
],
"tool_call_details": [
{
"tool_name": "text",
"input": "",
"result": "",
"call_id": "",
"succeeded": true
}
],
"empathy_tier": 1,
"is_terminal": true,
"created_at": "text",
"global_index": 1
}
],
"metric_status": "pending",
"metric_result_count": 1,
"metrics_last_checked_at": "2026-01-01T00:00:00.000Z"
}API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
Validation Error
DELETE /v1/{workspace_id}/simulations/services/{service_id}/graph HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"deleted_runs": 1,
"deleted_sessions": 1,
"deleted_turns": 1
}Get distinct trajectories from simulation sessions.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
Validation Error
GET /v1/{workspace_id}/simulations/services/{service_id}/graph/paths HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"paths": [
{
"trajectory": [
"text"
],
"session_count": 1,
"session_ids": [
"text"
],
"average_score": 1,
"average_turns": 1,
"is_complete": true
}
]
}API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
50Successful Response
Validation Error
GET /v1/{workspace_id}/simulations/services/{service_id}/sessions HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"sessions": [
{
"metric_status": "pending",
"metric_result_count": 1,
"metrics_last_checked_at": "2026-01-01T00:00:00.000Z",
"immediate_score": 1,
"immediate_score_rationale": "text",
"session_id": "text",
"run_id": "123e4567-e89b-12d3-a456-426614174000",
"parent_session_id": "text",
"fork_turn_index": 1,
"tags": [
"text"
],
"total_turns": 1,
"terminal_reached": true,
"score": 1,
"score_rationale": "text",
"created_at": "text"
}
]
}API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
Validation Error
GET /v1/{workspace_id}/simulations/sessions/{session_id}/turns HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"session_id": "text",
"turns": [
{
"session_id": "text",
"turn_index": 1,
"state_before": "text",
"state_after": "text",
"state_changed": true,
"caller_text": "text",
"agent_text": "text",
"tools_called": [
"text"
],
"tool_call_details": [
{
"tool_name": "text",
"input": "",
"result": "",
"call_id": "",
"succeeded": true
}
],
"empathy_tier": 1,
"is_terminal": true,
"created_at": "text",
"tools_available": [
"text"
]
}
]
}API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
100Successful Response
Validation Error
GET /v1/{workspace_id}/simulations/services/{service_id}/turns HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"turns": [
{
"session_id": "text",
"turn_index": 1,
"state_before": "text",
"state_after": "text",
"state_changed": true,
"caller_text": "text",
"agent_text": "text",
"tools_called": [
"text"
],
"tool_call_details": [
{
"tool_name": "text",
"input": "",
"result": "",
"call_id": "",
"succeeded": true
}
],
"empathy_tier": 1,
"is_terminal": true,
"created_at": "text",
"tools_available": [
"text"
]
}
]
}API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
Validation Error
POST /v1/{workspace_id}/simulations/config-to-policy HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 49
{
"config": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}{
"turn_policy": {
"greeting_shield_s": 1,
"barge_in_enabled": true,
"block_forward_call": true,
"safety_response": "stay_empathize",
"context_strategy": "text",
"degradation_threshold": 1,
"block_forward_call_after_turns": 1
}
}NL objective to N autonomous scenarios against the tracked simulation primitives.
Returns immediately with run_id + generated scenarios. Scenarios run in the background via BridgeExecutor (lifecycle-managed, shutdown-drained). Completion events are emitted to Delta via world_emitter for SDP observability.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
5203Optional world entity UUID to bind caller context for every scenario session created by this bridge run. The value is forwarded to each scenario's session-create call and inherited by any forks; identical precedence rules apply per-session (entity match wins over phone, stale UUID falls back to phone lookup, malformed UUID returns 422). Use this to pin an entire regression suite to a specific test patient.
falsefalseSuccessful Response
Validation Error
POST /v1/{workspace_id}/simulations/bridge HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 604
{
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"objective": "text",
"num_scenarios": 5,
"max_turns": 20,
"concurrency": 3,
"branch_name": "text",
"entity_id": "123e4567-e89b-12d3-a456-426614174000",
"tags": [
"text"
],
"target_spec": {
"desired_states": [
"text"
],
"non_desired_states": [
{
"state": "text",
"mode": "hard"
}
],
"ordered_pathways": [
{
"id": "text",
"sequence": [
"text"
]
}
],
"completion_criteria": {
"state_based": [
"text"
],
"tool_based": [
"text"
]
}
},
"exploration": {
"coverage_driven_selection": false,
"enable_forking": false,
"max_forks_per_scenario": 2,
"recommend_candidates": 3
},
"auto_target_spec": false,
"async_generation": false
}{
"run_id": "123e4567-e89b-12d3-a456-426614174000",
"status": "running",
"scenarios": [
{
"description": "text",
"temperament": "neutral",
"initial_message": "text",
"scenario_instructions": "text",
"persona": {
"name": "",
"role": "patient",
"communication_style": "",
"default_language": "en-US",
"background": ""
},
"case_id": "123e4567-e89b-12d3-a456-426614174000"
}
],
"case_ids": [
"123e4567-e89b-12d3-a456-426614174000"
],
"inferred_target_spec": {
"desired_states": [
"text"
],
"non_desired_states": [
{
"state": "text",
"mode": "hard"
}
],
"ordered_pathways": [
{
"id": "text",
"sequence": [
"text"
]
}
],
"completion_criteria": {
"state_based": [
"text"
],
"tool_based": [
"text"
]
}
},
"inferred_target_spec_rationale": "text"
}Run a suite or tag-selected benchmark batch as one saved-case run per case.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Optional world entity UUID to bind caller context for every selected saved-case run. When omitted, each case falls back to fixtures.case_specific.entity_id if present.
20201Successful Response
Validation Error
POST /v1/{workspace_id}/simulations/benchmarks/run HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 387
{
"suite_id": "123e4567-e89b-12d3-a456-426614174000",
"required_tags": [
"text"
],
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"entity_id": "123e4567-e89b-12d3-a456-426614174000",
"max_cases": 20,
"max_turns": 20,
"concurrency": 1,
"branch_name": "text",
"tags": [
"text"
],
"exploration": {
"coverage_driven_selection": false,
"enable_forking": false,
"max_forks_per_scenario": 2,
"recommend_candidates": 3
}
}{
"batch_id": "123e4567-e89b-12d3-a456-426614174000",
"suite_id": "123e4567-e89b-12d3-a456-426614174000",
"required_tags": [
"text"
],
"selected_case_ids": [
"123e4567-e89b-12d3-a456-426614174000"
],
"run_ids": [
"123e4567-e89b-12d3-a456-426614174000"
],
"cases": [
{
"case_id": "123e4567-e89b-12d3-a456-426614174000",
"status": "started",
"run_id": "123e4567-e89b-12d3-a456-426614174000",
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"result_pointer": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"reason": "text"
}
],
"skipped_cases": [
{
"case_id": "123e4567-e89b-12d3-a456-426614174000",
"status": "started",
"run_id": "123e4567-e89b-12d3-a456-426614174000",
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"result_pointer": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"reason": "text"
}
],
"failed_to_start_cases": [
{
"case_id": "123e4567-e89b-12d3-a456-426614174000",
"status": "started",
"run_id": "123e4567-e89b-12d3-a456-426614174000",
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"result_pointer": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"reason": "text"
}
],
"aggregate_summary": {
"selected_count": 1,
"started_count": 1,
"skipped_count": 1,
"failed_to_start_count": 1,
"status_counts": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"scored_count": 0,
"average_score": 1
}
}Run a first-class suite definition.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Optional world entity UUID to bind caller context for every selected saved-case run. When omitted, each case falls back to fixtures.case_specific.entity_id if present.
20201Successful Response
Validation Error
POST /v1/{workspace_id}/simulations/suites/{suite_id}/run HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 387
{
"suite_id": "123e4567-e89b-12d3-a456-426614174000",
"required_tags": [
"text"
],
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"entity_id": "123e4567-e89b-12d3-a456-426614174000",
"max_cases": 20,
"max_turns": 20,
"concurrency": 1,
"branch_name": "text",
"tags": [
"text"
],
"exploration": {
"coverage_driven_selection": false,
"enable_forking": false,
"max_forks_per_scenario": 2,
"recommend_candidates": 3
}
}{
"batch_id": "123e4567-e89b-12d3-a456-426614174000",
"suite_id": "123e4567-e89b-12d3-a456-426614174000",
"required_tags": [
"text"
],
"selected_case_ids": [
"123e4567-e89b-12d3-a456-426614174000"
],
"run_ids": [
"123e4567-e89b-12d3-a456-426614174000"
],
"cases": [
{
"case_id": "123e4567-e89b-12d3-a456-426614174000",
"status": "started",
"run_id": "123e4567-e89b-12d3-a456-426614174000",
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"result_pointer": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"reason": "text"
}
],
"skipped_cases": [
{
"case_id": "123e4567-e89b-12d3-a456-426614174000",
"status": "started",
"run_id": "123e4567-e89b-12d3-a456-426614174000",
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"result_pointer": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"reason": "text"
}
],
"failed_to_start_cases": [
{
"case_id": "123e4567-e89b-12d3-a456-426614174000",
"status": "started",
"run_id": "123e4567-e89b-12d3-a456-426614174000",
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"result_pointer": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"reason": "text"
}
],
"aggregate_summary": {
"selected_count": 1,
"started_count": 1,
"skipped_count": 1,
"failed_to_start_count": 1,
"status_counts": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"scored_count": 0,
"average_score": 1
}
}Aggregate benchmark results over the run ids returned by benchmark start.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
00000pendingPossible values: 0Validation Error
POST /v1/{workspace_id}/simulations/benchmarks/results HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 52
{
"run_ids": [
"123e4567-e89b-12d3-a456-426614174000"
]
}{
"run_ids": [
"123e4567-e89b-12d3-a456-426614174000"
],
"total_runs": 1,
"status_counts": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"completed_count": 0,
"failed_count": 0,
"scored_count": 0,
"average_score": 1,
"pass_count": 0,
"fail_count": 0,
"metric_status": "pending",
"metric_result_count": 0,
"metrics_last_checked_at": "2026-01-01T00:00:00.000Z",
"per_run": [
{
"run_id": "123e4567-e89b-12d3-a456-426614174000",
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"status": "running",
"error": "text",
"tags": [
"text"
],
"case_ids": [
"123e4567-e89b-12d3-a456-426614174000"
],
"session_ids": [
"text"
],
"total_sessions": 0,
"total_turns": 0,
"terminal_session_count": 0,
"scored_session_count": 0,
"average_score": 1,
"passed": true,
"pass_count": 0,
"fail_count": 0,
"score_rationales": [
"text"
],
"capability_tags": [
"text"
],
"created_at": "text",
"completed_at": "text",
"result_pointer": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"immediate_average_score": 1,
"immediate_passed": true,
"immediate_pass_count": 0,
"immediate_fail_count": 0,
"metric_status": "pending",
"metric_result_count": 0,
"metrics_last_checked_at": "2026-01-01T00:00:00.000Z"
}
],
"capability_breakdown": {
"ANY_ADDITIONAL_PROPERTY": {
"run_count": 0,
"status_counts": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"completed_count": 0,
"failed_count": 0,
"scored_count": 0,
"average_score": 1,
"pass_count": 0,
"fail_count": 0
}
},
"missing_run_ids": [
"123e4567-e89b-12d3-a456-426614174000"
]
}Fetch aggregate results for a durable suite run.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
00000pendingPossible values: 0Validation Error
GET /v1/{workspace_id}/simulations/suite-runs/{suite_run_id} HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"run_ids": [
"123e4567-e89b-12d3-a456-426614174000"
],
"total_runs": 1,
"status_counts": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"completed_count": 0,
"failed_count": 0,
"scored_count": 0,
"average_score": 1,
"pass_count": 0,
"fail_count": 0,
"metric_status": "pending",
"metric_result_count": 0,
"metrics_last_checked_at": "2026-01-01T00:00:00.000Z",
"per_run": [
{
"run_id": "123e4567-e89b-12d3-a456-426614174000",
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"status": "running",
"error": "text",
"tags": [
"text"
],
"case_ids": [
"123e4567-e89b-12d3-a456-426614174000"
],
"session_ids": [
"text"
],
"total_sessions": 0,
"total_turns": 0,
"terminal_session_count": 0,
"scored_session_count": 0,
"average_score": 1,
"passed": true,
"pass_count": 0,
"fail_count": 0,
"score_rationales": [
"text"
],
"capability_tags": [
"text"
],
"created_at": "text",
"completed_at": "text",
"result_pointer": {
"ANY_ADDITIONAL_PROPERTY": "anything"
},
"immediate_average_score": 1,
"immediate_passed": true,
"immediate_pass_count": 0,
"immediate_fail_count": 0,
"metric_status": "pending",
"metric_result_count": 0,
"metrics_last_checked_at": "2026-01-01T00:00:00.000Z"
}
],
"capability_breakdown": {
"ANY_ADDITIONAL_PROPERTY": {
"run_count": 0,
"status_counts": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"completed_count": 0,
"failed_count": 0,
"scored_count": 0,
"average_score": 1,
"pass_count": 0,
"fail_count": 0
}
},
"missing_run_ids": [
"123e4567-e89b-12d3-a456-426614174000"
],
"suite_run_id": "123e4567-e89b-12d3-a456-426614174000",
"suite_id": "123e4567-e89b-12d3-a456-426614174000",
"summary": {
"suite_run_id": "123e4567-e89b-12d3-a456-426614174000",
"suite_id": "123e4567-e89b-12d3-a456-426614174000",
"run_ids": [
"123e4567-e89b-12d3-a456-426614174000"
],
"total_runs": 1,
"expected_case_count": 1,
"status": "running",
"status_counts": {
"ANY_ADDITIONAL_PROPERTY": 1
},
"case_ids": [
"123e4567-e89b-12d3-a456-426614174000"
],
"total_sessions": 0,
"total_turns": 0,
"tags": [
"text"
],
"created_at": "text",
"completed_at": "text",
"result_pointer": {
"ANY_ADDITIONAL_PROPERTY": "anything"
}
}
}Run the current saved simulation case through the bridge executor.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Optional world entity UUID to bind caller context for this saved-case run. When omitted, the runner falls back to fixtures.case_specific.entity_id if present.
201Successful Response
Validation Error
POST /v1/{workspace_id}/simulations/cases/{case_id}/run HTTP/1.1
Host: platform.api-us.concurrence.com
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 297
{
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"entity_id": "123e4567-e89b-12d3-a456-426614174000",
"max_turns": 20,
"concurrency": 1,
"branch_name": "text",
"tags": [
"text"
],
"exploration": {
"coverage_driven_selection": false,
"enable_forking": false,
"max_forks_per_scenario": 2,
"recommend_candidates": 3
}
}{
"run_id": "123e4567-e89b-12d3-a456-426614174000",
"status": "running",
"scenarios": [
{
"description": "text",
"temperament": "neutral",
"initial_message": "text",
"scenario_instructions": "text",
"persona": {
"name": "",
"role": "patient",
"communication_style": "",
"default_language": "en-US",
"background": ""
},
"case_id": "123e4567-e89b-12d3-a456-426614174000"
}
],
"case_ids": [
"123e4567-e89b-12d3-a456-426614174000"
],
"inferred_target_spec": {
"desired_states": [
"text"
],
"non_desired_states": [
{
"state": "text",
"mode": "hard"
}
],
"ordered_pathways": [
{
"id": "text",
"sequence": [
"text"
]
}
],
"completion_criteria": {
"state_based": [
"text"
],
"tool_based": [
"text"
]
}
},
"inferred_target_spec_rationale": "text"
}Last updated
Was this helpful?

