> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kameleoon.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Ein multivariate-Test-Experiment erstellen

> Erstellen Sie ein multivariate-Test-Experiment (MVT) und legen Sie mit der Automation API eine benutzerdefinierte Traffic-Allokation fest.

## Ziel

Erstellen Sie ein multivariate-Test-Experiment (MVT) mit mehreren Sections und Variationen und legen Sie anschließend eine benutzerdefinierte (ungleiche) Traffic-Allokation für diese Variationen fest.

<Warning>
  Wenn Sie ein multivariate-Test-Experiment mit `POST /experiments` erstellen, wendet Kameleoon immer eine gleichmäßige Traffic-Allokation auf jede Variation an und setzt einen gesendeten `locked`-Wert auf `false` zurück, unabhängig von den Werten, die Sie in `mvtAllocationSettings` senden. Um eine benutzerdefinierte Traffic-Allokation festzulegen, folgen Sie dem dreistufigen Ablauf in diesem Tutorial: Erstellen Sie das Experiment, rufen Sie die generierten IDs ab, und aktualisieren Sie anschließend die Allokation mit einer `PATCH`-Anfrage.
</Warning>

Einen Überblick über MVT-Konzepte (Sections, Variationen und Kombinationen) und die Konfiguration der Traffic-Allokation in der Kameleoon-App finden Sie unter [Multivariate-Tests einrichten](/de/user-manual/experimentation/web-experimentation/advanced-experiment-types/setting-up-multivariate-tests).

## Voraussetzungen

* `access token`

