List agents
GET https://api.elevenlabs.io/v1/convai/agents
Returns a list of your agents and their metadata.
Reference: https://elevenlabs.io/docs/api-reference/agents/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”page_size(integer, optional, default: 30) — How many Agents to return at maximum. Can not exceed 100, defaults to 30.search(string, optional, nullable) — Search by agents name.archived(boolean, optional, nullable, default: false) — Filter agents by archived statusshow_only_owned_agents(boolean, optional, default: false, deprecated) — If set to true, the endpoint will omit any agents that were shared with you by someone else and include only the ones you own. Deprecated: use created_by_user_id instead.created_by_user_id(string, optional, nullable) — Filter agents by creator user ID. When set, only agents created by this user are returned. Takes precedence over show_only_owned_agents. Use '@me' to refer to the authenticated user.tags(list of string, optional, nullable) — Filter agents by tag. Repeat the parameter to match any of several tags.sort_direction(enum, optional) — The direction to sort the results- Allowed values:
asc,desc
- Allowed values:
sort_by(enum, optional, nullable) — The field to sort the results by- Allowed values:
name,created_at,call_count_7d
- Allowed values:
cursor(string, optional, nullable) — Used for fetching next page. Cursor is returned in the response.
Response
Section titled “Response”Successful Response
agents(list of AgentSummaryResponseModel, required) — A list of agents and their metadatahas_more(boolean, required) — Whether there are more agents to paginate throughnext_cursor(string, optional, nullable) — The next cursor to paginate through the agents
Errors
Section titled “Errors”422 Unprocessable Entity Error
Section titled “422 Unprocessable Entity Error”Validation Error
detail(list of ValidationError, optional)
AgentSummaryResponseModel
Section titled “AgentSummaryResponseModel”agent_id(string, required) — The ID of the agentname(string, required) — The name of the agentvoice_id(string, required) — Voice ID assigned to this agenttags(list of string, required) — Agent tags used to categorize the agentcreated_at_unix_secs(integer, required) — The creation time of the agent in unix secondsaccess_info(ResourceAccessInfo, required) — The access information of the agentlast_call_time_unix_secs(integer, optional, nullable) — The time of the most recent call in unix seconds, null if no calls have been madearchived(boolean, optional, default: false) — Whether the agent is archived
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
{
"agents": [
{
"agent_id": "J3Pbu5gP6NNKBscdCdwB",
"name": "My Agent",
"voice_id": "UCaNsl8F6Xh4GALkVMLS",
"tags": [
"Customer Support",
"Technical Help",
"Eleven"
],
"created_at_unix_secs": 1716153600,
"access_info": {
"is_creator": true,
"creator_name": "John Doe",
"creator_email": "john@example.com",
"role": "admin"
},
"archived": false
}
],
"has_more": false,
"next_cursor": "123"
}SDK Code
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";
async function main() {
const client = new ElevenLabsClient();
await client.conversationalAi.agents.list({
archived: false,
tags: [
"Customer Support",
],
});
}
main();
from elevenlabs import ElevenLabs
client = ElevenLabs()
client.conversational_ai.agents.list(
archived=False,
tags=[
"Customer Support"
],
)
package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.elevenlabs.io/v1/convai/agents?archived=false&tags=%5B%22Customer+Support%22%5D"
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/agents?archived=false&tags=%5B%22Customer+Support%22%5D")
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/agents?archived=false&tags=%5B%22Customer+Support%22%5D")
.asString();<?php
require_once('vendor/autoload.php');
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.elevenlabs.io/v1/convai/agents?archived=false&tags=%5B%22Customer+Support%22%5D');
echo $response->getBody();using RestSharp;
var client = new RestClient("https://api.elevenlabs.io/v1/convai/agents?archived=false&tags=%5B%22Customer+Support%22%5D");
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/agents?archived=false&tags=%5B%22Customer+Support%22%5D")! 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()