List test invocations
List visible Agent Testing invocations with cursor pagination and an optional Agent filter; run transcripts are excluded from this summary response.
Endpoint
GET
/api/v1/workspaces/{workspace_id}/test-invocationsAuthentication
| Operation class | Authentication | Minimum role | API key |
|---|---|---|---|
| customer-api | Bearer API key or dashboard session cookie; dashboard mutations also require X-CX-Request: 1. | member | Allowed |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
workspace_id | path | string | Yes | — |
cursor | query | string or null | No | — |
page_size | query | integer | No | — |
agent_id | query | string or null | No | — |
Request body
This operation has no request body.
Example
curl --request GET 'https://operade.ai/api/v1/workspaces/ws_demo/test-invocations?page_size=30' \ --header 'Authorization: Bearer YOUR_API_KEY'
Responses
| Status | Description | Content |
|---|---|---|
4XX | Handled client error | application/json: ErrorResponse |
200 | Successful Response | application/json: InvocationListResponse |
4XX application/json response schema
| Field path | Type | Reference | Format | Nullable | Required | Enum | Description |
|---|---|---|---|---|---|---|---|
$ | object | ErrorResponse | — | No | Yes | — | — |
error | object | ErrorItem | — | No | Yes | — | — |
error.code | string | — | — | No | Yes | — | — |
error.details | object | — | — | No | No | — | — |
error.message | string | — | — | No | Yes | — | — |
200 application/json response schema
| Field path | Type | Reference | Format | Nullable | Required | Enum | Description |
|---|---|---|---|---|---|---|---|
$ | object | InvocationListResponse | — | No | Yes | — | — |
has_more | boolean | — | — | No | Yes | — | — |
items | array<InvocationSummary> | — | — | No | Yes | — | — |
items[] | object | InvocationSummary | — | No | Yes | — | — |
items[].agent_id | string | — | — | No | Yes | — | — |
items[].branch_id | string | — | — | No | Yes | — | — |
items[].bucketing_status | string | — | — | No | Yes | "not_applicable", "pending", "completed", "failed" | — |
items[].completed_at | string or null | — | date-time | Yes | Yes | — | — |
items[].cost_usd | number | — | — | No | Yes | — | — |
items[].counts | object | InvocationCounts | — | No | Yes | — | — |
items[].counts.failed | integer | — | — | No | Yes | — | — |
items[].counts.interrupted | integer | — | — | No | Yes | — | — |
items[].counts.passed | integer | — | — | No | Yes | — | — |
items[].counts.pending | integer | — | — | No | Yes | — | — |
items[].counts.running | integer | — | — | No | Yes | — | — |
items[].created_at | string | — | date-time | No | Yes | — | — |
items[].created_by | string | — | — | No | Yes | — | — |
items[].id | string | — | — | No | Yes | — | — |
items[].input_tokens | integer | — | — | No | Yes | — | — |
items[].output_tokens | integer | — | — | No | Yes | — | — |
items[].pass_rate | number or null | — | — | Yes | Yes | — | — |
items[].repeat_count | integer | — | — | No | Yes | — | — |
items[].status | string | — | — | No | Yes | "pending", "running", "completed" | — |
items[].target | string | — | — | No | Yes | "draft", "live" | — |
next_cursor | string or null | — | — | Yes | Yes | — | — |
Response example
{
"items": [],
"has_more": false,
"next_cursor": "string"
}Errors
Reviewed common and route-declared errors are summarized here; the list is not exhaustive. Start with the distributed error index to find each code's canonical domain page.
| Status | Code | Description |
|---|---|---|
401 | unauthenticated | Authentication is missing, invalid, or revoked. |
403 | forbidden | The authenticated caller does not have access to this operation. |
404 | not_found | The requested workspace resource was not found. |
422 | validation_failed | The request did not pass field or business validation. |
