List test invocations
GET https://api.elevenlabs.io/v1/convai/test-invocations
Lists all test invocations with pagination support and optional search filtering.
Reference: https://elevenlabs.io/docs/api-reference/tests/test-invocations/list
Servers
Section titled “Servers”https://api.elevenlabs.io(Production, default)https://api.us.elevenlabs.io(Production US)https://api.eu.residency.elevenlabs.io(Production EU)https://api.in.residency.elevenlabs.io(Production India)https://api.sg.residency.elevenlabs.io(Production Singapore)
Request
Section titled “Request”Query parameters
Section titled “Query parameters”agent_id(string, optional, nullable) — Filter by agent IDbranch_id(string, optional, nullable) — Filter by branch IDpage_size(integer, optional, default: 30) — How many Tests to return at maximum. Can not exceed 100, defaults to 30.search(string, optional, nullable) — Search query to filter tests and folders by name.cursor(string, optional, nullable) — Used for fetching next page. Cursor is returned in the response.
Response
Section titled “Response”Successful Response
results(list of TestInvocationSummaryResponseModel, required)has_more(boolean, required) — Whether there are more results availablemeta(ListResponseMeta, optional)next_cursor(string, optional, nullable) — Cursor for the next page of results
Errors
Section titled “Errors”422 Unprocessable Entity Error
Section titled “422 Unprocessable Entity Error”Validation Error
detail(list of ValidationError, optional)
TestInvocationSummaryResponseModel
Section titled “TestInvocationSummaryResponseModel”id(string, required) — The ID of the test invocationcreated_at_unix_secs(integer, required) — Creation time of the test invocation in unix secondstest_run_count(integer, required) — Number of test runs in this invocationpassed_count(integer, required) — Number of test runs that passedfailed_count(integer, required) — Number of test runs that failedpending_count(integer, required) — Number of test runs that are pendingtitle(string, required) — Title of the test invocation - the folder name for folder runs, otherwise the single test name or count of testsagent_id(string, optional, nullable) — The ID of the agent this test invocation belongs tobranch_id(string, optional, nullable) — The ID of the branch this test invocation was run onversion_id(string, optional, nullable) — The ID of the agent version this test invocation ran against. For draft or config-override runs this is the version those uncommitted changes were applied on top of. None only for runs recorded before this field existed.ran_against_draft(boolean, optional, default: false) — Whether the run included uncommitted changes (a saved draft or an ad-hoc config override) layered on top of version_id.runs_diverged_from_version(boolean, optional, default: false) — Whether the test runs in this invocation did not all execute against the same version, which happens when a subset of runs was resubmitted after the original run. When true, version_id describes the most recent resubmit rather than every run.access_info(ResourceAccessInfo, optional, nullable) — The access information of the test invocationrepeat_count(integer, optional, default: 1) — Number of times each test was repeated in this invocationcredits_used(integer, optional, nullable) — Total credits billed across test runs in this invocation. None when no run has cost data.total_price(double, optional, nullable) — Total USD price across test runs in this invocation. None when no run has price data.
ListResponseMeta
Section titled “ListResponseMeta”total(integer, optional, nullable)page(integer, optional, nullable)page_size(integer, optional, nullable)
ValidationError
Section titled “ValidationError”loc(list of ValidationErrorLocItems, required)msg(string, required)type(string, required)
ResourceAccessInfo
Section titled “ResourceAccessInfo”is_creator(boolean, required) — Whether the user making the request is the creator of the agentcreator_name(string, required) — Name of the agent's creatorcreator_email(string, required) — Email of the agent's creatorrole(enum, required) — The role of the user making the request- Allowed values:
admin,editor,commenter,viewer
- Allowed values:
anonymous_access_level_override(enum, optional, nullable) — The access level for anonymous users. If None, the resource is not shared publicly.- Allowed values:
admin,editor,commenter,viewer
- Allowed values:
access_source(enum, optional, nullable) — Why the requesting user has access to this resource. 'creator' = caller is the owner. 'explicit' = caller (or one of their workspace groups) is listed in role_to_group_ids beyond the workspace-wide everyone group. 'workspace_default' = the workspace-wide everyone group is listed in role_to_group_ids (every non-anon workspace member, including admins, sees this resource). 'workspace_admin' = caller is a workspace admin and the admin seat is the only path to access; reserved for docs nobody else can see. Lets the UI disclose why an admin-bypass viewer sees a doc that wasn't explicitly shared with them.- Allowed values:
creator,explicit,workspace_admin,workspace_default
- Allowed values:
ValidationErrorLocItems
Section titled “ValidationErrorLocItems”Examples
Section titled “Examples”Response
{
"results": [
{
"id": "string",
"created_at_unix_secs": 1,
"test_run_count": 1,
"passed_count": 1,
"failed_count": 1,
"pending_count": 1,
"title": "string",
"agent_id": "string",
"branch_id": "string",
"version_id": "string",
"ran_against_draft": false,
"runs_diverged_from_version": false,
"access_info": {
"is_creator": true,
"creator_name": "John Doe",
"creator_email": "john.doe@example.com",
"role": "admin",
"access_source": "creator"
},
"repeat_count": 1,
"credits_used": 1,
"total_price": 1.1
}
],
"has_more": true,
"meta": {
"total": 1,
"page": 1,
"page_size": 1
},
"next_cursor": "string"
}SDK Code
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";
async function main() {
const client = new ElevenLabsClient();
await client.conversationalAi.tests.invocations.list({});
}
main();
from elevenlabs import ElevenLabs
client = ElevenLabs()
client.conversational_ai.tests.invocations.list()
package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.elevenlabs.io/v1/convai/test-invocations"
req, _ := http.NewRequest("GET", url, nil)
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}require 'uri'
require 'net/http'
url = URI("https://api.elevenlabs.io/v1/convai/test-invocations")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_bodyimport com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;
HttpResponse<String> response = Unirest.get("https://api.elevenlabs.io/v1/convai/test-invocations")
.asString();<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.elevenlabs.io/v1/convai/test-invocations');
echo $response->getBody();using RestSharp;
var client = new RestClient("https://api.elevenlabs.io/v1/convai/test-invocations");
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);import Foundation
let request = NSMutableURLRequest(url: NSURL(string: "https://api.elevenlabs.io/v1/convai/test-invocations")! as URL,
cachePolicy: .useProtocolCachePolicy,
timeoutInterval: 10.0)
request.httpMethod = "GET"
let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
if (error != nil) {
print(error as Any)
} else {
let httpResponse = response as? HTTPURLResponse
print(httpResponse)
}
})
dataTask.resume()