環境変数
環境変数
リソースを複製せずに、同じエージェントを開発、ステージング、本番環境にデプロイできます。
環境変数を使用すると、ツールURL、シークレット、ヘッダー、認証接続について、環境ごとの値を定義できます。単一のエージェントおよびツール設定をすべての環境で使用でき、URL、APIキー、認証は会話時に指定された環境に応じて動的に解決されます。
概要
環境変数を使用せずに複数の環境(開発、ステージング、本番)にエージェントをデプロイするには、環境ごとにエージェントとツールを複製し、その設定を手動で同期し続ける必要があります。これにより、次の問題が生じます。
- 環境間の設定の乖離
- 複製されたエージェントIDにまたがる分析データの分散
- ステージングから本番への移行時の昇格の手間
環境変数は、環境ごとに異なる値を格納する、再利用可能なワークスペーススコープのリソースを導入することでこれを解決します。ツールとMCPサーバーはテンプレート構文を使ってこれらの変数を参照し、会話の環境に基づいて実行時に正しい値が解決されます。

基本概念
環境変数
環境変数は、ラベルと環境ごとの値のセットを持つワークスペーススコープのリソースです。3つのタイプがあります。
各環境変数には、デフォルトのproduction環境の値が必要です。追加の環境(例:staging、development)は任意です。
テンプレート構文
URLフィールドでは、{{system__env_<label>}}構文を使用して環境変数を参照します。
api(本番)とstaging.api(ステージング)の値を持つ環境変数api_hostの場合、次のように解決されます。
productionの場合:https://api.example.com/v1/text-to-speechstagingの場合:https://staging.api.example.com/v1/text-to-speech
この構文は動的変数と一貫しており、WebhookツールおよびMCPサーバー接続のURLフィールドで使用できます。
環境変数は、通話前WebhookのURLとヘッダー(Conversation Initiation Client Data Webhook)、および Developers > Webhooksで設定する通話後WebhookのURLでもサポートされています。テンプレートは会話の環境を使用して解決されるため、同じ Webhook設定で環境ごとに異なるエンドポイントを対象にできます。通話前Webhookでは、環境を電話番号で事前に設定することも、Webhookの レスポンスで動的に返すこともできます(以下のTelephonyを参照)。
URLは、環境変数参照より前にhttps://で始まる必要があります。たとえば、https:// {{ system__env_api_host }}.example.com/v1/dataは有効ですが、{{ system__env_api_host }}/v1/data
は無効です。これは検証とセキュリティのために必要であり、環境変数の値でプロトコルを制御することはできません。
解決とフォールバック
会話が特定の環境で実行されると、システムは次のように環境変数を解決します。
- リクエストされた環境(例:
staging)の値を検索します - その環境の値がない場合、
productionの値にフォールバックします - 変数を解決できない場合、ツール呼び出しは設定エラーで失敗します
このフォールバック動作により、本番環境と異なる環境についてのみ値を定義すればよくなります。
環境変数を作成する
環境変数はまだElevenLabs CLIでは管理できません。ダッシュボードまたはSDKを使用してください。
ダッシュボードで作成
APIで作成
環境変数を使用する
WebhookツールのURLで使用する
WebhookツールのURLフィールドでテンプレート構文を使用すると、環境ごとにベースURLを解決できます。

たとえば、次のように設定したツールURLは:
本番環境ではhttps://api.example.com/v1/weather?lat=40.7&lon=-74.0に、ステージング環境ではhttps://staging.api.example.com/v1/weather?lat=40.7&lon=-74.0に解決されます。
1つのURLで複数の環境変数とリテラルセグメントを組み合わせることもできます。
APIの例
Webhookツールのヘッダーで使用する
シークレット環境変数はリクエストヘッダーで使用できます。シークレットIDをハードコードする代わりに環境変数を参照すると、環境ごとに異なるシークレットを使用できます。ダッシュボードでツールヘッダーを設定する際は、静的なシークレットではなく環境変数を選択してください。実行時に、ヘッダー値は現在の環境に保存されているシークレットに解決されます。
APIの例
request_headersフィールドに環境変数の参照を渡します。
Webhookツールの認証接続で使用する
認証接続(OAuth2、JWT、Basic Auth)も環境ごとに解決できます。これは、ステージング環境と本番環境で異なるOAuthクライアントやトークンエンドポイントを使用する場合に便利です。

ツール設定では、認証接続を直接選択する代わりに、auth_connectionタイプの環境変数を選択します。現在の環境に対応する認証接続が実行時に解決されます。
APIの例
auth_connectionフィールドで環境変数を参照します。
MCPサーバー接続で使用する
環境変数は、MCPサーバー接続でもWebhookツールと同様に使用できます。以下で利用できます。
- サーバーURL:MCPサーバーURLをテンプレート化し、環境ごとに異なるサーバーを指定
- リクエストヘッダー:認証ヘッダーにシークレット環境変数を使用
- 認証接続:OAuthベースのMCPサーバーに認証接続環境変数を使用
たとえば、次のように設定したMCPサーバーURLは:
環境に応じて異なるMCPサーバーエンドポイントに解決されます。
カスタムLLM設定で使用する
カスタムLLMを使用する場合、環境変数でAPIキーとリクエストヘッダーをテンプレート化できます。これにより、環境ごとに異なるモデルエンドポイントと認証情報を使用できます。
カスタムLLMのURLフィールドでは、同じ{{system__env_<label>}}テンプレート構文をサポートしています。api_keyフィールドは環境変数参照を受け付けるため、環境ごとに異なるAPIキーを使用できます。
APIの例
環境を指定する
環境は会話の開始時に設定され、会話全体を通じて維持されます。環境を指定しない場合、デフォルトでproductionになります。
ダッシュボードでテストする際は、エージェントプレビューのドロップダウンから環境を選択します。

WebSocket
会話WebSocketへの接続時に、environmentクエリパラメータを渡します。
WebRTC(署名付きURL/トークン)
WebRTCを使用する場合は、会話トークンをリクエストするときにenvironmentパラメータを渡します。
電話(TwilioおよびSIPトランク)
電話番号は特定の環境および特定のエージェントブランチに固定できます。これにより、ツールが開発用APIに対して実行されるエージェントの開発ブランチへ、テスト用電話番号を簡単にルーティングできます。

着信通話では、環境は次の順序で解決されます。
- サーバーが通話ごとに動的に指定する場合、会話開始Webhookが返す
environment値 - 電話番号自体に保存されている環境
- デフォルトの
production
同じ優先順位がbranch_idにも適用されます。その後、通話前WebhookのURLとヘッダー、および通話後WebhookのURLは、選択された環境を使用して{{system__env_*}}テンプレートを解決します。
電話番号を環境とブランチに固定します(elevenlabs Python SDK ≥ 2.47.0または@elevenlabs/elevenlabs-js ≥ 2.47.0が必要です)。
発信通話では、TwilioまたはSIPトランクの発信エンドポイントを介して通話を開始するときに、environmentフィールドを渡します。
React SDK
useConversationフック、またはセッション開始時にenvironmentオプションを渡します。
例:マルチ環境エージェント
この例では、開発、ステージング、本番の各環境で異なるAPIバックエンドと認証情報を使用する、単一エージェントの完全なセットアップを紹介します。
命名の制約
- ラベル:英数字とアンダースコアのみ(例:
base_url、api_key_v2) - 環境名:小文字で始める必要があり、小文字、数字、アンダースコア、ハイフンのみを使用できます。最大64文字です(例:
production、staging、dev-us-east) - すべての環境変数には
production値が必要です


