# Tracking-Schlüssel API

> Die öffentlichen Schlüssel verwalten, mit denen das Tracking-Skript Events von Ihrer Website sendet.

Basis-URL: `https://api.emailit.com/v2`. Authentifizieren Sie sich mit `Authorization: Bearer <API key>`.

## Tracking-Schlüssel erstellen — POST /tracking-keys

> Erstellen Sie einen öffentlichen Tracking-Schlüssel für das Tracking-Skript von Emailit, optional auf Ihre eigenen Websites beschränkt.

# Tracking-Schlüssel erstellen

Erstellt einen Tracking-Schlüssel für das [Tracking-Skript](/de/docs/events/tracking-script/). Die Antwort enthält den öffentlichen `key`, der in die URL des Skripts gehört. Erfordert einen API-Schlüssel mit dem Scope `full`.

Tracking-Schlüssel sind öffentlich, daher kann jede Person einen aus Ihrer Seite kopieren. Mit ihnen lassen sich nur Workspace-Events und eigene Events senden, nie Daten lesen, und Sie können sie mit `allowed_origins` auf Ihre eigenen Websites beschränken. Ein Workspace kann bis zu 25 Tracking-Schlüssel haben.

Website-Tracking ist in den Tarifen Pro, Business und Custom enthalten. Schlüssel bleiben nach einem Wechsel zu Pay as you go erhalten, aber Anfragen des Tracking-Skripts mit diesen Schlüsseln geben `403` zurück.

`POST /tracking-keys`

## Body-Parameter

- `name` (string): Name, an dem Sie erkennen, wo der Schlüssel verwendet wird, etwa `Online shop`, bis zu 100 Zeichen.

- `allowed_origins` (string[]): Die Websites, die mit dem Schlüssel Events senden dürfen, bis zu 50. Leer oder weggelassen bedeutet jede Website. Jeder Eintrag hat eine dieser Formen: - ein Ursprung, etwa `https://shop.example.com`: nur genau dieses Schema, dieser Host und dieser Port; - ein Host, etwa `shop.example.com`: dieser Host mit jedem Schema und Port; - eine Wildcard, etwa `*.example.com`: `example.com` und alle seine Subdomains. Einträge werden in Kleinbuchstaben und ohne abschließenden Schrägstrich gespeichert. Ein String mit Einträgen, die durch Leerzeichen oder Kommas getrennt sind, wird ebenfalls akzeptiert.

- `enabled` (boolean): `false` erstellt den Schlüssel im deaktivierten Zustand.

## Rückgabe

Gibt `201 Created` mit dem [Tracking-Schlüssel-Objekt](/de/docs/api-reference/tracking-keys/get/) zurück.

| Status | Wann |
| --- | --- |
| `403` | Der API-Schlüssel hat nicht den Scope `full`, oder der Workspace ist im Tarif Pay as you go: `error` ist `plan_required` und `required_plan` ist `pro`. |
| `422` | Ein Feld ist ungültig, zum Beispiel ein Eintrag in `allowed_origins`, der weder Ursprung noch Host noch Wildcard ist. `errors` ist nach Feld geschlüsselt, und `message` wiederholt das erste Problem. Wird auch mit `code: "tracking_keys_limit"` zurückgegeben, wenn der Workspace bereits 25 Tracking-Schlüssel hat. |

**Anfrage** `POST /tracking-keys`

**cURL**

```bash
curl -X POST https://api.emailit.com/v2/tracking-keys \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Online shop",
    "allowed_origins": ["https://shop.example.com", "*.example.com"]
  }'
```

**Node.js**

```javascript
const res = await fetch('https://api.emailit.com/v2/tracking-keys', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.EMAILIT_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'Online shop',
    allowed_origins: ['https://shop.example.com', '*.example.com'],
  }),
});
const trackingKey = await res.json();
```

**Python**

```python
import os, requests

r = requests.post(
    "https://api.emailit.com/v2/tracking-keys",
    headers={"Authorization": f"Bearer {os.environ['EMAILIT_API_KEY']}"},
    json={
        "name": "Online shop",
        "allowed_origins": ["https://shop.example.com", "*.example.com"],
    },
)
tracking_key = r.json()
```

**PHP**

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://api.emailit.com/v2/']);

