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

# テンプレート実行を作成

POST https://api.elevenlabs.io/v1/flows/templates/{template_id}/runs
Content-Type: application/json

フローテンプレートの実行を開始します。`version_id`を指定するとスナップショットを固定できます。省略するか`latest`を指定すると、公開済みの最新バージョンを実行します。入力値は、入力ポートIDをキーとして`inputs`に設定します。レスポンスには初期状態の実行が含まれ、すべての出力が`outputs`内でポートIDごとにすでに一覧表示されています。`webhook`を指定すると、`status`が`completed`または`failed`になった際に完了した実行を含む`flows_template_run`イベントを受け取れます。これが推奨される待機方法です。指定しない場合は、`status`が終端状態になるまで適度な間隔で`GET /v1/flows/templates/{template_id}/runs/{run_id}`を取得してください。

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

## 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) — ElevenLabsアプリまたは`GET /v1/flows/templates`に表示されるテンプレートのID。

### Body (application/json)

This endpoint expects a TemplateRunCreateRequest.

- `inputs` (map from string to TemplateRunInput, required) — 入力ポートIDをキーとする入力値です。実行するバージョンのすべての入力ポートを指定する必要があり、不足または不明なIDは拒否されます。入力のないテンプレートには`{}`を渡してください。
- `version_id` (string, optional, nullable) — 実行するテンプレートスナップショット。特定のバージョンIDを渡してそのスナップショットを固定するか、`latest`（省略時のデフォルト）を渡してテンプレートの最新公開バージョンを実行します。固定できるのは公開済みバージョンのみですが、テンプレートのオーナーは公開前の試用として未公開の保存済みスナップショットも固定できます。ライブドラフトがこのAPIで実行されることはありません。
- `webhook` (WebhookTarget, optional, nullable) — 含めると、実行の`status`が`completed`または`failed`に達した時点で、実行結果をワークスペースに設定されたflows Webhookへ送信します。実行全体につきイベントは1件です。`flows_template_run`イベントの`data`は、`GET /v1/flows/templates/{template_id}/runs/{run_id}`の最終応答と一致します。

## Response

### 200

成功レスポンス。

- `id` (string, required) — 実行の一意の識別子です。
- `template_id` (string, required) — この実行で使用されたテンプレート。複数のテンプレートを実行するWebhookコンシューマーは、実行とテンプレートの対応表を保持せずに各実行を区別できます。
- `version_id` (string, required) — この実行で使用されたテンプレートバージョン。実行の作成時に解決されるため、`latest`で開始した実行には実際に使用されたバージョンが記録されます。
- `status` (enum, required) — 出力から集約された実行のステータス。出力が開始するまでは`pending`、いずれかの出力が未完了の間は`generating`、すべての出力が完了すると`completed`、すべての出力が終了し少なくとも1つが失敗すると`failed`です。`completed`と`failed`は終端ステータスであり、実行がいずれかに到達すると`flows_template_run`Webhookが発火します。
  - Allowed values: `pending`, `generating`, `completed`, `failed`
- `outputs` (map from string to TemplateOutput, required) — 出力ポートIDをキーとする実行の出力。各出力は、ポートの`content_schema`の`type`に基づいて`type`で識別される`TemplateOutput`です。

## Errors

### 422 Unprocessable Entity Error

検証エラー

- `detail` (list of ValidationError, optional)

## Types

### TemplateRunInput

テンプレート入力ポートにバインドされる値です。形式は`content_schema`の指定に従います。`string`ポートにはテキスト自体を指定します。`number`、`integer`、`boolean`ポートには、その型のJSON値を指定します。ほかの場所に保存されるものは、`type`によって判別される参照です。以前の`generation`、アップロード済みの`asset`、`voice`、または`inline_base64`で渡されたメディアが該当します。`array`ポートには、スキーマの`items`で許可される要素ごとに1つの値を含むJSON配列を指定します。`object`ポートはまだこのAPIではバインドできません。 ここで定義される制約はワイヤ形式のみです。ポートが受け入れる値（`enum`や長さなど）は`content_schema`で定義され、実行パスでは同じスキーマに対して検証されます。

### WebhookTarget

