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

# チームのテンプレートを実行

> **Note**
>
> **ハウツーガイド** · [テンプレートクイックスタート](/docs/ja/eleven-api/guides/cookbooks/templates)を完了していることを前提としています。

このガイドでは、チームで作成したテンプレートを実行する方法を説明します。コードのコピー、各入力タイプの指定、結果を受け取るwebhookの選択、バージョンの固定、出力の読み取りを扱います。

## 始める前に

* テンプレートがワークスペースと共有されています。作成者はテンプレートの共有オプションで**ワークスペース**を選択して設定します。**自分のみ**として共有されたテンプレートを実行できるのは作成者だけです。
* ワークスペースには、テンプレート実行を購読するwebhookがあります。画像＆ビデオwebhookガイドの[始める前に](/docs/ja/eleven-api/guides/how-to/image-and-video/webhooks#before-you-begin)で設定できます。
* ワークスペースがプロ以上のプランであり、APIキーに**画像＆ビデオ**権限があります。

## テンプレートのコードをコピー

ElevenLabsアプリでテンプレートを開き、**API**タブを選択します。Flowsでは、テンプレートの作成者がテンプレートのサイドバーにある**API**ボタンから同じコードを開けます。

このタブは、テンプレートで公開された入力と出力からスニペットを生成します。**結果の取得方法を選択**で**Webhook**を選択し、コードの上にある**Python**または**TypeScript**を選択します。タブには**実行を開始**スニペットと**結果を処理**スニペットが表示されます。アプリケーションが実行を開始する場所に**実行を開始**をコピーし、webhookハンドラーに**結果を処理**をコピーします。**実行を開始**の各プレースホルダーは1つの入力を表し、**結果を処理**では各出力をIDで読み取ります。

> **Note**
>
> テンプレートでAPIが提供していないモデルを使用している場合、タブに警告が表示されます。APIで実行できる公開バージョンがない場合はスニペットが表示されません。最新バージョンだけが実行できない場合、スニペットは実行可能な最新バージョンを実行します。Flowsでは、作成者が警告内の**キャンバスに表示**を選択して該当ノードをハイライトし、各ノードを[利用可能なモデル](/docs/ja/eleven-api/guides/cookbooks/image-and-video#available-models)に切り替え、再度公開します。

## 各入力を渡す

実行するバージョンのすべての入力には、入力IDをキーとして値を指定する必要があります。値の形式は入力タイプによって異なります。

| 入力タイプ                        | 値                                      |
| ---------------------------- | -------------------------------------- |
| `string`                     | テキスト自体。                                |
| `number`、`integer`、`boolean` | そのタイプのJSON値。                           |
| `image`、`video`、`audio`      | アップロード済みアセット、以前の生成結果、またはbase64データへの参照。 |
| `voice`                      | ワークスペース内の音声への参照。                       |
| `array`                      | 要素ごとに1つの値を持つリスト。各値はその要素タイプに対応した形式です。   |

`object`タイプの入力は、まだAPI経由で渡せません。APIタブに警告が表示されます。

```python
run = client.flows.templates.runs.create(
    template_id="Yz4DETxRv4uXyIo5PnEy",
    version_id="Kqs4nRrpndEjQ54BhbwE",
    inputs={
        "headline": "Autumn collection, 20% off",
        "duration_secs": 8,
        "product_photo": TemplateInputReference_Asset(asset_id="Rk3pQm8vTzL1yWcN0bJd"),
        "previous_shot": TemplateInputReference_Generation(generation_id="JWr5N6X9ZTqf8jD2LmQb"),
        "phone_photo": TemplateInputReference_InlineBase64(
            content_base_64=photo,
            mime_type="image/jpeg",
        ),
        "narrator": TemplateInputReference_Voice(voice_id="JBFqnCBsd6RMkjVDRZzb"),
    },
    webhook=WebhookTarget_All(),
)
```

```typescript
const run = await client.flows.templates.runs.create("Yz4DETxRv4uXyIo5PnEy", {
  versionId: "Kqs4nRrpndEjQ54BhbwE",
  inputs: {
    headline: "Autumn collection, 20% off",
    duration_secs: 8,
    product_photo: { type: "asset", assetId: "Rk3pQm8vTzL1yWcN0bJd" },
    previous_shot: { type: "generation", generationId: "JWr5N6X9ZTqf8jD2LmQb" },
    phone_photo: {
      type: "inline_base64",
      contentBase64: photo.toString("base64"),
      mimeType: "image/jpeg",
    },
    narrator: { type: "voice", voiceId: "JBFqnCBsd6RMkjVDRZzb" },
  },
  webhook: { type: "all" },
});
```

入力IDはどちらのSDKでもテンプレートで指定されたスペルのままです。`assetId`などの参照フィールドだけは、TypeScriptではキャメルケースになります。

base64データはデコード後25MBまでに制限され、実行後は保持されません。同じファイルを複数の実行に渡すには、一度アップロードしてアセットIDを渡します。詳しくは[参照とアセット](/docs/ja/eleven-api/guides/how-to/image-and-video/references)を参照してください。

## 結果を取得

[webhook](/docs/ja/eleven-api/resources/webhooks)は、完了した実行を`flows_template_run`イベントとして受け取ります。APIタブの**Webhook**スニペットでは`{"type": "all"}`を渡します。これにより、テンプレート実行を購読しているワークスペース内のすべてのwebhookに完了した実行が送信されます。特定のwebhookに送信するには、そのIDをリストします。

```python
webhook=WebhookTarget_Ids(ids=["Q8mVr2LpXcT4nB6yJdKw"])
```

```typescript
webhook: { type: "ids", ids: ["Q8mVr2LpXcT4nB6yJdKw"] }
```

リスト内の各webhookは、テンプレート実行を購読している必要があります。購読しているwebhookがないのにwebhookを要求する実行は拒否されるため、結果を配信する先がない状態で実行が完了することはありません。

単発スクリプトやバッチジョブには、[テンプレートクイックスタート](/docs/ja/eleven-api/guides/cookbooks/templates)で使用した`create_and_wait`を使うと、代わりに実行の完了を待機できます。

## バージョンを固定

スニペットは、APIで実行できる最新の公開バージョンの`version_id`を渡します。固定したままにしてください。作成者が再度公開した場合、固定された実行ではテスト済みのバージョンが引き続き実行されます。一方、`latest`は新しいバージョンに切り替わるため、入力の名前変更や追加が行われる可能性があります。

新しいバージョンに移行するには、もう一度APIタブを開き、コードで渡している入力と比較して、`version_id`を更新します。コードから確認する場合は、`flows.templates.get`がAPIで実行できるテンプレートの公開バージョンを新しい順に返し、それぞれの入力と出力も含まれます。

## 出力を読み取る

完了した実行の`outputs`には、テンプレートの出力ごとに1つのエントリがあり、出力IDをキーとしています。各出力にはそれぞれ`status`があるため、他の出力が完了していても1つの出力だけ失敗することがあります。失敗した出力には`failure_reason`と`error_message`が含まれます。完了したメディア出力には`content_url`と`content_mime_type`が含まれ、完了した`string`出力には`content`が含まれます。

```python
run = TemplateRunResponse.model_validate(event["data"])

for output_id, output in run.outputs.items():
    if output.status == "failed":
        print(output_id, "failed:", output.failure_reason, output.error_message)
    elif output.type == "image" or output.type == "video" or output.type == "audio":
        print(output_id, output.content_url, output.content_mime_type)
    elif output.type == "string":
        print(output_id, output.content)
```

```typescript
const run = event.data;

for (const [outputId, output] of Object.entries(run.outputs)) {
  if (output.status === "failed") {
    console.error(outputId, "failed:", output.failure_reason, output.error_message);
  } else if (output.type === "image" || output.type === "video" || output.type === "audio") {
    console.log(outputId, output.content_url, output.content_mime_type);
  } else if (output.type === "string") {
    console.log(outputId, output.content);
  }
}
```

TypeScript SDKの`constructEvent`は、送信されたイベントのJSONをそのまま返すため、フィールドはsnake_caseです。

再試行と重複イベントについては、[配信の動作](/docs/ja/eleven-api/guides/how-to/image-and-video/webhooks#delivery-behavior)を参照してください。