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

# Lister les modèles

GET https://api.elevenlabs.io/v1/flows/templates

Répertorie les modèles de flux publiés dans votre Workspace, ainsi que les entrées et sorties de chaque version exécutable. Utilisez les identifiants indiqués ici comme `template_id` / `version_id` dans `POST /v1/flows/templates/{template_id}/runs`. Les versions basées sur des modèles auxquels vous n’avez pas accès via l’API sont exclues. `versions` est donc vide lorsqu’aucune version publiée d’un modèle n’est exécutable via cette API. Les modèles partagés avec vous par lien ou publiés dans Explore depuis un autre Workspace ne sont pas répertoriés, mais peuvent toujours être récupérés et exécutés à l’aide de `template_id`.

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

- `cursor` (string, optional, nullable) — Curseur de pagination : valeur `next_cursor` de la réponse de la page précédente. Omettez-le pour la première page.
- `page_size` (integer, optional, default: 10) — Nombre de modèles à renvoyer par page. Cette valeur est inférieure au plafond de la liste des exécutions, car chaque ligne développe les schémas d’entrée et de sortie de ses versions.
- `versions_per_template` (integer, optional, default: 3) — Nombre de versions publiées de chaque modèle à renvoyer, de la plus récente à la plus ancienne. `has_more_versions` indique si un modèle en comporte davantage.
- `search` (string, optional, nullable) — Renvoyer uniquement les modèles dont le nom ou la description contient ce texte.

## Response

### 200

Réponse réussie

- `templates` (list of TemplateSummary, required) — Les modèles de cette page, classés du plus récemment mis à jour au moins récent. Une page peut contenir moins de `page_size` modèles, voire aucun, car les modèles que vous ne pouvez pas exécuter sont filtrés après la lecture de la page. Continuez la pagination tant que `has_more` est vrai.
- `next_cursor` (string, required, nullable) — Transmettez comme `cursor` pour récupérer la page suivante. `null` lorsqu'il n'y a pas de page supplémentaire.
- `has_more` (boolean, required) — Indique si d’autres modèles existent après cette page.

## Errors

### 422 Unprocessable Entity Error

Erreur de validation

- `detail` (list of ValidationError, optional)

## Types

### TemplateSummary

Un modèle que l'appelant peut exécuter, ainsi que ses versions exécutables.

- `id` (string, required) — Transmettez comme `template_id` dans `POST /v1/flows/templates/{template_id}/runs`.
- `name` (string, required) — Le nom du modèle.
- `versions` (list of TemplateVersion, required) — Les versions publiées que cet appelant peut exécuter, de la plus récente à la plus ancienne. Une version dont le graphe utilise un modèle auquel vous n'avez pas accès via l'API est exclue, tout comme une version dont l'instantané stocké n'est plus disponible. Dans les deux cas, la liste peut être vide alors que le modèle comporte encore des versions exécutables par l'application ElevenLabs.
- `has_more_versions` (boolean, required) — Indique si ce modèle possède d’autres versions publiées au-delà des `versions_per_template` renvoyées ici. Appelez `GET /v1/flows/templates/{template_id}` avec une valeur `versions_per_template` plus élevée pour en voir davantage.
- `description` (string, optional, nullable) — La description du modèle, s’il en possède une.

### ValidationError

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

### TemplateVersion

Un instantané publié d'un modèle et les ports avec lesquels il s'exécute.

- `version_id` (string, required) — Transmettez comme `version_id` dans `POST /v1/flows/templates/{template_id}/runs` pour associer une exécution à cet instantané.
- `published_at_unix` (integer, required) — Date de publication de cette version, sous forme d’horodatage Unix en secondes.
- `is_latest` (boolean, required) — Indique s’il s’agit de la version attribuée à une exécution lorsque `version_id` est omis ou défini sur `latest`.
- `inputs` (list of TemplatePort, required) — Les entrées acceptées par cette version, dans l’ordre du canevas. Chaque entrée est requise pour une exécution.
- `outputs` (list of TemplatePort, required) — Les sorties produites par cette version, dans l’ordre du canevas.

### ValidationErrorLocItems