- `type`: `all` (WebhookTargetAll)
- `type`: `ids` (WebhookTargetIds)
  - `ids` (list of string, required) — 結果の配信先となるワークスペースフローWebhookのID。各IDはワークスペースで設定済みのフローWebhookである必要があります。

### TemplateOutput

テンプレート実行の出力の1つです。ポートの`content_schema`の`type`に基づいて、`type`で識別されます。 ライフサイクル上の状態は`status`で確認してください。

- `type`: `array` (TemplateArrayOutput)
  - `has_more` (boolean, required) — リストに`content`以外の要素があるかどうか。
  - `id` (string, required) — この出力を生成した生成結果のID。出力を別の場所で入力として使用するには、`generation`参照として渡します。
  - `status` (enum, required) — 出力のライフサイクルステータス。出力のコンテンツフィールドが設定されると`completed`、`failure_reason`と`error_message`が設定されると`failed`で終了します。
    - Allowed values: `pending`, `generating`, `completed`, `failed`
  - `content` (list of TemplateOutput, optional, nullable) — リストの先頭要素です。順番どおりに並び、各要素はスキーマの`items`の形式に従います。`status`が`completed`の場合にのみ含まれます。`has_more`がtrueの場合、これはリスト全体ではありません。予約済み：現時点でこの種類の出力を生成するテンプレートはありませんが、対応するテンプレートを同じクライアントで実行できるよう公開されています。
  - `error_message` (string, optional, nullable) — 人間が読みやすい失敗の説明です。`status`が`failed`の場合にのみ含まれます。失敗した生成には課金されません。
  - `failure_reason` (enum, optional, nullable) — 失敗のカテゴリ。`status`が`failed`の場合にのみ存在します。
    - Allowed values: `timeout`, `model_error`, `moderated`, `invalid_parameters`, `dependency_failed`, `charging_failed`, `internal_error`
  - `next_cursor` (string, optional, nullable) — 後続のエンドポイントで`cursor`として渡すと、`content`より後の要素を取得できます。`content`にリスト全体が含まれる場合、または出力が完了する前は`null`です。予約済み：現時点でこの種の出力を生成するテンプレートはありませんが、生成するテンプレートが同じクライアントで実行できるよう公開されています。
- `type`: `audio` (TemplateAudioOutput)
  - `id` (string, required) — この出力を生成した生成結果のID。出力を別の場所で入力として使用するには、`generation`参照として渡します。
  - `status` (enum, required) — 出力のライフサイクルステータス。出力のコンテンツフィールドが設定されると`completed`、`failure_reason`と`error_message`が設定されると`failed`で終了します。
    - Allowed values: `pending`, `generating`, `completed`, `failed`
  - `content_mime_type` (string, optional, nullable) — 生成されたメディアのMIMEタイプ。`status`が`completed`の場合にのみ存在します。
  - `content_url` (string, optional, nullable) — 生成されたメディアをダウンロードするための署名付きURLです。`status`が`completed`の場合にのみ含まれます。このレスポンスの返却から約1時間で有効期限が切れます。新しいURLを取得するには、実行を再度取得してください。
  - `error_message` (string, optional, nullable) — 人間が読みやすい失敗の説明です。`status`が`failed`の場合にのみ含まれます。失敗した生成には課金されません。
  - `failure_reason` (enum, optional, nullable) — 失敗のカテゴリ。`status`が`failed`の場合にのみ存在します。
    - Allowed values: `timeout`, `model_error`, `moderated`, `invalid_parameters`, `dependency_failed`, `charging_failed`, `internal_error`
- `type`: `boolean` (TemplateBooleanOutput)
  - `id` (string, required) — この出力を生成した生成結果のID。出力を別の場所で入力として使用するには、`generation`参照として渡します。
  - `status` (enum, required) — 出力のライフサイクルステータス。出力のコンテンツフィールドが設定されると`completed`、`failure_reason`と`error_message`が設定されると`failed`で終了します。
    - Allowed values: `pending`, `generating`, `completed`, `failed`
  - `content` (boolean, optional, nullable) — 生成されたboolean値。`status`が`completed`の場合にのみ含まれます。予約済み：現時点でこの種類の出力を生成するテンプレートはありませんが、対応するテンプレートを同じクライアントで実行できるよう公開されています。
  - `error_message` (string, optional, nullable) — 人間が読みやすい失敗の説明です。`status`が`failed`の場合にのみ含まれます。失敗した生成には課金されません。
  - `failure_reason` (enum, optional, nullable) — 失敗のカテゴリ。`status`が`failed`の場合にのみ存在します。
    - Allowed values: `timeout`, `model_error`, `moderated`, `invalid_parameters`, `dependency_failed`, `charging_failed`, `internal_error`
