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

# Recupera template

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

Recupera un template di Flows, insieme agli input e agli output di ogni versione eseguibile. `versions` è vuoto quando nessuna versione pubblicata è eseguibile tramite questa API. Funziona per qualsiasi template che puoi aprire, inclusi i template condivisi con te tramite link o pubblicati su Explore da un altro workspace, che `GET /v1/flows/templates` non elenca.

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 del template, come mostrato nell'app ElevenLabs o da `GET /v1/flows/templates`.

### Query parameters

- `versions_per_template` (integer, optional, default: 10) — Numero di versioni pubblicate da restituire per ciascun template, dalla più recente. `has_more_versions` indica quando un template ne ha altre.

## Response

### 200

Risposta riuscita

- `id` (string, required) — Passa come `template_id` in `POST /v1/flows/templates/{template_id}/runs`.
- `name` (string, required) — Il nome del template.
- `versions` (list of TemplateVersion, required) — Le versioni pubblicate che il chiamante può eseguire, dalla più recente. Vengono escluse le versioni il cui grafico usa un modello non disponibile tramite l'API, così come quelle il cui snapshot archiviato non è più disponibile; in entrambi i casi, l'elenco può essere vuoto anche se il template dispone ancora di versioni eseguibili dall'app ElevenLabs.
- `has_more_versions` (boolean, required) — Indica se questo template ha ulteriori versioni pubblicate oltre le `versions_per_template` restituite qui. Recupera `GET /v1/flows/templates/{template_id}` con un valore `versions_per_template` più alto per visualizzarne altre.
- `description` (string, optional, nullable) — La descrizione del template, se presente.

## Errors

### 422 Unprocessable Entity Error

Errore di convalida

- `detail` (list of ValidationError, optional)

## Types

### TemplateVersion

Uno snapshot pubblicato di un template e le porte con cui viene eseguito.

- `version_id` (string, required) — Passa come `version_id` in `POST /v1/flows/templates/{template_id}/runs` per associare un'esecuzione a questa snapshot.
- `published_at_unix` (integer, required) — Quando è stata pubblicata questa versione, come timestamp Unix in secondi.
- `is_latest` (boolean, required) — Indica se questa è la versione assegnata a un'esecuzione quando `version_id` viene omesso o impostato su `latest`.
- `inputs` (list of TemplatePort, required) — Gli input accettati da questa versione, nell'ordine del canvas. Ogni input è obbligatorio per un'esecuzione.
- `outputs` (list of TemplatePort, required) — Gli output prodotti da questa versione, nell'ordine del canvas.

### ValidationError

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

### TemplatePort

Una porta di input o output di una versione pubblicata del template.

- `id` (string, required) — L'ID della porta. Gli ID di input sono le chiavi della mappa `inputs` in `POST /v1/flows/templates/{template_id}/runs`; gli ID di output sono le chiavi della mappa `outputs` nella risposta dell'esecuzione.
- `content_schema` (ContentSchema, required) — Cosa accetta o produce questa porta, come `ContentSchema`. Il relativo `title` è il nome visualizzato della porta e la relativa `description` è il testo di assistenza scritto dall'autore del template. Per un input, il relativo `type` determina quale valore è accettato: `string` accetta una stringa semplice o un riferimento `generation`, `voice` accetta un riferimento `voice` e `image`/`video`/`audio` accettano un riferimento `asset`, `generation` o `inline_base64`. `number`, `integer` e `boolean` accettano un valore JSON di quel tipo. Un input `array` accetta un array JSON con un valore per elemento, ciascuno ammissibile per i relativi `items`. Gli input `object` non possono ancora essere associati tramite questa API. Uno schema `string` può contenere un `enum` degli unici valori accettati. Per un output, il relativo `type` determina quale formato `Template<Kind>Output` contiene la risposta dell'esecuzione sotto l'ID della porta.

### ValidationErrorLocItems

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