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

# Elenca template

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

Elenca i template di flow pubblicati nel tuo workspace, insieme agli input e agli output di ogni versione eseguibile. Usa gli ID qui come `template_id` / `version_id` in `POST /v1/flows/templates/{template_id}/runs`. Le versioni create su modelli non disponibili tramite l'API vengono omesse, quindi `versions` è vuoto quando nessuna versione pubblicata di un template è eseguibile tramite questa API. I template condivisi con te tramite link o pubblicati in Esplora da un altro workspace non sono elencati, ma possono comunque essere recuperati ed eseguiti tramite `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) — Cursore di paginazione: il valore `next_cursor` della risposta della pagina precedente. Omettilo per la prima pagina.
- `page_size` (integer, optional, default: 10) — Numero di template da restituire per pagina. Inferiore al limite dell'elenco delle esecuzioni perché ogni riga espande gli schemi di input e output delle proprie versioni.
- `versions_per_template` (integer, optional, default: 3) — Numero di versioni pubblicate da restituire per ciascun template, dalla più recente. `has_more_versions` indica quando un template ne ha altre.
- `search` (string, optional, nullable) — Restituisci solo i template il cui nome o descrizione contiene questo testo.

## Response

### 200

Risposta riuscita

- `templates` (list of TemplateSummary, required) — I template in questa pagina, con i più recentemente aggiornati per primi. Una pagina può contenere meno di `page_size` template, o nessuno, perché i template che non puoi eseguire vengono filtrati dopo la lettura della pagina — continua a paginare finché `has_more` è true.
- `next_cursor` (string, required, nullable) — Passa come `cursor` per recuperare la pagina successiva. `null` quando non ci sono altre pagine.
- `has_more` (boolean, required) — Se esistono altri template oltre questa pagina.

## Errors

### 422 Unprocessable Entity Error

Errore di convalida

- `detail` (list of ValidationError, optional)

## Types

### TemplateSummary

Un template che il chiamante può eseguire e le relative versioni eseguibili.

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

### ValidationError

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

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

### ValidationErrorLocItems

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

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