$response = $client->post('tracking-keys', [
    'headers' => ['Authorization' => 'Bearer ' . getenv('EMAILIT_API_KEY')],
    'json' => [
        'name' => 'Online shop',
        'allowed_origins' => ['https://shop.example.com', '*.example.com'],
    ],
]);
$trackingKey = json_decode($response->getBody(), true);
```

**201**

```json
{
  "object": "tracking_key",
  "id": "trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6",
  "name": "Online shop",
  "key": "pub_8fK2mQ9xLr4TzW7nB1cV5yH3dJ6sA0pE",
  "allowed_origins": ["https://shop.example.com", "*.example.com"],
  "enabled": true,
  "last_used_at": null,
  "created_at": "2026-10-19T08:05:00.000000+00:00",
  "updated_at": "2026-10-19T08:05:00.000000+00:00"
}
```

**403**

```json
{
  "error": "plan_required",
  "required_plan": "pro",
  "message": "Website tracking is included with Pro and Business."
}
```

**422**

```json
{
  "error": "allowed_origins \"https://shop.example.com/checkout\" is not an origin (https://example.com), a host (example.com) or a wildcard (*.example.com)",
  "message": "allowed_origins \"https://shop.example.com/checkout\" is not an origin (https://example.com), a host (example.com) or a wildcard (*.example.com)",
  "errors": {
    "allowed_origins": ["\"https://shop.example.com/checkout\" is not an origin (https://example.com), a host (example.com) or a wildcard (*.example.com)"]
  }
}
```

---
Quelle: https://emailit.com/de/docs/api-reference/tracking-keys/create/

## Tracking-Schlüssel abrufen — GET /tracking-keys/{id}

> Rufen Sie einen Tracking-Schlüssel für das Tracking-Skript von Emailit ab, mit seinem öffentlichen Schlüssel, den erlaubten Websites und der letzten Nutzung.

# Tracking-Schlüssel abrufen

Ruft einen Tracking-Schlüssel ab. Tracking-Schlüssel sind öffentliche Schlüssel für das [Tracking-Skript](/de/docs/events/tracking-script/): Sie stehen in Ihren Webseiten und können nur Workspace-Events und eigene Events senden. Erfordert einen API-Schlüssel mit dem Scope `full`.

`GET /tracking-keys/{id}`

## Pfadparameter

- `id` (string, erforderlich): Die ID des Tracking-Schlüssels (`trk_…`) oder der Schlüssel selbst (`pub_…`).

## Rückgabe

Gibt das Tracking-Schlüssel-Objekt zurück.

- `object` (string): Immer `tracking_key`.

- `id` (string): ID des Tracking-Schlüssels mit dem Präfix `trk_`.

- `name` (string): Name, an dem Sie erkennen, wo der Schlüssel verwendet wird.

- `key` (string): Der öffentliche Schlüssel: `pub_` gefolgt von 32 Buchstaben und Ziffern. Er ist Teil der URL des Skripts und wird daher bei jedem Abruf zurückgegeben.

- `allowed_origins` (string[]): Die Websites, die mit diesem Schlüssel Events senden dürfen. Leer bedeutet jede Website. Siehe [Erlaubte Websites](/de/docs/events/tracking-script/#allowed-sites).

- `enabled` (boolean): `false`, wenn der Schlüssel deaktiviert ist. Events, die mit einem deaktivierten Schlüssel gesendet werden, werden abgelehnt.

- `last_used_at` (string | null): Zeitpunkt, zu dem der Schlüssel zuletzt Events gesendet hat, höchstens alle 10 Minuten aktualisiert. `null`, wenn er noch nie verwendet wurde.

- `created_at, updated_at` (string): Zeitstempel in UTC.

Gibt `404` mit `error: "Tracking key not found"` zurück, wenn kein Schlüssel passt.

**Anfrage** `GET /tracking-keys/{id}`

**cURL**

```bash
curl https://api.emailit.com/v2/tracking-keys/trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6 \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
```

**Node.js**

```javascript
const res = await fetch('https://api.emailit.com/v2/tracking-keys/trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6', {
  headers: { Authorization: `Bearer ${process.env.EMAILIT_API_KEY}` },
});
const trackingKey = await res.json();
```

**Python**

```python
import os, requests

r = requests.get(
    "https://api.emailit.com/v2/tracking-keys/trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6",
    headers={"Authorization": f"Bearer {os.environ['EMAILIT_API_KEY']}"},
)
tracking_key = r.json()
```

**PHP**

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://api.emailit.com/v2/']);

$response = $client->get('tracking-keys/trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6', [
    'headers' => ['Authorization' => 'Bearer ' . getenv('EMAILIT_API_KEY')],
]);
$trackingKey = json_decode($response->getBody(), true);
```

**200**

```json
{
  "object": "tracking_key",
  "id": "trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6",
  "name": "Online shop",
  "key": "pub_8fK2mQ9xLr4TzW7nB1cV5yH3dJ6sA0pE",
  "allowed_origins": ["https://shop.example.com", "*.example.com"],
  "enabled": true,
  "last_used_at": "2026-10-19T09:40:00.000000+00:00",
  "created_at": "2026-10-19T08:05:00.000000+00:00",
  "updated_at": "2026-10-19T08:05:00.000000+00:00"
}
```

**404**

```json
{
  "error": "Tracking key not found"
}
```