- `type`: `image` (TemplateImageOutput)
  - `id` (string, required) — この出力を生成した生成結果のID。出力を別の場所で入力として使用するには、`generation`参照として渡します。
  - `status` (enum, required) — 出力のライフサイクルステータス。出力のコンテンツフィールドが設定されると`completed`、`failure_reason`と`error_message`が設定されると`failed`で終了します。
    - Allowed values: `pending`, `generating`, `completed`, `failed`
  - `content_mime_type` (string, optional, nullable) — 生成されたメディアのMIMEタイプ。`status`が`completed`の場合にのみ存在します。
  - `content_url` (string, optional, nullable) — 生成されたメディアをダウンロードするための署名付きURLです。`status`が`completed`の場合にのみ含まれます。このレスポンスの返却から約1時間で有効期限が切れます。新しいURLを取得するには、実行を再度取得してください。
  - `error_message` (string, optional, nullable) — 人間が読みやすい失敗の説明です。`status`が`failed`の場合にのみ含まれます。失敗した生成には課金されません。
  - `failure_reason` (enum, optional, nullable) — 失敗のカテゴリ。`status`が`failed`の場合にのみ存在します。
    - Allowed values: `timeout`, `model_error`, `moderated`, `invalid_parameters`, `dependency_failed`, `charging_failed`, `internal_error`
- `type`: `integer` (TemplateIntegerOutput)
  - `id` (string, required) — この出力を生成した生成結果のID。出力を別の場所で入力として使用するには、`generation`参照として渡します。
  - `status` (enum, required) — 出力のライフサイクルステータス。出力のコンテンツフィールドが設定されると`completed`、`failure_reason`と`error_message`が設定されると`failed`で終了します。
    - Allowed values: `pending`, `generating`, `completed`, `failed`
  - `content` (integer, optional, nullable) — 生成された整数。`status`が`completed`の場合にのみ含まれます。予約済み：現時点でこの種類の出力を生成するテンプレートはありませんが、対応するテンプレートを同じクライアントで実行できるよう公開されています。
  - `error_message` (string, optional, nullable) — 人間が読みやすい失敗の説明です。`status`が`failed`の場合にのみ含まれます。失敗した生成には課金されません。
  - `failure_reason` (enum, optional, nullable) — 失敗のカテゴリ。`status`が`failed`の場合にのみ存在します。
    - Allowed values: `timeout`, `model_error`, `moderated`, `invalid_parameters`, `dependency_failed`, `charging_failed`, `internal_error`
- `type`: `number` (TemplateNumberOutput)
  - `id` (string, required) — この出力を生成した生成結果のID。出力を別の場所で入力として使用するには、`generation`参照として渡します。
  - `status` (enum, required) — 出力のライフサイクルステータス。出力のコンテンツフィールドが設定されると`completed`、`failure_reason`と`error_message`が設定されると`failed`で終了します。
    - Allowed values: `pending`, `generating`, `completed`, `failed`
  - `content` (double, optional, nullable) — 生成された数値。`status`が`completed`の場合にのみ含まれます。予約済み：現時点でこの種類の出力を生成するテンプレートはありませんが、対応するテンプレートを同じクライアントで実行できるよう公開されています。
  - `error_message` (string, optional, nullable) — 人間が読みやすい失敗の説明です。`status`が`failed`の場合にのみ含まれます。失敗した生成には課金されません。
  - `failure_reason` (enum, optional, nullable) — 失敗のカテゴリ。`status`が`failed`の場合にのみ存在します。
    - Allowed values: `timeout`, `model_error`, `moderated`, `invalid_parameters`, `dependency_failed`, `charging_failed`, `internal_error`
