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

# Miljövariabler

Med miljövariabler kan du definiera värden per miljö för verktygs-URL:er, hemligheter, rubriker och autentiseringsanslutningar. En enda agent- och verktygskonfiguration fungerar i alla dina miljöer – URL:er, API-nycklar och autentisering löses dynamiskt utifrån miljön som anges när samtalet startar.

## Översikt

Utan miljövariabler kräver distribution av en agent i flera miljöer (utveckling, staging, produktion) att du duplicerar agenter och verktyg för varje miljö och sedan manuellt håller deras konfigurationer synkroniserade. Det leder till:

* **Konfigurationsavvikelser** mellan miljöer
* **Fragmenterad analys** över duplicerade agent-ID:n
* **Friktion vid befordran** när du flyttar från staging till produktion

Miljövariabler löser detta genom att införa en återanvändbar, workspaceomfattande resurs som lagrar olika värden per miljö. Verktyg och MCP-servrar refererar till dessa variabler med mallsyntax, och rätt värde löses vid körning utifrån samtalets miljö.

![Översikt över miljövariabler](/docs/_fern-img/75bbfad6349ff43d078f62e75f7d3549858897158e55ada3dcdbf261a963b055.webp)

## Grundläggande begrepp

### Miljövariabler

En miljövariabel är en workspaceomfattande resurs med en etikett och en uppsättning värden per miljö. Det finns tre typer:

| Typ                          | Beskrivning                                                 | Exempel på användningsfall                               |
| ---------------------------- | ----------------------------------------------------------- | -------------------------------------------------------- |
| **Sträng**                   | Klartextvärden som varierar per miljö                       | Bas-URL:er, värdnamn, konfigurationsvärden               |
| **Hemlighet**                | Referenser till workspacehemligheter, lösta per miljö       | API-nycklar, bearer-token, webhook-signeringshemligheter |
| **Autentiseringsanslutning** | Referenser till autentiseringsanslutningar, lösta per miljö | OAuth2-autentiseringsuppgifter, JWT-konfigurationer      |

Varje miljövariabel måste ha ett värde för standardmiljön `production`. Ytterligare miljöer (t.ex. `staging`, `development`) är valfria.

### Mallsyntax

Referera till miljövariabler i URL-fält med syntaxen `{{system__env_<label>}}`:

```
https://{{system__env_api_host}}.example.com/v1/text-to-speech
```

Med miljövariabeln `api_host` som har värdena `api` (produktion) och `staging.api` (staging) löses detta till:

* I `production`: `https://api.example.com/v1/text-to-speech`
* I `staging`: `https://staging.api.example.com/v1/text-to-speech`

Den här syntaxen är konsekvent med [dynamiska variabler](/docs/sv/eleven-agents/customization/personalization/dynamic-variables) och fungerar i URL-fält för webhookverktyg och MCP-serveranslutningar.