---
Quelle: https://emailit.com/de/docs/api-reference/tracking-keys/get/

## Tracking-Schlüssel aktualisieren — POST /tracking-keys/{id}

> Benennen Sie einen Tracking-Schlüssel um, ändern Sie seine erlaubten Websites oder deaktivieren und aktivieren Sie ihn. Der öffentliche Schlüssel bleibt gleich.

# Tracking-Schlüssel aktualisieren

Aktualisiert die übergebenen Felder und lässt die übrigen unverändert. Der öffentliche `key` ändert sich nie. Um einen Schlüssel zu ersetzen, erstellen Sie einen neuen, aktualisieren Ihre Seiten und löschen den alten. Erfordert einen API-Schlüssel mit dem Scope `full`.

Es kann bis zu einer Minute dauern, bis Änderungen überall gelten.

`POST /tracking-keys/{id}`

## Pfadparameter

- `id` (string, erforderlich): Die ID des Tracking-Schlüssels (`trk_…`) oder der Schlüssel selbst (`pub_…`).

## Body-Parameter

- `name` (string): Neuer Name, bis zu 100 Zeichen. Darf nicht leer sein.

- `allowed_origins` (string[]): Ersetzt die Liste der erlaubten Websites, mit denselben Regeln wie beim [Erstellen](/de/docs/api-reference/tracking-keys/create/#body-parameters). `[]` erlaubt jede Website.

- `enabled` (boolean): `false` deaktiviert den Schlüssel: Das Tracking-Skript lädt weiterhin, aber seine Events werden mit `403` abgelehnt. `true` aktiviert ihn wieder.

## Rückgabe

Gibt das aktualisierte [Tracking-Schlüssel-Objekt](/de/docs/api-reference/tracking-keys/get/) zurück.

| Status | Wann |
| --- | --- |
| `404` | Kein Tracking-Schlüssel passt zu `id`. |
| `422` | Ein Feld ist ungültig. `errors` ist nach Feld geschlüsselt, und `message` wiederholt das erste Problem. |

**Anfrage** `POST /tracking-keys/{id}`

**cURL**

```bash
curl -X POST https://api.emailit.com/v2/tracking-keys/trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6 \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "allowed_origins": ["https://shop.example.com", "https://www.example.com"] }'
```

**Node.js**

```javascript
const res = await fetch('https://api.emailit.com/v2/tracking-keys/trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.EMAILIT_API_KEY}`,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ allowed_origins: ['https://shop.example.com', 'https://www.example.com'] }),
});
const trackingKey = await res.json();
```

**Python**

```python
import os, requests

r = requests.post(
    "https://api.emailit.com/v2/tracking-keys/trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6",
    headers={"Authorization": f"Bearer {os.environ['EMAILIT_API_KEY']}"},
    json={"allowed_origins": ["https://shop.example.com", "https://www.example.com"]},
)
tracking_key = r.json()
```

**PHP**

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://api.emailit.com/v2/']);

$response = $client->post('tracking-keys/trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6', [
    'headers' => ['Authorization' => 'Bearer ' . getenv('EMAILIT_API_KEY')],
    'json' => ['allowed_origins' => ['https://shop.example.com', 'https://www.example.com']],
]);
$trackingKey = json_decode($response->getBody(), true);
```

**200**

```json
{
  "object": "tracking_key",
  "id": "trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6",
  "name": "Online shop",
  "key": "pub_8fK2mQ9xLr4TzW7nB1cV5yH3dJ6sA0pE",
  "allowed_origins": ["https://shop.example.com", "https://www.example.com"],
  "enabled": true,
  "last_used_at": "2026-10-19T09:40:00.000000+00:00",
  "created_at": "2026-10-19T08:05:00.000000+00:00",
  "updated_at": "2026-10-19T10:20:00.000000+00:00"
}
```

---
Quelle: https://emailit.com/de/docs/api-reference/tracking-keys/update/

## Tracking-Schlüssel auflisten — GET /tracking-keys

> Listen Sie die Tracking-Schlüssel des Workspaces für das Tracking-Skript von Emailit auf, die neuesten zuerst.

# Tracking-Schlüssel auflisten

Gibt alle Tracking-Schlüssel des Workspaces zurück, die neuesten zuerst. Ein Workspace hat höchstens 25, daher ist die Liste nicht paginiert. Erfordert einen API-Schlüssel mit dem Scope `full`.

`GET /tracking-keys`

## Query-Parameter

- `search` (string): Abgleich mit einem Teil des Namens, ohne Beachtung der Groß-/Kleinschreibung.