- `type`: `object` (TemplateObjectOutput)
  - `id` (string, required) — この出力を生成した生成結果のID。出力を別の場所で入力として使用するには、`generation`参照として渡します。
  - `status` (enum, required) — 出力のライフサイクルステータス。出力のコンテンツフィールドが設定されると`completed`、`failure_reason`と`error_message`が設定されると`failed`で終了します。
    - Allowed values: `pending`, `generating`, `completed`, `failed`
  - `content` (map from string to TemplateOutput, optional, nullable) — フィールド名をキーとし、各フィールドのスキーマ形式に従うフィールドごとの出力です。`status`が`completed`の場合にのみ存在します。予約済み：この種類の出力を生成するテンプレートはまだありませんが、将来そのようなテンプレートを同じクライアントで実行できるよう公開されています。
  - `error_message` (string, optional, nullable) — 人間が読みやすい失敗の説明です。`status`が`failed`の場合にのみ含まれます。失敗した生成には課金されません。
  - `failure_reason` (enum, optional, nullable) — 失敗のカテゴリ。`status`が`failed`の場合にのみ存在します。
    - Allowed values: `timeout`, `model_error`, `moderated`, `invalid_parameters`, `dependency_failed`, `charging_failed`, `internal_error`
- `type`: `string` (TemplateStringOutput)
  - `id` (string, required) — この出力を生成した生成結果のID。出力を別の場所で入力として使用するには、`generation`参照として渡します。
  - `status` (enum, required) — 出力のライフサイクルステータス。出力のコンテンツフィールドが設定されると`completed`、`failure_reason`と`error_message`が設定されると`failed`で終了します。
    - Allowed values: `pending`, `generating`, `completed`, `failed`
  - `content` (string, optional, nullable) — 生成されたテキスト。`status`が`completed`の場合にのみ含まれます。
  - `error_message` (string, optional, nullable) — 人間が読みやすい失敗の説明です。`status`が`failed`の場合にのみ含まれます。失敗した生成には課金されません。
  - `failure_reason` (enum, optional, nullable) — 失敗のカテゴリ。`status`が`failed`の場合にのみ存在します。
    - Allowed values: `timeout`, `model_error`, `moderated`, `invalid_parameters`, `dependency_failed`, `charging_failed`, `internal_error`
- `type`: `video` (TemplateVideoOutput)
  - `id` (string, required) — この出力を生成した生成結果のID。出力を別の場所で入力として使用するには、`generation`参照として渡します。
  - `status` (enum, required) — 出力のライフサイクルステータス。出力のコンテンツフィールドが設定されると`completed`、`failure_reason`と`error_message`が設定されると`failed`で終了します。
    - Allowed values: `pending`, `generating`, `completed`, `failed`
  - `content_mime_type` (string, optional, nullable) — 生成されたメディアのMIMEタイプ。`status`が`completed`の場合にのみ存在します。
  - `content_url` (string, optional, nullable) — 生成されたメディアをダウンロードするための署名付きURLです。`status`が`completed`の場合にのみ含まれます。このレスポンスの返却から約1時間で有効期限が切れます。新しいURLを取得するには、実行を再度取得してください。
  - `error_message` (string, optional, nullable) — 人間が読みやすい失敗の説明です。`status`が`failed`の場合にのみ含まれます。失敗した生成には課金されません。
  - `failure_reason` (enum, optional, nullable) — 失敗のカテゴリ。`status`が`failed`の場合にのみ存在します。
    - Allowed values: `timeout`, `model_error`, `moderated`, `invalid_parameters`, `dependency_failed`, `charging_failed`, `internal_error`

### ValidationError

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

### ValidationErrorLocItems

## Examples

**Request**

```json
{
  "inputs": {
    "prompt": "a corgi on a surfboard",
    "reference": {
      "asset_id": "5xM2KqOnZyce22SPZ9d4",
      "type": "asset"
    }
  },
  "version_id": "latest",
  "webhook": {
    "type": "all"
  }
}
```

**Response**