- string
- integer

### TemplatePort

Un port d’entrée ou de sortie d’une version de modèle publiée.

- `id` (string, required) — L’ID du port. Les ID d’entrée sont les clés de la table `inputs` dans `POST /v1/flows/templates/{template_id}/runs` ; les ID de sortie sont les clés de la table `outputs` dans la réponse d’exécution.
- `content_schema` (ContentSchema, required) — Ce que ce port accepte ou produit, sous la forme d’un `ContentSchema`. Son `title` correspond au nom d’affichage du port et sa `description` au texte d’aide rédigé par l’auteur du modèle. Pour une entrée, son `type` détermine la valeur acceptée : `string` accepte une chaîne simple ou une référence `generation`, `voice` accepte une référence `voice`, et `image`/`video`/`audio` acceptent une référence `asset`, `generation` ou `inline_base64`. `number`, `integer` et `boolean` acceptent une valeur JSON de ce type. Une entrée `array` accepte un tableau JSON contenant une valeur par élément, chacune admissible pour ses `items`. Les entrées `object` ne peuvent pas encore être liées via cette API. Un schéma `string` peut inclure un `enum` des seules valeurs acceptées. Pour une sortie, son `type` détermine la forme `Template<Kind>Output` que la réponse d’exécution contient sous l’ID du port.

### ContentSchema

- `type`: `array` (ArraySchema)
  - `items` (ContentSchema, required)
  - `description` (string, optional, nullable)
  - `title` (string, optional, nullable)
- `type`: `audio` (AudioSchema)
  - `description` (string, optional, nullable)
  - `title` (string, optional, nullable)
- `type`: `boolean` (BooleanSchema)
  - `description` (string, optional, nullable)
  - `title` (string, optional, nullable)
- `type`: `image` (ImageSchema)
  - `description` (string, optional, nullable)
  - `title` (string, optional, nullable)
- `type`: `integer` (IntegerSchema)
  - `description` (string, optional, nullable)
  - `title` (string, optional, nullable)
- `type`: `number` (NumberSchema)
  - `description` (string, optional, nullable)
  - `enum` (list of double, optional, nullable)
  - `title` (string, optional, nullable)
- `type`: `object` (ObjectSchema)
  - `description` (string, optional, nullable)
  - `properties` (map from string to ContentSchema, optional)
  - `required` (list of string, optional)
  - `title` (string, optional, nullable)
- `type`: `string` (StringSchema)
  - `description` (string, optional, nullable)
  - `enum` (list of string, optional, nullable)
  - `title` (string, optional, nullable)
- `type`: `video` (VideoSchema)
  - `description` (string, optional, nullable)
  - `title` (string, optional, nullable)
- `type`: `voice` (VoiceSchema)
  - `description` (string, optional, nullable)
  - `title` (string, optional, nullable)

## Examples

**Response**

```json
{
  "templates": [
    {
      "id": "tmpl_abc123",
      "name": "Product shot",
      "versions": [
        {
          "version_id": "ver_01hxyz",
          "published_at_unix": 1739721600,
          "is_latest": true,
          "inputs": [
            {
              "id": "prompt",
              "content_schema": {
                "type": "string",
                "title": "Prompt"
              }
            },
            {
              "id": "reference",
              "content_schema": {
                "type": "image",
                "description": "A clean product photo on any background.",
                "title": "Product photo"
              }
            }
          ],
          "outputs": [
            {
              "id": "product_still",
              "content_schema": {
                "type": "image",
                "title": "Final image"
              }
            }
          ]
        }
      ],
      "has_more_versions": false,
      "description": "Drop in a product photo, get a studio shot."
    }
  ],
  "next_cursor": "cGFnZXwx",
  "has_more": true
}
```

**SDK Code**

```python
import requests

url = "https://api.elevenlabs.io/v1/flows/templates"

response = requests.get(url)

print(response.json())
```

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

	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/flows/templates")

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

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

$client = new \GuzzleHttp\Client();

$response = $client->request('GET', 'https://api.elevenlabs.io/v1/flows/templates');

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

```csharp
using RestSharp;

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