- `match`, `order`, `direction`: siehe [Filtern und Sortieren](https://emailit.com/de/docs/api-reference/filtering/).

### Filterschlüssel

Filter verwenden Query-Parameter der Form `key.condition=value`, zum Beispiel `enabled.exact=true`. Die Bedingungen je Typ finden Sie unter [Filtern](/de/docs/api-reference/filtering/).

| Schlüssel | Typ | Hinweise |
| --- | --- | --- |
| `name` | string | |
| `enabled` | boolean | |
| `created_at` | date | |
| `last_used_at` | date | |

Sortierschlüssel für `order`: `name`, `enabled`, `created_at`, `last_used_at`. Standardmäßig wird nach `created_at` sortiert, die neuesten zuerst.

## Rückgabe

- `data` (object[]): Die [Tracking-Schlüssel-Objekte](/de/docs/api-reference/tracking-keys/get/), jeweils mit dem öffentlichen `key`.

**Anfrage** `GET /tracking-keys`

**cURL**

```bash
curl https://api.emailit.com/v2/tracking-keys \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
```

**Node.js**

```javascript
const res = await fetch('https://api.emailit.com/v2/tracking-keys', {
  headers: { Authorization: `Bearer ${process.env.EMAILIT_API_KEY}` },
});
const { data } = await res.json();
```

**Python**

```python
import os, requests

r = requests.get(
    "https://api.emailit.com/v2/tracking-keys",
    headers={"Authorization": f"Bearer {os.environ['EMAILIT_API_KEY']}"},
)
tracking_keys = r.json()["data"]
```

**PHP**

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://api.emailit.com/v2/']);

$response = $client->get('tracking-keys', [
    'headers' => ['Authorization' => 'Bearer ' . getenv('EMAILIT_API_KEY')],
]);
$trackingKeys = json_decode($response->getBody(), true)['data'];
```

**200**

```json
{
  "data": [
    {
      "object": "tracking_key",
      "id": "trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6",
      "name": "Online shop",
      "key": "pub_8fK2mQ9xLr4TzW7nB1cV5yH3dJ6sA0pE",
      "allowed_origins": ["https://shop.example.com", "*.example.com"],
      "enabled": true,
      "last_used_at": "2026-10-19T09:40:00.000000+00:00",
      "created_at": "2026-10-19T08:05:00.000000+00:00",
      "updated_at": "2026-10-19T08:05:00.000000+00:00"
    }
  ]
}
```

---
Quelle: https://emailit.com/de/docs/api-reference/tracking-keys/list/

## Tracking-Schlüssel löschen — DELETE /tracking-keys/{id}

> Löschen Sie einen Tracking-Schlüssel. Seiten, die ihn noch verwenden, senden keine Events mehr; bereits erfasste Events bleiben erhalten.

# Tracking-Schlüssel löschen

Löscht einen Tracking-Schlüssel. Erfordert einen API-Schlüssel mit dem Scope `full`.

Seiten, die das Skript noch mit diesem Schlüssel laden, funktionieren weiter, aber ihre Events werden abgelehnt und nicht erfasst. Bereits mit dem Schlüssel erfasste Events bleiben erhalten. Um Events vorübergehend zu stoppen, ohne Ihre Seiten zu ändern, deaktivieren Sie den Schlüssel stattdessen mit [Tracking-Schlüssel aktualisieren](/de/docs/api-reference/tracking-keys/update/).

`DELETE /tracking-keys/{id}`

## Pfadparameter

- `id` (string, erforderlich): Die ID des Tracking-Schlüssels (`trk_…`) oder der Schlüssel selbst (`pub_…`).

## Rückgabe

- `object` (string): Immer `tracking_key`.

- `id` (string): ID des gelöschten Schlüssels.

- `deleted` (boolean): Immer `true`.

Gibt `404` zurück, wenn kein Tracking-Schlüssel passt.

**Anfrage** `DELETE /tracking-keys/{id}`

**cURL**

```bash
curl -X DELETE https://api.emailit.com/v2/tracking-keys/trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6 \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
```

**Node.js**

```javascript
const res = await fetch('https://api.emailit.com/v2/tracking-keys/trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6', {
  method: 'DELETE',
  headers: { Authorization: `Bearer ${process.env.EMAILIT_API_KEY}` },
});
const result = await res.json();
```

**Python**

```python
import os, requests

r = requests.delete(
    "https://api.emailit.com/v2/tracking-keys/trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6",
    headers={"Authorization": f"Bearer {os.environ['EMAILIT_API_KEY']}"},
)
result = r.json()
```

**PHP**

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://api.emailit.com/v2/']);

$response = $client->delete('tracking-keys/trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6', [
    'headers' => ['Authorization' => 'Bearer ' . getenv('EMAILIT_API_KEY')],
]);
$result = json_decode($response->getBody(), true);
```

**200**

```json
{
  "object": "tracking_key",
  "id": "trk_2yHn5Pq2WcR7tY4uNs8KdV1bXj6",
  "deleted": true
}
```

---
Quelle: https://emailit.com/de/docs/api-reference/tracking-keys/delete/
