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

# Obtenir le modèle

GET https://api.elevenlabs.io/v1/flows/templates/{template_id}

Récupère un modèle de flux, ainsi que les entrées et sorties de chaque version exécutable. `versions` est vide lorsqu'aucune version publiée n'est exécutable via cette API. Fonctionne pour tout modèle que vous pouvez ouvrir, y compris les modèles partagés avec vous par lien ou publiés dans Explore depuis un autre Workspace, que `GET /v1/flows/templates` ne répertorie pas.

Reference: https://elevenlabs.io/docs/api-reference/flows/templates/get

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

- `template_id` (string, required) — L’ID du modèle, tel qu’il apparaît dans l’application ElevenLabs ou via `GET /v1/flows/templates`.

### Query parameters

- `versions_per_template` (integer, optional, default: 10) — 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.

## Response

### 200

Réponse réussie

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

## Errors

### 422 Unprocessable Entity Error

Erreur de validation

- `detail` (list of ValidationError, optional)

## Types

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

### ValidationError

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

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

### ValidationErrorLocItems

- string
- integer

### 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
{
  "id": "tmpl_abc123",
  "name": "Product shot",
  "versions": [
    {
      "version_id": "ver_01hxyz",
      "published_at_unix": 1,
      "is_latest": true,
      "inputs": [
        {
          "id": "prompt",
          "content_schema": {
            "type": "string",
            "description": "string",
            "enum": [
              "string"
            ],
            "title": "string"
          }
        }
      ],
      "outputs": [
        {
          "id": "prompt",
          "content_schema": {
            "type": "string",
            "description": "string",
            "enum": [
              "string"
            ],
            "title": "string"
          }
        }
      ]
    }
  ],
  "has_more_versions": true,
  "description": "string"
}
```

**SDK Code**

```python
import requests

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

response = requests.get(url)

print(response.json())
```

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

	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/template_id")

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

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

$client = new \GuzzleHttp\Client();

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

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

```csharp
using RestSharp;

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