Run a test: score a captured transcript (offline) or run a live synthetic call
Three modes, selected by the body:
• Saved suite — send only { "suiteId": "…" }. The suite runs as saved: its target, its language, and every scenario (each with its own persona, expected lines and barge-in), one run per scenario, at most 25 scenarios per request. A suite the account does not own returns 404 SUITE_NOT_FOUND. This is the body to use from CI.
• Offline scoring — supply transcript (or turns) plus a scenarioGoal; the judge scores it synchronously and the completed run is returned. Works on every plan; not metered against call minutes.
• Live synthetic call — supply targetAgent and goal. For the hosted demo target ({transport:"direct", peerId:"wb-demo-dental"}) the run completes synchronously. For a direct (SIP/WebRTC) target the response returns a tokenized mediaWebSocketUrl per run for your agent-side harness to dial. For a sip target the SIP URI goes in sipUri (or in peerId as a sip: URI). For a pstn target a real carrier call is originated (pro+ plans only — starter returns 402).
Response shape (every live mode). data is the FIRST run the request created — so data.id, data.status and data.passed are always present — and data.runs lists every run the request created (one per scenario for a saved suite, concurrency for an ad-hoc run). A run that is not yet terminal is queued/running: poll GET /api/tests/{id} for each id in data.runs until its status is completed or failed, and gate on passed.
PSTN destinations must be verified. A pstn run is only placed to a number the account has proven it controls (or a Word Is Bond DID). An unproven destination returns 403 NUMBER_NOT_VERIFIED and no call is placed. Prove control once with POST /api/numbers/verify/start → POST /api/numbers/verify/confirm.
Request
- Base URL: https://api.wordis-bond.com
- URL: https://api.wordis-bond.com/api/tests/run
- Auth: HTTP bearer
Request body
Response
Offline → the completed run in data. Every live mode → data is the first run created (id, status, passed, …) plus runs (every run the request created; a direct run carries mediaWebSocketUrl), suite for a saved-suite run, and concurrency/transport for ad-hoc runs.
Changes
No recorded changes to this operation across all 1 revision of this API.