# Gutscheine API

> Gutscheine erstellen und ihre Pools mit eindeutigen Codes für E-Mails verwalten.

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

## Gutschein erstellen — POST /coupons

> Erstellen Sie für Ihre E-Mails einen Gutschein mit einem Pool eindeutiger Codes oder einem gemeinsamen Code. Alpha: nur für das Emailit-Team zugänglich.

# Gutschein erstellen

Erstellt einen Gutschein. Fügen Sie ihn mit `{{coupon "key"}}` in eine E-Mail ein: Wenn die E-Mail gerendert wird, erhält jeder Empfänger einen Code. Erfordert einen API-Schlüssel mit dem Scope `full`.

> **Commerce ist in der Alpha:** Commerce steht nur dem Emailit-Team offen, solange wir es testen. Andere Anfragen geben `403` mit `error: "commerce_alpha"` zurück. API-Schlüssel funktionieren nur in Workspaces, die dem Emailit-Team gehören. Siehe [Wer Commerce nutzen kann](/de/docs/commerce/#who-can-use-commerce).

- Ein Gutschein vom Typ **unique** enthält einen Pool von Codes zur einmaligen Verwendung. Jedem Empfänger wird der älteste freie Code zugewiesen, einer pro Kampagne oder Automatisierung, und er erhält denselben Code erneut, sobald diese E-Mail wieder für ihn gerendert wird. Laden Sie die Codes Ihres Shops hier oder mit [Gutscheincodes hinzufügen](/de/docs/api-reference/coupons/add-codes/) hoch, oder generieren Sie Codes in Emailit und importieren Sie sie in Ihren Shop.
- Ein Gutschein vom Typ **static** hat einen Code für alle, `static_code`.

Wenn eine [Bestellung](/de/docs/api-reference/orders/create/) einen Code in `coupon_codes` aufführt, wird der Code als eingelöst markiert. Siehe [Produkte, Gutscheine und der Warenkorb](/de/docs/campaigns/products-and-coupons/#coupon-codes).

`POST /coupons`

## Anfrage-Body

- `key` (string, erforderlich): Der Name, den Sie in Inhalten verwenden, eindeutig im Workspace. 1 bis 64 Kleinbuchstaben, Ziffern, `-` oder `_`, beginnend mit einem Buchstaben oder einer Ziffer. Großbuchstaben werden in Kleinbuchstaben umgewandelt.

- `name` (string, erforderlich): Name des Gutscheins, der in der Weboberfläche angezeigt wird, bis zu 191 Zeichen.

- `description` (string | null): Notiz für Ihr Team. Längerer Text wird auf 1.000 Zeichen gekürzt.

- `kind` (string): `unique` (Standardwert) oder `static`.

- `static_code` (string | null): Bis zu 191 Zeichen. Erforderlich bei einem statischen Gutschein: der Code, den alle erhalten. Bei einem Gutschein vom Typ `unique` der Text, den Empfänger erhalten, wenn der Pool leer oder der Gutschein abgelaufen ist. Ohne ihn erhalten sie einen leeren String.

- `discount_label` (string | null): Kurze Beschreibung des Rabatts, etwa `10% off`. Längerer Text wird auf 191 Zeichen gekürzt.

- `expires_at` (string | null): Datum mit Uhrzeit im Format ISO 8601. Danach erhalten Empfänger eines Gutscheins vom Typ `unique` `static_code` statt eines Codes, auch in erneut gerenderten E-Mails. Emailit setzt den Ablauf nicht in Ihrem Shop durch.

- `codes` (string[] | string): Codes, die dem Pool hinzugefügt werden: ein Array oder Text mit einem Code pro Zeile. Bei CSV-Text wird die erste Spalte gelesen und eine Kopfzeile wie `code` oder `coupon_code` übersprungen. Ein Code besteht aus 2 bis 64 Buchstaben, Ziffern, `-`, `_` oder `.` und beginnt mit einem Buchstaben oder einer Ziffer. Ungültige Codes werden ausgelassen, Duplikate einmal hinzugefügt. Bis zu 10.000 Codes.

## Rückgabe

`201 Created` mit dem [Gutschein-Objekt](/de/docs/api-reference/coupons/get/). Gibt `422` zurück, wenn ein Feld ungültig ist oder ein anderer Gutschein den Schlüssel bereits hat.
**Anfrage** `POST /coupons`

**cURL**

```bash
curl -X POST https://api.emailit.com/v2/coupons \
  -H "Authorization: Bearer your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "key": "welcome-10",
    "name": "Welcome 10% off",
    "description": "First-order discount for new subscribers.",
    "kind": "unique",
    "static_code": "WELCOME10",
    "discount_label": "10% off",
    "expires_at": "2026-12-31T23:59:59Z",
    "codes": ["WELCOME-7KQ2M9XA", "WELCOME-H4TZ8RCN", "WELCOME-P2WD6YFE"]
  }'
```

**201**

```json
{
  "object": "coupon",
  "id": "cpn_3sMKUvFbx63T9hhDoNea7fmo1fQ",
  "key": "welcome-10",
  "name": "Welcome 10% off",
  "description": "First-order discount for new subscribers.",
  "kind": "unique",
  "static_code": "WELCOME10",
  "discount_label": "10% off",
  "expires_at": "2026-12-31T23:59:59.000Z",
  "codes_total": 3,
  "codes_available": 3,
  "codes_assigned": 0,
  "codes_redeemed": 0,
  "created_at": "2026-10-01T09:00:12.304Z",
  "updated_at": "2026-10-01T09:00:12.304Z"
}
```

**422**

```json
{
  "message": "Validation failed. key: A coupon with this key already exists.",
  "errors": {
    "key": [
      "A coupon with this key already exists."
    ]
  }
}
```

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

## Gutschein abrufen — GET /coupons/{id}

> Rufen Sie einen Gutschein über seine ID oder seinen Schlüssel ab, mit der Anzahl seiner verfügbaren, zugewiesenen und eingelösten Codes. Alpha: nur für das Emailit-Team zugänglich.

# Gutschein abrufen

Ruft einen Gutschein über seine ID oder seinen Schlüssel ab, mit der Anzahl seiner Codes. Erfordert einen API-Schlüssel mit dem Scope `full`.

> **Commerce ist in der Alpha:** Commerce steht nur dem Emailit-Team offen, solange wir es testen. Andere Anfragen geben `403` mit `error: "commerce_alpha"` zurück. API-Schlüssel funktionieren nur in Workspaces, die dem Emailit-Team gehören. Siehe [Wer Commerce nutzen kann](/de/docs/commerce/#who-can-use-commerce).

`GET /coupons/{id}`

## Pfadparameter

- `id` (string, erforderlich): Die Gutschein-ID (`cpn_...`) oder der `key` des Gutscheins.

## Das Gutschein-Objekt

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

- `id` (string): Gutschein-ID (`cpn_...`).

- `key` (string): Der Name, den Sie in E-Mail-Inhalten verwenden: `{{coupon "welcome-10"}}`. Siehe [Produkte, Gutscheine und der Warenkorb](/de/docs/campaigns/products-and-coupons/#coupon-codes).

- `name` (string): Name des Gutscheins, der in der Weboberfläche angezeigt wird.

- `description` (string | null): Notiz für Ihr Team.

- `kind` (string): - `unique`: ein Pool von Codes zur einmaligen Verwendung. Jeder Empfänger erhält einen eigenen Code, einen pro Kampagne oder Automatisierung, und denselben Code erneut, wenn die E-Mail erneut gerendert wird. - `static`: ein Code für alle, `static_code`.

- `static_code` (string | null): Der gemeinsame Code eines statischen Gutscheins. Bei einem Gutschein vom Typ `unique` der Text, den Empfänger erhalten, wenn kein Code mehr übrig oder der Gutschein abgelaufen ist. Ohne ihn erhalten sie einen leeren String.

- `discount_label` (string | null): Kurze Beschreibung des Rabatts, etwa `10% off`.

- `expires_at` (string | null): Nach diesem Zeitpunkt erhalten Empfänger eines Gutscheins vom Typ `unique` `static_code` statt eines Codes.

- `codes_total` (integer): Codes im Pool.

- `codes_available` (integer): Codes, die noch vergeben werden können: keinem Kontakt zugewiesen und in keiner Bestellung verwendet.

- `codes_assigned` (integer): Einem Kontakt zugewiesene Codes, einschließlich der bereits eingelösten.

- `codes_redeemed` (integer): In einer [Bestellung](/de/docs/api-reference/orders/create/) verwendete Codes (`coupon_codes`).

- `created_at, updated_at` (string): Zeitpunkt der Erstellung und der letzten Änderung des Gutscheins, im Format ISO 8601 in UTC.

**Anfrage** `GET /coupons/{id}`

**cURL**

```bash
curl https://api.emailit.com/v2/coupons/welcome-10 \
  -H "Authorization: Bearer your_api_key"
```

**200**

```json
{
  "object": "coupon",
  "id": "cpn_3sMKUvFbx63T9hhDoNea7fmo1fQ",
  "key": "welcome-10",
  "name": "Welcome 10% off",
  "description": "First-order discount for new subscribers.",
  "kind": "unique",
  "static_code": "WELCOME10",
  "discount_label": "10% off",
  "expires_at": "2026-12-31T23:59:59.000Z",
  "codes_total": 5000,
  "codes_available": 3812,
  "codes_assigned": 1188,
  "codes_redeemed": 143,
  "created_at": "2026-10-01T09:00:12.304Z",
  "updated_at": "2026-10-01T09:00:12.304Z"
}
```

**404**

```json
{
  "error": "Coupon not found",
  "message": "Coupon not found."
}
```

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

## Gutschein aktualisieren — POST /coupons/{id}

> Ändern Sie Schlüssel, Name, Typ, Ersatz- oder statischen Code, Bezeichnung oder Ablauf eines Gutscheins. Alpha: nur für das Emailit-Team zugänglich.

# Gutschein aktualisieren

Aktualisiert einen Gutschein. Nur die Felder, die Sie senden, ändern sich. Um Codes hinzuzufügen, verwenden Sie [Gutscheincodes hinzufügen](/de/docs/api-reference/coupons/add-codes/): `codes` wird in dieser Anfrage ignoriert. Erfordert einen API-Schlüssel mit dem Scope `full`.

> **Commerce ist in der Alpha:** Commerce steht nur dem Emailit-Team offen, solange wir es testen. Andere Anfragen geben `403` mit `error: "commerce_alpha"` zurück. API-Schlüssel funktionieren nur in Workspaces, die dem Emailit-Team gehören. Siehe [Wer Commerce nutzen kann](/de/docs/commerce/#who-can-use-commerce).

Wenn Sie den `key` ändern, aktualisieren Sie auch die Platzhalter `{{coupon "key"}}` in Ihren E-Mails: Emailit findet Gutscheine über den Schlüssel im Inhalt.

`POST /coupons/{id}`

## Pfadparameter

- `id` (string, erforderlich): Die Gutschein-ID (`cpn_...`) oder der aktuelle `key` des Gutscheins.

## Anfrage-Body

Beliebige der Felder `key`, `name`, `description`, `kind`, `static_code`, `discount_label` und `expires_at`, mit den Regeln von [Gutschein erstellen](/de/docs/api-reference/coupons/create/). Senden Sie `null` für `description`, `static_code`, `discount_label` oder `expires_at`, um den Wert zu löschen. Ein Gutschein, der `static` ist oder wird, muss einen `static_code` behalten.

## Rückgabe

`200 OK` mit dem aktualisierten [Gutschein-Objekt](/de/docs/api-reference/coupons/get/). Gibt `404` zurück, wenn kein Gutschein zu `id` passt, und `422`, wenn ein Feld ungültig ist oder der neue Schlüssel bereits vergeben ist.
**Anfrage** `POST /coupons/{id}`

**cURL**

```bash
curl -X POST https://api.emailit.com/v2/coupons/welcome-10 \
  -H "Authorization: Bearer your_api_key" \
  -H "Content-Type: application/json" \
  -d '{ "expires_at": "2027-01-31T23:59:59Z" }'
```

**200**

```json
{
  "object": "coupon",
  "id": "cpn_3sMKUvFbx63T9hhDoNea7fmo1fQ",
  "key": "welcome-10",
  "name": "Welcome 10% off",
  "description": "First-order discount for new subscribers.",
  "kind": "unique",
  "static_code": "WELCOME10",
  "discount_label": "10% off",
  "expires_at": "2027-01-31T23:59:59.000Z",
  "codes_total": 5000,
  "codes_available": 3812,
  "codes_assigned": 1188,
  "codes_redeemed": 143,
  "created_at": "2026-10-01T09:00:12.304Z",
  "updated_at": "2026-10-09T15:47:20.061Z"
}
```

**404**

```json
{
  "error": "Coupon not found",
  "message": "Coupon not found."
}
```

**422**

```json
{
  "message": "Validation failed. static_code: A static coupon needs its code.",
  "errors": {
    "static_code": [
      "A static coupon needs its code."
    ]
  }
}
```

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

## Gutscheine auflisten — GET /coupons

> Listen Sie die Gutscheine Ihres Workspaces auf, neueste zuerst, mit der Anzahl ihrer Codes. Alpha: nur für das Emailit-Team zugänglich.

# Gutscheine auflisten

Listet die Gutscheine Ihres Workspaces auf, neueste zuerst, mit der Anzahl ihrer Codes. Erfordert einen API-Schlüssel mit dem Scope `full`.

> **Commerce ist in der Alpha:** Commerce steht nur dem Emailit-Team offen, solange wir es testen. Andere Anfragen geben `403` mit `error: "commerce_alpha"` zurück. API-Schlüssel funktionieren nur in Workspaces, die dem Emailit-Team gehören. Siehe [Wer Commerce nutzen kann](/de/docs/commerce/#who-can-use-commerce).

`GET /coupons`

## Query-Parameter

- `page` (integer): Seitennummer für die Paginierung (Minimum: 1, Standardwert: 1).

- `limit` (integer): Anzahl der zurückgegebenen Gutscheine (Minimum: 1, Maximum: 100, Standardwert: 25).

- `search` (string): Abgleich mit dem Namen oder Schlüssel des Gutscheins, ohne Beachtung der Groß-/Kleinschreibung.

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

## Filter und Sortierung

Filter- und Sortierschlüssel: siehe [Filtern und Sortieren](https://emailit.com/de/docs/api-reference/filtering/).

## Rückgabe

Eine Seite mit [Gutschein-Objekten](/de/docs/api-reference/coupons/get/) in `data`, dazu `total_records`, `next_page_url` und `previous_page_url`. Die Seiten-URLs enthalten nur `page` und `limit`; fügen Sie Ihre Suche und Filter daher erneut hinzu, wenn Sie ihnen folgen.
**Anfrage** `GET /coupons`

**cURL**

```bash
curl "https://api.emailit.com/v2/coupons?kind.exact=unique" \
  -H "Authorization: Bearer your_api_key"
```

**200**

```json
{
  "data": [
    {
      "object": "coupon",
      "id": "cpn_3sMKUvFbx63T9hhDoNea7fmo1fQ",
      "key": "welcome-10",
      "name": "Welcome 10% off",
      "description": "First-order discount for new subscribers.",
      "kind": "unique",
      "static_code": "WELCOME10",
      "discount_label": "10% off",
      "expires_at": "2026-12-31T23:59:59.000Z",
      "codes_total": 5000,
      "codes_available": 3812,
      "codes_assigned": 1188,
      "codes_redeemed": 143,
      "created_at": "2026-10-01T09:00:12.304Z",
      "updated_at": "2026-10-01T09:00:12.304Z"
    }
  ],
  "total_records": 1,
  "next_page_url": null,
  "previous_page_url": null
}
```

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

## Gutschein löschen — DELETE /coupons/{id}

> Löschen Sie einen Gutschein und alle seine Codes. Alpha: nur für das Emailit-Team zugänglich.

# Gutschein löschen

Löscht einen Gutschein zusammen mit allen seinen Codes, einschließlich zugewiesener und eingelöster. Bestellungen behalten die Codes in ihren `coupon_codes`. Erfordert einen API-Schlüssel mit dem Scope `full`.

> **Commerce ist in der Alpha:** Commerce steht nur dem Emailit-Team offen, solange wir es testen. Andere Anfragen geben `403` mit `error: "commerce_alpha"` zurück. API-Schlüssel funktionieren nur in Workspaces, die dem Emailit-Team gehören. Siehe [Wer Commerce nutzen kann](/de/docs/commerce/#who-can-use-commerce).

`DELETE /coupons/{id}`

## Pfadparameter

- `id` (string, erforderlich): Die Gutschein-ID (`cpn_...`) oder der `key` des Gutscheins.

**Anfrage** `DELETE /coupons/{id}`

**cURL**

```bash
curl -X DELETE https://api.emailit.com/v2/coupons/cpn_3sMKUvFbx63T9hhDoNea7fmo1fQ \
  -H "Authorization: Bearer your_api_key"
```

**200**

```json
{
  "object": "coupon",
  "id": "cpn_3sMKUvFbx63T9hhDoNea7fmo1fQ",
  "deleted": true
}
```

**404**

```json
{
  "error": "Coupon not found",
  "message": "Coupon not found."
}
```

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

## Gutscheincodes auflisten — GET /coupons/{id}/codes

> Listen Sie die Codes eines Gutscheins auf, mit dem Kontakt, dem sie zugewiesen wurden, und ob sie eingelöst wurden, als JSON oder als CSV-Export. Alpha: nur für das Emailit-Team zugänglich.

# Gutscheincodes auflisten

Listet die Codes eines Gutscheins auf, älteste zuerst: die Reihenfolge, in der sie vergeben werden. Mit `format=csv` exportieren Sie sie, zum Beispiel um generierte Codes in Ihren Shop zu importieren. Erfordert einen API-Schlüssel mit dem Scope `full`.

> **Commerce ist in der Alpha:** Commerce steht nur dem Emailit-Team offen, solange wir es testen. Andere Anfragen geben `403` mit `error: "commerce_alpha"` zurück. API-Schlüssel funktionieren nur in Workspaces, die dem Emailit-Team gehören. Siehe [Wer Commerce nutzen kann](/de/docs/commerce/#who-can-use-commerce).

`GET /coupons/{id}/codes`

## Pfadparameter

- `id` (string, erforderlich): Die Gutschein-ID (`cpn_...`) oder der `key` des Gutscheins.

## Query-Parameter

- `page` (integer): Seitennummer für die Paginierung (Minimum: 1, Standardwert: 1).

- `limit` (integer): Anzahl der zurückgegebenen Codes (Minimum: 1, Maximum: 100, Standardwert: 50).

- `status` (string): - `available`: keinem Kontakt zugewiesen und in keiner Bestellung verwendet, kann also noch vergeben werden. - `assigned`: einem Kontakt zugewiesen und nicht eingelöst. - `redeemed`: in einer Bestellung verwendet.

- `format` (string): `json` (Standardwert) oder `csv`. CSV gibt alle Codes, die zu `status` passen, in einer Datei ohne Paginierung zurück, mit den Spalten `code`, `status`, `email`, `assigned_at` und `redeemed_at`. Filter der Form `key.condition` und die Sortierung gelten nicht für die CSV-Datei.

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

## Filter und Sortierung

Filter- und Sortierschlüssel: siehe [Filtern und Sortieren](https://emailit.com/de/docs/api-reference/filtering/).

## Rückgabe

Eine Seite mit Gutscheincodes in `data`, dazu `total_records`, `next_page_url` und `previous_page_url`. Jeder Code hat:

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

- `id` (string): Code-ID (`cpc_...`).

- `code` (string): Der Code.

- `contact_id, email` (string | null): Der Kontakt, dem der Code zugewiesen ist, oder `null`.

- `source_id` (string | null): Die Kampagne (`cmp_...`) oder Automatisierung (`aut_...`), deren E-Mail den Code erhalten hat.

- `assigned_at` (string | null): Zeitpunkt, zu dem der Code zugewiesen wurde.

- `redeemed_at, redeemed_order_id` (string | null): Zeitpunkt, zu dem der Code eingelöst wurde, und von welcher Bestellung (`ord_...`).

- `created_at` (string): Zeitpunkt, zu dem der Code dem Pool hinzugefügt wurde.

**Anfrage** `GET /coupons/{id}/codes`

**cURL**

```bash
curl "https://api.emailit.com/v2/coupons/welcome-10/codes?status=assigned&limit=2" \
  -H "Authorization: Bearer your_api_key"
```

**200**

```json
{
  "data": [
    {
      "object": "coupon_code",
      "id": "cpc_3s6oCjlRbLFujYObEAcuiZmGKqu",
      "code": "WELCOME-H4TZ8RCN",
      "contact_id": "con_3MjLVacsYA6keJucAbOs3o3XhyA",
      "email": "grace@example.com",
      "source_id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
      "assigned_at": "2026-10-08T09:00:41.773Z",
      "redeemed_at": null,
      "redeemed_order_id": null,
      "created_at": "2026-10-01T09:00:12.304Z"
    },
    {
      "object": "coupon_code",
      "id": "cpc_3u9TrZTopqOgaqT9FcZFareUFGj",
      "code": "WELCOME-P2WD6YFE",
      "contact_id": "con_3EwrXnu9OaQWlfI1AyPUUEoYjQs",
      "email": "ada@example.com",
      "source_id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
      "assigned_at": "2026-10-08T09:00:41.802Z",
      "redeemed_at": null,
      "redeemed_order_id": null,
      "created_at": "2026-10-01T09:00:12.304Z"
    }
  ],
  "total_records": 1045,
  "next_page_url": "/v2/coupons/cpn_3sMKUvFbx63T9hhDoNea7fmo1fQ/codes?page=2&limit=2",
  "previous_page_url": null
}
```

**CSV**

```text
code,status,email,assigned_at,redeemed_at
WELCOME-7KQ2M9XA,redeemed,ada@example.com,2026-10-08T09:00:41.751Z,2026-10-08T14:32:10.000Z
WELCOME-H4TZ8RCN,assigned,grace@example.com,2026-10-08T09:00:41.773Z,
WELCOME-QX3B9NMV,available,,,
```

**404**

```json
{
  "error": "Coupon not found",
  "message": "Coupon not found."
}
```

---
Quelle: https://emailit.com/de/docs/api-reference/coupons/list-codes/

## Gutscheincodes hinzufügen — POST /coupons/{id}/codes

> Laden Sie die Codes Ihres Shops zu einem Gutschein mit eindeutigen Codes hoch oder generieren Sie zufällige Codes in Emailit. Alpha: nur für das Emailit-Team zugänglich.

# Gutscheincodes hinzufügen

Fügt dem Pool eines Gutscheins vom Typ `unique` Codes hinzu. Laden Sie entweder mit `codes` Codes hoch, die in Ihrem Shop existieren, oder lassen Sie Emailit mit `generate` zufällige Codes erstellen und importieren Sie sie dann mit [Gutscheincodes auflisten](/de/docs/api-reference/coupons/list-codes/) (`format=csv`) in Ihren Shop. Codes, die bereits im Pool sind, werden übersprungen. Statische Gutscheine haben einen einzigen Code und geben `422` zurück. Erfordert einen API-Schlüssel mit dem Scope `full`.

> **Commerce ist in der Alpha:** Commerce steht nur dem Emailit-Team offen, solange wir es testen. Andere Anfragen geben `403` mit `error: "commerce_alpha"` zurück. API-Schlüssel funktionieren nur in Workspaces, die dem Emailit-Team gehören. Siehe [Wer Commerce nutzen kann](/de/docs/commerce/#who-can-use-commerce).

`POST /coupons/{id}/codes`

## Pfadparameter

- `id` (string, erforderlich): Die Gutschein-ID (`cpn_...`) oder der `key` des Gutscheins.

## Anfrage-Body

Senden Sie `codes` oder `generate`. Wenn Sie beides senden, wird `generate` verwendet.

- `codes` (string[] | string): Bis zu 10.000 Codes: ein Array oder Text mit einem Code pro Zeile. Bei CSV-Text wird die erste Spalte gelesen und eine Kopfzeile wie `code` oder `coupon_code` übersprungen. Ein Code besteht aus 2 bis 64 Buchstaben, Ziffern, `-`, `_` oder `.` und beginnt mit einem Buchstaben oder einer Ziffer. Codes, die nicht passen, werden in `invalid` zurückgegeben.

- `generate` (object): Erstellt zufällige Codes aus Großbuchstaben und Ziffern, ohne die leicht verwechselbaren Zeichen `0`, `O`, `1` und `I`. - `count` (integer, erforderlich): 1 bis 10.000 Codes. - `prefix` (string): bis zu 20 Buchstaben, Ziffern, `-` oder `_`, die jedem Code vorangestellt werden. Zum Beispiel `WELCOME-`. - `length` (integer): zufällige Zeichen nach dem Präfix, von 4 bis 32. Standardwert 8. Werte außerhalb des Bereichs werden auf die Grenzen gesetzt.

## Rückgabe

- `added` (integer): Dem Pool hinzugefügte Codes.

- `skipped` (integer): Codes, die bereits im Pool waren.

- `invalid` (string[]): Hochgeladene Werte, die keine gültigen Codes sind und nicht hinzugefügt wurden.

- `coupon` (object): Das [Gutschein-Objekt](/de/docs/api-reference/coupons/get/) mit den neuen Zahlen.

Gibt `404` zurück, wenn kein Gutschein zu `id` passt, und `422` bei einem statischen Gutschein, wenn kein gültiger Code gesendet wurde, wenn mehr als 10.000 Codes gesendet wurden oder wenn `generate.count` oder `generate.prefix` außerhalb des zulässigen Bereichs liegt.
**Anfrage** `POST /coupons/{id}/codes`

**cURL**

```bash
curl -X POST https://api.emailit.com/v2/coupons/welcome-10/codes \
  -H "Authorization: Bearer your_api_key" \
  -H "Content-Type: application/json" \
  -d '{ "generate": { "count": 5000, "prefix": "WELCOME-", "length": 8 } }'
```

**200**

```json
{
  "added": 5000,
  "skipped": 0,
  "invalid": [],
  "coupon": {
    "object": "coupon",
    "id": "cpn_3sMKUvFbx63T9hhDoNea7fmo1fQ",
    "key": "welcome-10",
    "name": "Welcome 10% off",
    "description": "First-order discount for new subscribers.",
    "kind": "unique",
    "static_code": "WELCOME10",
    "discount_label": "10% off",
    "expires_at": "2026-12-31T23:59:59.000Z",
    "codes_total": 5003,
    "codes_available": 5003,
    "codes_assigned": 0,
    "codes_redeemed": 0,
    "created_at": "2026-10-01T09:00:12.304Z",
    "updated_at": "2026-10-01T09:00:12.304Z"
  }
}
```

**422**

```json
{
  "message": "Validation failed. codes: Static coupons have one code; set static_code instead.",
  "errors": {
    "codes": [
      "Static coupons have one code; set static_code instead."
    ]
  }
}
```

---
Quelle: https://emailit.com/de/docs/api-reference/coupons/add-codes/
