Overview
Run automated conversation tests between two voice agents
LoopTalk runs one voice agent (the "actor") against another (the "adversary") to automatically test conversation flows, without a real phone call. A single test session pits two workflows against each other; a load test runs many sessions at once under the same actor/adversary pairing.
| Method | Endpoint | Purpose |
|---|---|---|
POST | /looptalk/test-sessions | Create a test session |
GET | /looptalk/test-sessions | List test sessions |
GET | /looptalk/test-sessions/{test_session_id} | Get a specific test session |
POST | /looptalk/test-sessions/{test_session_id}/start | Start a test session |
POST | /looptalk/test-sessions/{test_session_id}/stop | Stop a running test session |
GET | /looptalk/test-sessions/{test_session_id}/conversation | Get conversation details (transcript, recordings) for a session |
POST | /looptalk/load-tests | Create and start a load test (multiple sessions at once) |
GET | /looptalk/load-tests/{load_test_group_id}/stats | Get aggregate stats for a load test |
GET | /looptalk/active-tests | Get information about currently active test sessions |
Create and start a test session#
curl -X POST https://app.lemuai.com/api/v1/looptalk/test-sessions \
-H "X-API-Key: lemu_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Refund flow regression",
"actor_workflow_id": 12,
"adversary_workflow_id": 34,
"config": {}
}'{
"id": 88,
"name": "Refund flow regression",
"status": "pending",
"actor_workflow_id": 12,
"adversary_workflow_id": 34,
"load_test_group_id": null,
"test_index": null,
"config": {},
"results": null,
"error": null,
"created_at": "2026-08-20T10:00:00Z",
"started_at": null,
"completed_at": null
}A session must be pending before it can start:
curl -X POST https://app.lemuai.com/api/v1/looptalk/test-sessions/88/start \
-H "X-API-Key: lemu_your_api_key"{
"message": "Test session starting",
"test_session_id": 88
}Once it finishes, GET /looptalk/test-sessions/{test_session_id}/conversation returns the transcript and recording URLs; per-turn detail is tracked in Langfuse rather than exposed via this API.
