> This is a page from the ElevenLabs documentation. For a complete page index, fetch https://elevenlabs.io/docs/llms.txt. For the full documentation in a single file, fetch https://elevenlabs.io/docs/llms-full.txt.

# Listar agentes

GET https://api.elevenlabs.io/v1/convai/agents

Devuelve una lista de tus agentes y sus metadatos.

Reference: https://elevenlabs.io/docs/api-reference/agents/list

## 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

### Query parameters

- `page_size` (integer, optional, default: 30) — Número máximo de agentes que se devolverán. No puede superar 100; el valor predeterminado es 30.
- `search` (string, optional, nullable) — Busca por nombre de agente.
- `archived` (boolean, optional, nullable, default: false) — Filtra agentes por estado de archivado
- `show_only_owned_agents` (boolean, optional, default: false, deprecated) — Si se establece en true, la ruta de API omitirá los agentes que otra persona haya compartido contigo e incluirá solo los que te pertenecen. Obsoleto: usa created_by_user_id en su lugar.
- `created_by_user_id` (string, optional, nullable) — Filtra agentes por ID de usuario creador. Cuando se establece, solo se devuelven los agentes creados por este usuario. Tiene prioridad sobre show_only_owned_agents. Utiliza '@me' para hacer referencia al usuario autenticado.
- `tags` (list of string, optional, nullable) — Filtra agentes por etiqueta. Repite el parámetro para que coincida con cualquiera de varias etiquetas.
- `sort_direction` (enum, optional) — La dirección para ordenar los resultados
  - Allowed values: `asc`, `desc`
- `sort_by` (enum, optional, nullable) — El campo por el que se ordenarán los resultados
  - Allowed values: `name`, `created_at`, `call_count_7d`
- `cursor` (string, optional, nullable) — Se usa para obtener la página siguiente. El cursor se devuelve en la respuesta.

## Response

### 200

Respuesta correcta.

- `agents` (list of AgentSummaryResponseModel, required) — Una lista de agentes y sus metadatos.
- `has_more` (boolean, required) — Indica si hay más agentes que paginar
- `next_cursor` (string, optional, nullable) — El siguiente cursor para paginar los agentes

## Errors

### 422 Unprocessable Entity Error

Error de validación

- `detail` (list of ValidationError, optional)

## Types

### AgentSummaryResponseModel

- `agent_id` (string, required) — El ID del agente
- `name` (string, required) — El nombre del agente
- `voice_id` (string, required) — ID de voz asignado a este agente
- `tags` (list of string, required) — Etiquetas del agente usadas para categorizarlo
- `created_at_unix_secs` (integer, required) — La hora de creación del agente en segundos Unix
- `access_info` (ResourceAccessInfo, required) — La información de acceso del agente.
- `last_call_time_unix_secs` (integer, optional, nullable) — La hora de la llamada más reciente en segundos Unix; null si no se ha realizado ninguna llamada.
- `archived` (boolean, optional, default: false) — Indica si el agente está archivado.

### ValidationError

- `loc` (list of ValidationErrorLocItems, required)
- `msg` (string, required)
- `type` (string, required)

### ResourceAccessInfo

- `is_creator` (boolean, required) — Indica si el usuario que realiza la solicitud es el creador del agente
- `creator_name` (string, required) — Nombre del creador del agente
- `creator_email` (string, required) — Correo electrónico del creador del agente
- `role` (enum, required) — El rol del usuario que realiza la solicitud
  - Allowed values: `admin`, `editor`, `commenter`, `viewer`
- `anonymous_access_level_override` (enum, optional, nullable) — El nivel de acceso para usuarios anónimos. Si es None, el recurso no se comparte públicamente.
  - Allowed values: `admin`, `editor`, `commenter`, `viewer`
- `access_source` (enum, optional, nullable) — Por qué el usuario solicitante tiene acceso a este recurso. 'creator' = quien realiza la llamada es el propietario. 'explicit' = quien realiza la llamada (o uno de sus grupos del espacio de trabajo) figura en role_to_group_ids, además del grupo general de todos del espacio de trabajo. 'workspace_default' = el grupo general de todos del espacio de trabajo figura en role_to_group_ids (todos los miembros no anónimos del espacio de trabajo, incluidos los administradores, ven este recurso). 'workspace_admin' = quien realiza la llamada es administrador del espacio de trabajo y el puesto de administrador es la *única* vía de acceso; reservado para documentos que nadie más puede ver. Permite que la interfaz revele por qué un usuario que omite los permisos de administrador ve un documento que no se compartió explícitamente con él.
  - Allowed values: `creator`, `explicit`, `workspace_admin`, `workspace_default`

### ValidationErrorLocItems

## Examples

**Response**

```json
{
  "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**

```python
import requests

url = "https://api.elevenlabs.io/v1/convai/agents"

querystring = {"archived":"false","tags":"[\"Customer Support\"]"}

response = requests.get(url, params=querystring)

print(response.json())
```

```javascript
const url = 'https://api.elevenlabs.io/v1/convai/agents?archived=false&tags=%5B%22Customer+Support%22%5D';
const options = {method: 'GET'};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
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))

}
```

```ruby
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_body
```

```java
import 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
<?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();
```

```csharp
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);
```

```swift
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()
```