Die Automation API erfordert ein access token.
Rufen Sie das Token programmgesteuert ab, indem Sie die Anweisungen im Abschnitt [Abrufen eines Access Tokens](/de/developer-docs/apis/automation-api-rest/get-started/get-started#1-obtain-an-access-token) befolgen.

* `siteId`

Rufen Sie die `siteId` direkt in Ihrem Code über die `siteCode` ab, indem Sie [den Endpoint zum Abrufen einer Site anhand des Codes](/api-reference/site/get-a-site-by-code) aufrufen, oder finden Sie sie in der App, indem Sie die Schritte unter [Ein neues Experiment erstellen](/de/developer-docs/apis/automation-api-rest/tutorials/experiments/create-a-new-experiment#requirements) befolgen.

## Grundlegende Konzepte

### Die Referenzvariation

Kameleoon fügt jeder von Ihnen gesendeten Section automatisch eine Referenzvariation hinzu. Diese Referenz erscheint in der Antwort als `variationId: "0"` innerhalb der Allokationseinträge der jeweiligen Section.

Wenn Sie eine eigene Variation mit dem Namen `Original` senden, erstellt Kameleoon sie als separate, zusätzliche Variation. Sie identifiziert oder ersetzt die generierte Referenz nicht. Senden Sie nur dann eine explizite `Original`-Variation, wenn Sie zwei unterschiedliche Baseline-Variationen in derselben Section testen möchten.

### Vom Client gesendete IDs sind temporär

Die Werte `sectionId` und Variation-`id`, die Sie in `mvtVariations` senden, verknüpfen Einträge nur innerhalb dieser einen Anfrage: Sie verbinden jeden Allokationseintrag in `mvtAllocationSettings` mit der richtigen Section und Variation, bevor Kameleoon permanente IDs generiert. Verwenden Sie beliebige Ganzzahlen, die für Sie praktisch sind.

Kameleoon verwirft die gesendeten Werte und ersetzt sie durch eigene generierte `sectionId`- und `variationId`-Werte. Verwenden Sie die generierten Werte (die in der Antwort und durch eine spätere `GET`-Anfrage zurückgegeben werden) für alle nachfolgenden Anfragen. Die Antwort enthält nicht die von Ihnen gesendeten Variationsnamen, sondern nur die generierten IDs. Wenn Sie bestätigen müssen, welche generierte ID zu welchem gesendeten Namen gehört, prüfen Sie das Experiment in der Kameleoon-App.

### Section-IDs versus Kombinations-IDs

Kameleoon generiert zwei unterschiedliche Gruppen von IDs für ein multivariate-Test-Experiment:

* **Section- und Variation-IDs** identifizieren eine Variation innerhalb einer Section. Verwenden Sie diese in `mvtAllocationSettings.sectionsAllocations`.
* **Kombinations-IDs** identifizieren eine vollständige Kombination von Variationen, eine pro Section, die exponierten Besuchern angezeigt wird. Kameleoon generiert jede mögliche Kombination als kartesisches Produkt der Variationen aller Sections (einschließlich der Referenz in jeder Section) und gibt die Kombinations-IDs im Array `variations` auf oberster Ebene sowie als Schlüssel in der `deviations`-Map zurück. Verwenden Sie diese in `mvtAllocationSettings.combinationsAllocations`.

Sowohl `sectionsAllocations` als auch `combinationsAllocations` verwenden dieselbe Struktur für Allokationseinträge (`allocationPart`, `checked`, `locked`, `sectionId`, `variationId`); wählen Sie daher nur eine Methode:

* Füllen Sie `sectionsAllocations`, um den Traffic nach einzelner Variation innerhalb jeder Section zu verteilen. Kameleoon leitet den Anteil jeder Kombination aus den Werten auf Section-Ebene ab.
* Füllen Sie `combinationsAllocations`, um den Traffic direkt bestimmten Kombinationen zuzuweisen.

Da Kombinations-IDs erst existieren, nachdem Kameleoon sie generiert hat, können Sie `combinationsAllocations` nicht in der Erstellungsanfrage befüllen. Rufen Sie die generierten Kombinations-IDs mit einer `GET`-Anfrage ab und legen Sie `combinationsAllocations` anschließend in einer nachfolgenden `PATCH`-Anfrage fest, nach demselben Muster, das in diesem Tutorial für `sectionsAllocations` verwendet wird.

## Schritte

### 1. Das Experiment erstellen

**Endpoint:**

```
POST https://api.kameleoon.com/experiments
```

| Name                      | Typ      | Beschreibung                                                                                                                                                                         |
| ------------------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `baseURL`                 | String   | URL der Seite, die im grafischen Editor geladen werden soll.                                                                                                                         |
| `name`                    | String   | Name des Experiments.                                                                                                                                                                |
| `siteId`                  | Ganzzahl | Die `siteId` des Projekts.                                                                                                                                                           |
| `type`                    | String   | Setzen Sie den Wert auf `MVT` für einen multivariate-Test.                                                                                                                           |
| `mvtVariations`           | Array    | Die zu erstellenden Sections und Variationen. Jeder Eintrag benötigt eine temporäre `sectionId`, einen `sectionName` und ein `variations`-Array mit `{id, name}`-Objekten.           |
| `mvtAllocationSettings`   | Objekt   | Einstellungen zur Traffic-Allokation. Kameleoon akzeptiert dieses Objekt bei der Erstellung, wendet aber unabhängig von den gesendeten Werten immer eine gleichmäßige Allokation an. |
| `trafficAllocationMethod` | String   | Setzen Sie den Wert auf `MANUAL`, um die Traffic-Allokation selbst zu steuern, statt eine automatisierte Methode zu verwenden.                                                       |

**Beispiel:**

```bash theme={null}
curl -L -X POST 'https://api.kameleoon.com/experiments' \
-H 'Content-Type: application/json' \
-H 'Accept: */*' \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
--data-raw '{
  "baseURL": "https://test-site.fr/",
  "name": "MVT_1",
  "siteId": 29353,
  "type": "MVT",
  "trafficAllocationMethod": "MANUAL",
  "mvtVariations": [
    {
      "sectionId": 1,
      "sectionName": "Button color",
      "variations": [
        {"id": 1, "name": "Red"},
        {"id": 2, "name": "Blue"}
      ]
    },
    {
      "sectionId": 2,
      "sectionName": "Button wording",
      "variations": [
        {"id": 1, "name": "Buy now"},
        {"id": 2, "name": "Shop now"}
      ]
    }
  ],
  "mvtAllocationSettings": {
    "exposedPart": 0.8,
    "sectionsAllocations": [
      {"allocationPart": 0.6, "checked": true, "locked": true, "sectionId": 1, "variationId": "0"},
      {"allocationPart": 0.25, "checked": true, "locked": true, "sectionId": 1, "variationId": "1"},
      {"allocationPart": 0.15, "checked": true, "locked": true, "sectionId": 1, "variationId": "2"},
      {"allocationPart": 0.5, "checked": true, "locked": true, "sectionId": 2, "variationId": "0"},
      {"allocationPart": 0.3, "checked": true, "locked": true, "sectionId": 2, "variationId": "1"},
      {"allocationPart": 0.2, "checked": true, "locked": true, "sectionId": 2, "variationId": "2"}
    ],
    "combinationsAllocations": []
  }
}'
```

**Antwort (gekürzt):**

```json theme={null}
{
  "id": 404811,
  "siteId": 29353,
  "name": "MVT_1",
  "type": "MVT",
  "status": "draft",
  "trafficAllocationMethod": "MANUAL",
  "variations": [1351297, 1351298, 1351299, 1351300, 1351301, 1351302, 1351303, 1351304, 1351305],
  "mvtAllocationSettings": {
    "exposedPart": 0.8,
    "sectionsAllocations": [
      {"variationId": "1351294", "sectionId": 4451, "allocationPart": 0.33333334, "locked": false, "checked": true},
      {"variationId": "1351293", "sectionId": 4451, "allocationPart": 0.33333334, "locked": false, "checked": true},
      {"variationId": "0", "sectionId": 4451, "allocationPart": 0.33333334, "locked": false, "checked": true},
      {"variationId": "1351296", "sectionId": 4452, "allocationPart": 0.33333334, "locked": false, "checked": true},
      {"variationId": "1351295", "sectionId": 4452, "allocationPart": 0.33333334, "locked": false, "checked": true},
      {"variationId": "0", "sectionId": 4452, "allocationPart": 0.33333334, "locked": false, "checked": true}
    ],
    "combinationsAllocations": []
  }
}
```

Beachten Sie, dass Kameleoon neue `sectionId`- und `variationId`-Werte generiert hat (`4451`, `4452`, `1351293`-`1351296`), jeder Section eine Referenzvariation (`variationId: "0"`) hinzugefügt und die gesendete Allokation durch einen gleichmäßigen Anteil von `0.33333334` ersetzt hat, wobei `locked` auf `false` zurückgesetzt wurde. `exposedPart` bleibt wie gesendet erhalten. Fahren Sie mit dem nächsten Schritt fort, um die gewünschte Allokation festzulegen.

### 2. Die generierten IDs abrufen

Wenn Sie die generierten IDs aus der Erstellungsantwort nicht erfasst haben, rufen Sie sie mit einer `GET`-Anfrage ab.

**Endpoint:**

```
GET https://api.kameleoon.com/experiments/{experimentId}
```

**Beispiel:**

```bash theme={null}
curl -L -X GET 'https://api.kameleoon.com/experiments/404811' \
-H 'Authorization: Bearer <ACCESS_TOKEN>'
```

Die Antwort enthält dasselbe Array `mvtAllocationSettings.sectionsAllocations` wie in Schritt 1, mit den generierten `sectionId`- und `variationId`-Werten, die Sie für den nächsten Schritt benötigen.

### 3. Benutzerdefinierte Traffic-Allokation festlegen

**Endpoint:**

```
PATCH https://api.kameleoon.com/experiments/{experimentId}
```

Senden Sie `mvtAllocationSettings` erneut, diesmal mit den generierten `sectionId`- und `variationId`-Werten aus Schritt 2.

**Beispiel:**

```bash theme={null}
curl -L -X PATCH 'https://api.kameleoon.com/experiments/404811' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <ACCESS_TOKEN>' \
--data-raw '{
  "trafficAllocationMethod": "MANUAL",
  "mvtAllocationSettings": {
    "exposedPart": 0.8,
    "sectionsAllocations": [
      {"allocationPart": 0.6, "checked": true, "locked": true, "sectionId": 4451, "variationId": "1351294"},
      {"allocationPart": 0.25, "checked": true, "locked": true, "sectionId": 4451, "variationId": "1351293"},
      {"allocationPart": 0.15, "checked": true, "locked": true, "sectionId": 4451, "variationId": "0"},
      {"allocationPart": 0.5, "checked": true, "locked": true, "sectionId": 4452, "variationId": "1351296"},
      {"allocationPart": 0.3, "checked": true, "locked": true, "sectionId": 4452, "variationId": "1351295"},
      {"allocationPart": 0.2, "checked": true, "locked": true, "sectionId": 4452, "variationId": "0"}
    ],
    "combinationsAllocations": []
  }
}'
```

**Antwort (gekürzt):**

```json theme={null}
{
  "id": 404811,
  "mvtAllocationSettings": {
    "exposedPart": 0.8,
    "sectionsAllocations": [
      {"variationId": "1351294", "sectionId": 4451, "allocationPart": 0.6, "locked": true, "checked": true},
      {"variationId": "1351293", "sectionId": 4451, "allocationPart": 0.25, "locked": true, "checked": true},
      {"variationId": "0", "sectionId": 4451, "allocationPart": 0.15, "locked": true, "checked": true},
      {"variationId": "1351296", "sectionId": 4452, "allocationPart": 0.5, "locked": true, "checked": true},
      {"variationId": "1351295", "sectionId": 4452, "allocationPart": 0.3, "locked": true, "checked": true},
      {"variationId": "0", "sectionId": 4452, "allocationPart": 0.2, "locked": true, "checked": true}
    ],
    "combinationsAllocations": []
  }
}
```

Die Allokation entspricht nun den gesendeten Werten, und `locked` bleibt `true`. Eine nachfolgende `GET`-Anfrage bestätigt dasselbe Ergebnis.

### 4. Das Experiment überprüfen

Öffnen Sie das **Experiments Dashboard** in der Kameleoon-App und öffnen Sie das Experiment, um zu bestätigen, dass Sections, Variationen und Traffic-Allokation Ihrer Konfiguration entsprechen.

## Bekannte Einschränkungen

* **Das Löschen großer multivariate-Test-Experimente kann ein Timeout verursachen.** `DELETE /experiments/{experimentId}` kann einen `504 Gateway Timeout`-Fehler zurückgeben, wenn das Experiment viele Kombinationen enthält. Ein Timeout bedeutet nicht zwangsläufig, dass das Löschen fehlgeschlagen ist: Senden Sie eine `GET`-Anfrage für dieselbe Experiment-ID, um zu prüfen, ob sie noch existiert, bevor Sie den Löschvorgang wiederholen.
