> 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 ramas del agente

GET https://api.elevenlabs.io/v1/convai/agents/{agent_id}/branches

Devuelve una lista de las ramas de un agente

Reference: https://elevenlabs.io/docs/api-reference/agents/branches/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

### Path parameters

- `agent_id` (string, required) — El ID de un agente. Se devuelve al crear el agente.

### Query parameters

- `include_archived` (boolean, optional, default: false) — Indica si se deben incluir las ramas archivadas.
- `limit` (integer, optional, default: 100) — Número máximo de resultados que se devolverán.
- `include_commit_status` (boolean, optional, default: false) — Indica si se debe calcular cuánto ha divergido cada rama de main (commits_ahead/commits_behind). Esto recorre el DAG de versiones de cada rama, por lo que es lento en agentes con historiales largos y está desactivado de forma predeterminada, dejando esos campos en null.

## Response

### 200

Respuesta correcta.

- `results` (list of AgentBranchSummary, required)
- `meta` (ListResponseMeta, optional)

## Errors

### 422 Unprocessable Entity Error

Error de validación

- `detail` (list of ValidationError, optional)

## Types

### AgentBranchSummary

- `id` (string, required)
- `name` (string, required)
- `agent_id` (string, required)
- `description` (string, required)
- `created_at` (integer, required)
- `last_committed_at` (integer, required)
- `is_archived` (boolean, required)
- `protection_status` (enum, optional, default: writer_perms_required)
  - Allowed values: `writer_perms_required`, `admin_perms_required`
- `auto_rebase` (boolean, optional, default: false)
- `access_info` (ResourceAccessInfo, optional, nullable) — Información de acceso de la rama
- `current_live_percentage` (double, optional, default: 0) — Porcentaje de tráfico activo en la rama
- `parent_branch_id` (string, optional, nullable) — ID de la rama principal
- `draft_exists` (boolean, optional, default: false) — Indica si existe un borrador para la rama.
- `draft_created_at` (integer, optional, nullable) — Segundos Unix en los que se creó por primera vez el borrador del autor de la llamada en esta rama, o null si no tiene borrador. Un borrador creado antes de last_committed_at se escribió con una configuración que la rama ya ha superado, por lo que puede no reflejar la actual.
- `draft_is_behind_tip` (boolean, optional, default: false) — Indica si el borrador del llamante en esta rama se creó antes del último commit de la rama, lo que significa que se escribió con una configuración que la rama ya ha superado y puede no reflejar la actual.
- `calls_7d` (integer, optional, default: 0) — Número de llamadas en los últimos 7 días
- `commits_ahead` (integer, optional, nullable) — Número de commits de esta rama que aún no están en main, respecto a su ancestro común. Nulo si no se ha podido calcular (por ejemplo, si no hay un ancestro común o el historial de la rama supera el límite de comparación).
- `commits_behind` (integer, optional, nullable) — Número de commits de main que aún no se han incorporado a esta rama, respecto a su ancestro común. Nulo si no se ha podido calcular (por ejemplo, si no hay un ancestro común o el historial de la rama supera el límite de comparación).
- `merged_into_branch_id` (string, optional, nullable) — ID de la rama en la que se fusionó la versión más reciente de esta rama, si la hay

### ListResponseMeta

- `total` (integer, optional, nullable)
- `page` (integer, optional, nullable)
- `page_size` (integer, optional, nullable)

### 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
{
  "results": [
    {
      "id": "string",
      "name": "string",
      "agent_id": "string",
      "description": "string",
      "created_at": 1,
      "last_committed_at": 1,
      "is_archived": true,
      "protection_status": "writer_perms_required",
      "auto_rebase": false,
      "access_info": {
        "is_creator": true,
        "creator_name": "John Doe",
        "creator_email": "john.doe@example.com",
        "role": "admin",
        "access_source": "creator"
      },
      "current_live_percentage": 0,
      "parent_branch_id": "string",
      "draft_exists": false,
      "draft_created_at": 1,
      "draft_is_behind_tip": false,
      "calls_7d": 0,
      "commits_ahead": 1,
      "commits_behind": 1,
      "merged_into_branch_id": "string"
    }
  ],
  "meta": {
    "total": 1,
    "page": 1,
    "page_size": 1
  }
}
```

**SDK Code**

```python
import requests

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

response = requests.get(url)

print(response.json())
```

```javascript
const url = 'https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/branches';
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/agent_3701k3ttaq12ewp8b7qv5rfyszkz/branches"

	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/agent_3701k3ttaq12ewp8b7qv5rfyszkz/branches")

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/agent_3701k3ttaq12ewp8b7qv5rfyszkz/branches")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/branches');

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.elevenlabs.io/v1/convai/agents/agent_3701k3ttaq12ewp8b7qv5rfyszkz/branches");
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/agent_3701k3ttaq12ewp8b7qv5rfyszkz/branches")! 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()
```