```json
{
  "id": "sess_JWr5N6X9ZTqf8jD2LmQb",
  "template_id": "tmpl_abc123",
  "version_id": "ver_01hxyz",
  "status": "generating",
  "outputs": {
    "marketing_title": {
      "type": "string",
      "id": "Kx2mP7Y4WVrg9kE3NnRc",
      "status": "completed",
      "content": "Ride the wave."
    },
    "product_demo": {
      "type": "video",
      "id": "QWr5N6X9ZTqf8jD2La3B",
      "status": "generating"
    },
    "product_still": {
      "type": "image",
      "id": "JWr5N6X9ZTqf8jD2LmQb",
      "status": "completed",
      "content_mime_type": "image/png",
      "content_url": "https://storage.googleapis.com/generations/JWr5N6X9ZTqf8jD2LmQb"
    }
  }
}
```

**SDK Code**

```python
import requests

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

payload = {
    "inputs": {
        "prompt": "a corgi on a surfboard",
        "reference": {
            "asset_id": "5xM2KqOnZyce22SPZ9d4",
            "type": "asset"
        }
    },
    "version_id": "latest",
    "webhook": { "type": "all" }
}
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.elevenlabs.io/v1/flows/templates/template_id/runs';
const options = {
  method: 'POST',
  headers: {'Content-Type': 'application/json'},
  body: '{"inputs":{"prompt":"a corgi on a surfboard","reference":{"asset_id":"5xM2KqOnZyce22SPZ9d4","type":"asset"}},"version_id":"latest","webhook":{"type":"all"}}'
};

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"
	"strings"
	"net/http"
	"io"
)

func main() {

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

	payload := strings.NewReader("{\n  \"inputs\": {\n    \"prompt\": \"a corgi on a surfboard\",\n    \"reference\": {\n      \"asset_id\": \"5xM2KqOnZyce22SPZ9d4\",\n      \"type\": \"asset\"\n    }\n  },\n  \"version_id\": \"latest\",\n  \"webhook\": {\n    \"type\": \"all\"\n  }\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("Content-Type", "application/json")

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

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n  \"inputs\": {\n    \"prompt\": \"a corgi on a surfboard\",\n    \"reference\": {\n      \"asset_id\": \"5xM2KqOnZyce22SPZ9d4\",\n      \"type\": \"asset\"\n    }\n  },\n  \"version_id\": \"latest\",\n  \"webhook\": {\n    \"type\": \"all\"\n  }\n}"

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.post("https://api.elevenlabs.io/v1/flows/templates/template_id/runs")
  .header("Content-Type", "application/json")
  .body("{\n  \"inputs\": {\n    \"prompt\": \"a corgi on a surfboard\",\n    \"reference\": {\n      \"asset_id\": \"5xM2KqOnZyce22SPZ9d4\",\n      \"type\": \"asset\"\n    }\n  },\n  \"version_id\": \"latest\",\n  \"webhook\": {\n    \"type\": \"all\"\n  }\n}")
  .asString();
```

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

$client = new \GuzzleHttp\Client();

$response = $client->request('POST', 'https://api.elevenlabs.io/v1/flows/templates/template_id/runs', [
  'body' => '{
  "inputs": {
    "prompt": "a corgi on a surfboard",
    "reference": {
      "asset_id": "5xM2KqOnZyce22SPZ9d4",
      "type": "asset"
    }
  },
  "version_id": "latest",
  "webhook": {
    "type": "all"
  }
}',
  'headers' => [
    'Content-Type' => 'application/json',
  ],
]);

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

```csharp
using RestSharp;

var client = new RestClient("https://api.elevenlabs.io/v1/flows/templates/template_id/runs");
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "{\n  \"inputs\": {\n    \"prompt\": \"a corgi on a surfboard\",\n    \"reference\": {\n      \"asset_id\": \"5xM2KqOnZyce22SPZ9d4\",\n      \"type\": \"asset\"\n    }\n  },\n  \"version_id\": \"latest\",\n  \"webhook\": {\n    \"type\": \"all\"\n  }\n}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = ["Content-Type": "application/json"]
let parameters = [
  "inputs": [
    "prompt": "a corgi on a surfboard",
    "reference": [
      "asset_id": "5xM2KqOnZyce22SPZ9d4",
      "type": "asset"
    ]
  ],
  "version_id": "latest",
  "webhook": ["type": "all"]
] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.elevenlabs.io/v1/flows/templates/template_id/runs")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "POST"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

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