> **Note**
>
> Miljövariabler stöds även i URL:er och rubriker för **webhooks före samtal** (Conversation Initiation Client Data Webhook) samt i URL:er för **webhooks efter samtal** som konfigureras under **Developers > Webhooks**. Mallar löses med samtalets miljö, så samma webhookkonfiguration kan rikta sig mot olika slutpunkter per miljö. För webhooks före samtal kan miljön anges i förväg på telefonnumret eller returneras dynamiskt i ditt websvar (se [Telefoni](#telephony-twilio-and-sip-trunk) nedan).

> **Note**
>
> URL:er måste börja med `https://` före alla miljövariabelreferenser. Till exempel är `https://   {{ system__env_api_host }}.example.com/v1/data` giltigt, men `{{ system__env_api_host }}/v1/data`
> är det inte. Detta krävs för validering och säkerhet – miljövariabelvärden kan inte styra protokollet.

### Upplösning och återgång

När ett samtal körs i en specifik miljö löser systemet miljövariabler enligt följande:

1. Slå upp värdet för den begärda miljön (t.ex. `staging`)
2. Om inget värde finns för miljön **återgå till värdet för `production`**
3. Om variabeln inte kan lösas misslyckas verktygsanropet med ett konfigurationsfel

Detta återgångsbeteende innebär att du bara behöver definiera värden för miljöer som skiljer sig från produktion.

## Skapa miljövariabler

> **Note**
>
> Miljövariabler kan ännu inte hanteras via ElevenLabs CLI – använd instrumentpanelen eller SDK:t.

#### Skapa via instrumentpanelen

Gå till **Developers > Environment Variables** i ElevenLabs instrumentpanel.

#### Skapa en miljö

Definiera miljöer som motsvarar dina distributionssteg (t.ex. `eu`, `india`, `staging`). Miljön `production` är alltid tillgänglig som standard.

#### Skapa en variabel

Klicka på **Add variable** och välj variabeltyp:

* **Sträng**: Ange en etikett och ett värde för varje miljö
* **Hemlighet**: Välj en befintlig workspacehemlighet för varje miljö
* **Autentiseringsanslutning**: Välj en befintlig autentiseringsanslutning för varje miljö

![Skapa variabel](/docs/_fern-img/8ab18d57956167aaa152e10b4d2890b208c8ba826ef0cbbf9082c8e1602f5246.webp)

#### Skapa via API:et

#### Sträng

```python
from elevenlabs import ElevenLabs

elevenlabs = ElevenLabs()

elevenlabs.conversational_ai.environment_variables.create(
    label="api_host",
    type="string",
    values={
        "production": "api",
        "staging": "staging.api",
        "development": "dev.api",
    },
)
```

```typescript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const elevenlabs = new ElevenLabsClient();

await elevenlabs.conversationalAi.environmentVariables.create({
  label: "api_host",
  type: "string",
  values: {
    production: "api",
    staging: "staging.api",
    development: "dev.api",
  },
});
```

#### Hemlighet

```python
from elevenlabs import ElevenLabs

elevenlabs = ElevenLabs()

elevenlabs.conversational_ai.environment_variables.create(
    label="my_api_key",
    type="secret",
    values={
        "production": {"secret_id": "your-production-secret-id"},
        "staging": {"secret_id": "your-staging-secret-id"},
    },
)
```

```typescript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const elevenlabs = new ElevenLabsClient();

await elevenlabs.conversationalAi.environmentVariables.create({
  label: "my_api_key",
  type: "secret",
  values: {
    production: { secretId: "your-production-secret-id" },
    staging: { secretId: "your-staging-secret-id" },
  },
});
```

#### Autentiseringsanslutning

```python
from elevenlabs import ElevenLabs

elevenlabs = ElevenLabs()

elevenlabs.conversational_ai.environment_variables.create(
    label="my_oauth_connection",
    type="auth_connection",
    values={
        "production": {"auth_connection_id": "your-production-auth-connection-id"},
        "staging": {"auth_connection_id": "your-staging-auth-connection-id"},
    },
)
```

```typescript
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const elevenlabs = new ElevenLabsClient();

await elevenlabs.conversationalAi.environmentVariables.create({
  label: "my_oauth_connection",
  type: "auth_connection",
  values: {
    production: { authConnectionId: "your-production-auth-connection-id" },
    staging: { authConnectionId: "your-staging-auth-connection-id" },
  },
});
```

## Använda miljövariabler

### I URL:er för webhook-verktyg

Använd mallsyntaxen i URL-fältet för ett [webhook-verktyg](/docs/sv/eleven-agents/customization/tools/webhook-tools) för att låta bas-URL:en anpassas efter miljö.

![Miljövariabel i verktygs-URL](/docs/_fern-img/8a9d4a7fbd589565c57f52aa82200c28fe7fcfcc80ff9a3ec41a99ca315a9f50.webp)

Till exempel kan en verktygs-URL konfigurerad som:

```
https://{{system__env_api_host}}.example.com/v1/weather?lat={latitude}&lon={longitude}
```

översättas till `https://api.example.com/v1/weather?lat=40.7&lon=-74.0` i produktion och `https://staging.api.example.com/v1/weather?lat=40.7&lon=-74.0` i staging.

Du kan kombinera flera miljövariabler och bokstavliga segment i en enda URL:

```
https://{{system__env_api_host}}.example.com/{{system__env_api_version}}/weather
```

#### API-exempel

**`Python`**

```python title="Python"

from elevenlabs.client import ElevenLabs

client = ElevenLabs(api_key="your-api-key")

agent = client.conversational_ai.agents.create(
    conversation_config={
        "agent": {
            "first_message": "Hello! How can I help?",
            "prompt": {"prompt": "You are a helpful assistant."},
        },
        "tools": [
            {
                "type": "webhook",
                "name": "get_data",
                "description": "Fetches data from the API",
                "api_schema": {
                    "url": "https://{{system__env_api_host}}.example.com/v1/data",
                    "method": "GET",
                },
            }
        ],
    },
)
```

**`JavaScript`**

```javascript title="JavaScript"
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const client = new ElevenLabsClient({ apiKey: "your-api-key" });

const agent = await client.conversationalAi.agents.create({
  conversationConfig: {
    agent: {
      firstMessage: "Hello! How can I help?",
      prompt: { prompt: "You are a helpful assistant." },
    },
    tools: [
      {
        type: "webhook",
        name: "get_data",
        description: "Fetches data from the API",
        apiSchema: {
          url: "https://{{system__env_api_host}}.example.com/v1/data",
          method: "GET",
        },
      },
    ],
  },
});
```

### I rubriker för webhook-verktyg

Hemliga miljövariabler kan användas i begäranderubriker. I stället för att hårdkoda ett hemligt ID kan du referera till en miljövariabel så att olika hemligheter används för varje miljö. När du konfigurerar en verktygsrubrik i dashboarden väljer du en miljövariabel i stället för en statisk hemlighet. Vid körning översätts rubrikvärdet till den hemlighet som lagras för den aktuella miljön.

#### API-exempel

Skicka en referens till en miljövariabel i fältet `request_headers`:

```json
{
  "api_schema": {
    "url": "https://{{system__env_api_host}}.example.com/v1/data",
    "method": "GET",
    "request_headers": {
      "X-Api-Key": { "env_var_label": "my_api_key" }
    }
  }
}
```

### I auth-anslutningar för webhook-verktyg

Auth-anslutningar (OAuth2, JWT, Basic Auth) kan också översättas per miljö. Det är användbart när dina staging- och produktionsmiljöer använder olika OAuth-klienter eller token-slutpunkter.

![Auth-anslutning för miljövariabel](/docs/_fern-img/41115e31cac8c55360cb4f5783a4d03cf63ea51a6f5baa2812993d70d7c4a4d5.webp)

I verktygskonfigurationen väljer du en miljövariabel av typen `auth_connection` i stället för att välja en auth-anslutning direkt. Rätt auth-anslutning för den aktuella miljön översätts vid körning.

#### API-exempel

Referera till en miljövariabel i fältet `auth_connection`:

```json
{
  "api_schema": {
    "url": "https://{{system__env_api_host}}.example.com/v1/data",
    "method": "GET",
    "auth_connection": { "env_var_label": "my_oauth_connection" }
  }
}
```

### I MCP-serveranslutningar

Miljövariabler fungerar med anslutningar till [MCP-servrar](/docs/sv/eleven-agents/customization/tools/mcp) på samma sätt som med webhook-verktyg. Du kan använda dem i:

* **Server-URL**: Använd en mall för MCP-serverns URL för att peka på olika servrar per miljö
* **Begäranderubriker**: Använd hemliga miljövariabler för autentiseringsrubriker
* **Auth-anslutningar**: Använd miljövariabler för auth-anslutningar till OAuth-baserade MCP-servrar

Till exempel kan en MCP-server-URL konfigurerad som:

```
https://{{system__env_mcp_host}}.example.com/mcp
```

översättas till olika MCP-serverändpunkter beroende på miljön.

### I anpassade LLM-konfigurationer

När du använder en [anpassad LLM](/docs/sv/eleven-agents/customization/llm/custom-llm) kan miljövariabler användas som mall för API-nyckeln och begäranderubriker. Det gör att du kan använda olika modelländpunkter och autentiseringsuppgifter i olika miljöer.

URL-fältet för anpassade LLM:er har stöd för samma mallsyntax, `{{system__env_<label>}}`. Fältet `api_key` accepterar en referens till en miljövariabel så att olika API-nycklar används per miljö.

#### API-exempel

```json
{
  "conversation_config": {
    "agent": {
      "prompt": { "prompt": "You are a helpful assistant." },
      "llm": {
        "custom_llm": {
          "url": "https://{{system__env_llm_host}}.example.com/v1/chat/completions",
          "model_id": "my-model",
          "api_key": { "env_var_label": "llm_api_key" }
        }
      }
    }
  }
}
```

## Ange miljön

Miljön anges när konversationen startar och behålls under hela konversationen. Om ingen miljö anges används `production` som standard.

När du testar i dashboarden väljer du miljö i rullgardinsmenyn i agentförhandsvisningen:

![Miljöväljare i agentförhandsvisning](/docs/_fern-img/052880e903ac2dc3539a0ed84feef5a3d31cd28c9b1345705c9003796d382803.webp)

### WebSocket

Skicka frågeparametern `environment` när du ansluter till konversationens WebSocket:

```
wss://api.elevenlabs.io/v1/convai/conversation?agent_id=<agent_id>&environment=staging
```

### WebRTC (signerad URL / token)

När du använder WebRTC skickar du parametern `environment` när du begär en konversationstoken:

**`Python`**

```python title="Python"
from elevenlabs.client import ElevenLabs

client = ElevenLabs(api_key="your-api-key")

token = client.conversational_ai.conversation.get_token(
agent_id="your-agent-id",
environment="staging",
)

```

**`JavaScript`**

```javascript title="JavaScript"
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const client = new ElevenLabsClient({ apiKey: "your-api-key" });

const token = await client.conversationalAi.conversation.getToken({
    agentId: "your-agent-id",
    environment: "staging",
});
```

**`cURL`**

```bash title="cURL"
curl "https://api.elevenlabs.io/v1/convai/conversation/token?agent_id=<agent_id>&environment=staging" \
  -H "xi-api-key: $ELEVENLABS_API_KEY"
```

### Telefoni (Twilio och SIP-trunk)

Telefonnummer kan låsas till en specifik miljö och en specifik [agentgren](/docs/sv/eleven-agents/operate/versioning), vilket gör det enkelt att dirigera ett testtelefonnummer till en utvecklingsgren av en agent vars verktyg körs mot ett utvecklings-API.

![Väljare för telefonnummermiljö och gren](/docs/_fern-img/ba83735f5cad2006555eb73a12a520c7c86fa3d576d8f69f481a8c75d315cf1d.webp)

För inkommande samtal fastställs miljön i följande ordning:

1. Värdet `environment` som returneras av din [webhook för konversationsstart](/docs/sv/eleven-agents/customization/personalization#conversation-initiation-webhooks), om din server tillhandahåller ett dynamiskt för varje samtal
2. Miljön som lagras på själva **telefonnumret**
3. `production` som standard

Samma prioritet gäller för `branch_id`. URL:er och rubriker för webhookar före samtal samt URL:er för webhookar efter samtal översätter sedan mallarna `{{system__env_*}}` med den valda miljön.

Lås ett telefonnummer till en miljö och gren (kräver Python SDK:t `elevenlabs` ≥ 2.47.0 eller `@elevenlabs/elevenlabs-js` ≥ 2.47.0):

**`Python`**

```python title="Python"
import os
from dotenv import load_dotenv
from elevenlabs import ElevenLabs

load_dotenv()

elevenlabs = ElevenLabs(api_key=os.getenv("ELEVENLABS_API_KEY"))

elevenlabs.conversational_ai.phone_numbers.update(
    phone_number_id="phnum_8901k4t9z5defmb8vh3e9361y7nj",
    environment="staging",
    branch_id="agtbrch_8901k4t9z5defmb8vh3e9361y7nj",
)
```

**`JavaScript`**

```typescript title="JavaScript"
import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const elevenlabs = new ElevenLabsClient();

await elevenlabs.conversationalAi.phoneNumbers.update("phnum_8901k4t9z5defmb8vh3e9361y7nj", {
  environment: "staging",
  branchId: "agtbrch_8901k4t9z5defmb8vh3e9361y7nj",
});
```

**`cURL`**

```bash title="cURL"
curl -X PATCH "https://api.elevenlabs.io/v1/convai/phone-numbers/phnum_8901k4t9z5defmb8vh3e9361y7nj" \
  -H "xi-api-key: $ELEVENLABS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "environment": "staging",
    "branch_id": "agtbrch_8901k4t9z5defmb8vh3e9361y7nj"
  }'
```

För utgående samtal skickar du fältet `environment` när du startar samtalet via slutpunkterna för utgående Twilio- eller SIP-trunksamtal.

### React SDK

Skicka alternativet `environment` i hooken `useConversation` eller när du startar en session:

```tsx
import { useConversation } from "@11labs/react";

function Agent() {
  const conversation = useConversation();

  const connect = async () => {
    await conversation.startSession({
      agentId: "your-agent-id",
      environment: "staging",
    });
  };

  return <button onClick={connect}>Start conversation</button>;
}
```

## Exempel: agent för flera miljöer

Det här exemplet visar en komplett konfiguration med en enda agent som använder olika API-backends och autentiseringsuppgifter i utveckling, staging och produktion.

#### Skapa miljövariabler

Skapa tre miljövariabler i dashboarden eller via API:

| Etikett       | Typ             | Utveckling      | Staging             | Produktion       |
| ------------- | --------------- | --------------- | ------------------- | ---------------- |
| `api_host`    | Sträng          | `dev.api`       | `staging.api`       | `api`            |
| `api_key`     | Hemlighet       | `dev-secret-id` | `staging-secret-id` | `prod-secret-id` |
| `oauth_creds` | Auth-anslutning | `dev-oauth-id`  | `staging-oauth-id`  | `prod-oauth-id`  |

#### Konfigurera verktyg med referenser till miljövariabler

Konfigurera dina webhook-verktyg med mallsyntax:

* **URL**: `https://{{system__env_api_host}}.example.com/v1/orders`
* **Rubriker**: Referera till miljövariabeln `api_key` för rubriken `X-Api-Key`
* **Auth**: Referera till miljövariabeln `oauth_creds` för OAuth-autentisering

#### Ange miljö vid konversationstillfället

När du startar en konversation skickar du målmiljön:

**`Utveckling`**

```python title="Utveckling"
conversation = client.conversational_ai.conversation.get_signed_url(
    agent_id="your-agent-id",
    environment="development",
)
```

**`Staging`**

```python title="Staging"
conversation = client.conversational_ai.conversation.get_signed_url(
    agent_id="your-agent-id",
    environment="staging",
)
```

**`Produktion (standard)`**

```python title="Produktion (standard)"
# No environment parameter needed — defaults to production
conversation = client.conversational_ai.conversation.get_signed_url(
    agent_id="your-agent-id",
)
```

#### Filtrera efter miljö

Miljön spåras för varje konversation. Filtrera dina analysdashboardar och din konversationshistorik efter miljö för att särskilja mätvärden för varje distributionsstadium.

![Filtrera analyser efter miljö](/docs/_fern-img/640f45e330a6f58648bb79fb588b580bb1d938e20f46c453b6d0c0efdac04054.webp)

![Filtrera konversationshistorik efter miljö](/docs/_fern-img/de6cdcdad31761a4e94928ea125503a555635eaf579521096b5f38d5ef931cd0.webp)

### Namngivningsbegränsningar

* **Etiketter**: Endast alfanumeriska tecken och understreck (t.ex. `base_url`, `api_key_v2`)
* **Miljönamn**: Måste börja med en liten bokstav och får endast innehålla små bokstäver, siffror, understreck och bindestreck, upp till 64 tecken (t.ex. `production`, `staging`, `dev-us-east`)
* Varje miljövariabel måste ha ett `production`-värde

## Nästa steg

#### [Webhook-verktyg](/docs/sv/eleven-agents/customization/tools/webhook-tools)

Konfigurera webhook-verktyg med miljöanpassade URL:er och autentisering

#### [MCP-servrar](/docs/sv/eleven-agents/customization/tools/mcp)

Anslut MCP-servrar med konfiguration per miljö

#### [Anpassad LLM](/docs/sv/eleven-agents/customization/llm/custom-llm)

Använd olika modelländpunkter i olika miljöer

#### [Versionshantering](/docs/sv/eleven-agents/operate/versioning)

Kombinera miljövariabler med grenar och trafikdelning