# Vorlagen API

> Vorlagenversionen erstellen, eine pro Alias veröffentlichen und beim Senden verwenden.

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

## Vorlage erstellen — POST /templates

> Erstellen Sie eine Vorlagenversion unter einem Alias. Ein neuer Alias wird sofort veröffentlicht; eine Version für einen bestehenden Alias beginnt als unveröffentlichter Entwurf.

# Vorlage erstellen

Erstellt eine Vorlagenversion. Versionen mit demselben `alias` gehören zur selben Vorlage, und pro Alias ist jeweils nur eine Version veröffentlicht. Wenn Sie [eine E-Mail senden](/de/docs/api-reference/emails/send/) und `template` auf einen Alias setzen, verwendet Emailit die veröffentlichte Version. Erfordert einen API-Schlüssel mit dem Scope `full`.

`POST /templates`

## Anfrage-Body

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

- `alias` (string, erforderlich): Kennung, die die Versionen einer Vorlage zusammenfasst. Bis zu 191 Zeichen; nur Kleinbuchstaben, Ziffern, Unterstriche und Bindestriche (`^[a-z0-9_-]+$`). Verwendet noch keine Vorlage diesen Alias, wird die neue Version sofort veröffentlicht. Existiert der Alias bereits, wird die neue Version unveröffentlicht erstellt (`published_at` ist `null`) und Sie veröffentlichen sie mit [Vorlage veröffentlichen](/de/docs/api-reference/templates/publish/).

- `from` (string): Standardabsender, zum Beispiel `Acme <hello@acme.com>`. Bis zu 191 Zeichen.

- `subject` (string): Standard-Betreffzeile. Bis zu 191 Zeichen. Kann Variablen der Template-Sprache [Temple](/de/docs/templates/temple/) enthalten, etwa `{{ first_name }}`.

- `reply_to` (string | string[]): Reply-To-Adresse oder ein Array von Adressen. Jeder Wert muss eine gültige E-Mail-Adresse sein.

- `html` (string): HTML-Inhalt.

- `text` (string): Nur-Text-Inhalt.

- `source` (string): Quelldokument des Editors, zum Beispiel das Dragit-JSON einer im Drag-and-drop-Editor erstellten Vorlage. Wird unverändert gespeichert. Bei `editor: "mjml"` das MJML: Emailit validiert es, speichert es als [MJML-Dokument](/de/docs/templates/mjml/#the-stored-document) und kompiliert daraus `html`.

- `editor` (string): Editor, zu dem die Vorlage gehört: `html` (Standardwert), `text`, `dragit` oder `tiptap`. `mjml` ist in der Alpha und steht nur dem Emailit-Team offen; andere Anfragen erhalten `403` mit `error: "mjml_alpha"`. Siehe [MJML-Editoren und API](/de/docs/templates/mjml/).

## Rückgabe

Gibt `201 Created` mit der Vorlage in `data` und einer Bestätigung in `message` zurück. Die Vorlage enthält `html`, `text` und `source`. Emailit sendet außerdem das Webhook-Event [`template.created`](/de/docs/webhooks/events/template/created/).

MJML-Vorlagen geben außerdem ein Objekt `mjml` mit den Versionen des Dokuments zurück. Ungültiges MJML gibt `422` mit `errors.source` und `diagnostics` zurück; siehe [Validierung](/de/docs/templates/mjml/#validation).

Besteht ein Feld die Validierung nicht, lautet die Antwort `400` mit `message: "Validation failed"` und einem Objekt `errors`, dessen Schlüssel die Felder sind, zum Beispiel bei einem Alias mit Großbuchstaben oder einer ungültigen Adresse in `reply_to`. Ein fehlendes `name` oder `alias` oder ein nicht erlaubter Wert für `editor` gibt stattdessen den Standard-Validierungsfehler `400` mit einem Array `details` zurück. Siehe [Fehler](/de/docs/api-reference/errors/).

**Anfrage** `POST /templates`

**Node.js**

```javascript
import { Emailit } from '@emailit/node';
const emailit = new Emailit('your_api_key');

const template = await emailit.templates.create({
  name: 'Welcome email',
  alias: 'welcome-email',
  subject: 'Welcome to Acme, {{ first_name }}',
  html: '<h1>Welcome, {{ first_name }}</h1>'
});
```

**Python**

```python
from emailit import EmailitClient
client = EmailitClient("your_api_key")

template = client.templates.create({
    "name": "Welcome email",
    "alias": "welcome-email",
    "subject": "Welcome to Acme, {{ first_name }}",
    "html": "<h1>Welcome, {{ first_name }}</h1>"
})
```

**PHP**

```php
$emailit = Emailit::client('your_api_key');

$template = $emailit->templates()->create([
    'name' => 'Welcome email',
    'alias' => 'welcome-email',
    'subject' => 'Welcome to Acme, {{ first_name }}',
    'html' => '<h1>Welcome, {{ first_name }}</h1>'
]);
```

**Ruby**

```ruby
require "emailit"
client = Emailit::EmailitClient.new("your_api_key")

template = client.templates.create(
  name: "Welcome email",
  alias: "welcome-email",
  subject: "Welcome to Acme, {{ first_name }}",
  html: "<h1>Welcome, {{ first_name }}</h1>"
)
```

**Go**

```go
import "github.com/emailit/emailit-go/v2"
client := emailit.NewClient("your_api_key")

template, err := client.Templates.Create(&emailit.CreateTemplateRequest{
    Name:    "Welcome email",
    Alias:   "welcome-email",
    Subject: "Welcome to Acme, {{ first_name }}",
    Html:    "<h1>Welcome, {{ first_name }}</h1>",
})
```

**Rust**

```rust
use emailit::Emailit;
let emailit = Emailit::new("your_api_key");

let template = emailit.templates.create(
    emailit::types::CreateTemplateParams::new("Welcome email")
        .with_subject("Welcome to Acme, {{ first_name }}")
        .with_html("<h1>Welcome, {{ first_name }}</h1>")
).await?;
```

**Java**

```java
import com.emailit.*;
import com.emailit.params.*;
EmailitClient emailit = new EmailitClient("your_api_key");

EmailitObject template = emailit.templates().create(
    TemplateCreateParams.builder()
        .setName("Welcome email")
        .setAlias("welcome-email")
        .setSubject("Welcome to Acme, {{ first_name }}")
        .setHtml("<h1>Welcome, {{ first_name }}</h1>")
        .build()
);
```

**.NET**

```csharp
using Emailit;
var emailit = new EmailitClient("your_api_key");

var template = emailit.Templates.Create(new TemplateCreateOptions {
    Name = "Welcome email",
    Alias = "welcome-email",
    Subject = "Welcome to Acme, {{ first_name }}",
    Html = "<h1>Welcome, {{ first_name }}</h1>"
});
```

**Laravel**

```php
use Emailit\Laravel\Facades\Emailit;

$template = Emailit::templates()->create([
    'name' => 'Welcome email',
    'alias' => 'welcome-email',
    'subject' => 'Welcome to Acme, {{ first_name }}',
    'html' => '<h1>Welcome, {{ first_name }}</h1>'
]);
```

**cURL**

```bash
curl https://api.emailit.com/v2/templates \
  -H "Authorization: Bearer your_api_key" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Welcome email",
    "alias": "welcome-email",
    "subject": "Welcome to Acme, {{ first_name }}",
    "html": "<h1>Welcome, {{ first_name }}</h1>"
  }'
```

**201**

```json
{
  "data": {
    "id": "tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a",
    "name": "Welcome email",
    "alias": "welcome-email",
    "from": null,
    "subject": "Welcome to Acme, {{ first_name }}",
    "reply_to": null,
    "html": "<h1>Welcome, {{ first_name }}</h1>",
    "text": null,
    "source": null,
    "editor": "html",
    "published_at": "2026-09-30T10:30:00.482119Z",
    "preview_url": null,
    "created_at": "2026-09-30T10:30:00.482119Z",
    "updated_at": "2026-09-30T10:30:00.482119Z"
  },
  "message": "Template was successfully created."
}
```

**400**

```json
{
  "message": "Validation failed",
  "errors": {
    "alias": ["Alias must contain only lowercase letters (a-z), numbers (0-9), underscores (_), and hyphens (-)"]
  }
}
```

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

## Vorlage abrufen — GET /templates/{id}

> Rufen Sie eine Vorlagenversion per ID mit ihrem vollständigen Inhalt ab, dazu eine Übersicht aller anderen Versionen mit demselben Alias.

# Vorlage abrufen

Gibt eine Vorlagenversion einschließlich ihres Inhalts zurück und listet die anderen Versionen desselben Alias in `versions` auf. Vorlagen werden nur per ID gesucht, nicht per Alias. Erfordert einen API-Schlüssel mit dem Scope `full`.

`GET /templates/:id`

## Pfadparameter

- `id` (string, erforderlich): ID der Vorlage, zum Beispiel `tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a`.

## Rückgabe

Gibt `200 OK` mit der Vorlage in `data` zurück. Neben den Feldern der Vorlage enthält die Antwort ein Array `versions` mit `id`, `name`, `published_at`, `created_at` und `updated_at` jeder anderen Version mit demselben Alias, die neueste zuerst. Die veröffentlichte Version ist die, deren `published_at` nicht null ist.

Gibt `404` mit `message: "Template not found"` zurück, wenn die ID in Ihrem Workspace nicht existiert.

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

**Node.js**

```javascript
import { Emailit } from '@emailit/node';
const emailit = new Emailit('your_api_key');

const template = await emailit.templates.get('tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a');
```

**Python**

```python
from emailit import EmailitClient
client = EmailitClient("your_api_key")

template = client.templates.get("tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a")
```

**PHP**

```php
$emailit = Emailit::client('your_api_key');

$template = $emailit->templates()->get('tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a');
```

**Ruby**

```ruby
require "emailit"
client = Emailit::EmailitClient.new("your_api_key")

template = client.templates.get("tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a")
```

**Go**

```go
import "github.com/emailit/emailit-go/v2"
client := emailit.NewClient("your_api_key")

template, err := client.Templates.Get("tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a")
```

**Rust**

```rust
use emailit::Emailit;
let emailit = Emailit::new("your_api_key");

let template = emailit.templates.get("tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a").await?;
```

**Java**

```java
import com.emailit.*;
import com.emailit.params.*;
EmailitClient emailit = new EmailitClient("your_api_key");

EmailitObject template = emailit.templates().get("tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a");
```

**.NET**

```csharp
using Emailit;
var emailit = new EmailitClient("your_api_key");

var template = emailit.Templates.Get("tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a");
```

**Laravel**

```php
use Emailit\Laravel\Facades\Emailit;

$template = Emailit::templates()->get('tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a');
```

**cURL**

```bash
curl https://api.emailit.com/v2/templates/tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a \
  -H "Authorization: Bearer your_api_key"
```

**200**

```json
{
  "data": {
    "id": "tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a",
    "name": "Welcome email",
    "alias": "welcome-email",
    "from": "Acme <hello@acme.com>",
    "subject": "Welcome to Acme, {{ first_name }}",
    "reply_to": ["support@acme.com"],
    "html": "<h1>Welcome, {{ first_name }}</h1>",
    "text": "Welcome, {{ first_name }}",
    "source": null,
    "editor": "html",
    "published_at": "2026-09-30T10:30:00.482119Z",
    "preview_url": null,
    "created_at": "2026-09-28T08:12:45.103882Z",
    "updated_at": "2026-09-30T10:30:00.482119Z",
    "versions": [
      {
        "id": "tem_2xKyB4qLm7RtV9sNd3HwEa6uC1f",
        "name": "Welcome email (October)",
        "published_at": null,
        "created_at": "2026-09-30T14:02:11.550731Z",
        "updated_at": "2026-09-30T14:02:11.550731Z"
      }
    ]
  }
}
```

**404**

```json
{
  "message": "Template not found"
}
```

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

## Vorlage aktualisieren — POST /templates/{id}

> Aktualisieren Sie Name, Alias, Absender, Betreff oder Inhalt einer Vorlagenversion. Eine Aktualisierung veröffentlicht sie nie und zieht ihre Veröffentlichung nie zurück.

# Vorlage aktualisieren

Aktualisiert eine Vorlagenversion. Senden Sie nur die Felder, die Sie ändern möchten. Die Version behält ihren Veröffentlichungsstatus: Eine veröffentlichte Version bleibt veröffentlicht, ein Entwurf bleibt ein Entwurf. Erfordert einen API-Schlüssel mit dem Scope `full`.

`POST /templates/:id`

## Pfadparameter

- `id` (string, erforderlich): ID der Vorlage, zum Beispiel `tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a`.

## Anfrage-Body

- `name` (string): Name der Vorlage. Bis zu 191 Zeichen.

- `alias` (string): Neuer Alias. Bis zu 191 Zeichen; nur Kleinbuchstaben, Ziffern, Unterstriche und Bindestriche. Der Alias darf nicht bereits von einer anderen Vorlage verwendet werden.

- `from` (string): Standardabsender, zum Beispiel `Acme <hello@acme.com>`. Bis zu 191 Zeichen. Senden Sie einen leeren String, um den Wert zu löschen.

- `subject` (string): Standard-Betreffzeile. Bis zu 191 Zeichen. Senden Sie einen leeren String, um den Wert zu löschen.

- `reply_to` (string | string[]): Reply-To-Adresse oder Array von Adressen. Senden Sie einen leeren String, um den Wert zu löschen.

- `html` (string): HTML-Inhalt.

- `text` (string): Nur-Text-Inhalt.

- `source` (string): Quelldokument des Editors, zum Beispiel Dragit-JSON. Bei einer MJML-Vorlage das vollständige MJML: Emailit validiert es und kompiliert `html` neu, und ein übergebenes `html` wird ignoriert.

- `editor` (string): `html`, `text`, `dragit` oder `tiptap`. `mjml` ist in der Alpha und steht nur dem Emailit-Team offen; wer den Inhalt einer MJML-Vorlage ohne MJML-Zugriff ändert, erhält `403` mit `error: "mjml_alpha"`. Umbenennen oder Veröffentlichen funktioniert für alle. Siehe [MJML-Editoren und API](/de/docs/templates/mjml/).

## Rückgabe

Gibt `200 OK` mit der aktualisierten Vorlage in `data` und einer Bestätigung in `message` zurück. Emailit sendet außerdem das Webhook-Event [`template.updated`](/de/docs/webhooks/events/template/updated/).

Gibt `400` mit `message: "Validation failed"` und einem Objekt `errors` zurück, wenn ein Wert ungültig ist, zum Beispiel `"Alias already exists"`. Werte mit mehr als 191 Zeichen oder ein unbekannter `editor` geben den Standard-Validierungsfehler `400` zurück. Gibt `404` zurück, wenn die Vorlage nicht existiert.

Damit diese Version für den Versand verwendet wird, rufen Sie [Vorlage veröffentlichen](/de/docs/api-reference/templates/publish/) auf.

**Anfrage** `POST /templates/{id}`

**Node.js**

```javascript
import { Emailit } from '@emailit/node';
const emailit = new Emailit('your_api_key');

const template = await emailit.templates.update('tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a', {
  subject: 'Welcome aboard, {{ first_name }}'
});
```

**Python**

```python
from emailit import EmailitClient
client = EmailitClient("your_api_key")

template = client.templates.update("tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a", {
    "subject": "Welcome aboard, {{ first_name }}"
})
```

**PHP**

```php
$emailit = Emailit::client('your_api_key');

$template = $emailit->templates()->update('tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a', [
    'subject' => 'Welcome aboard, {{ first_name }}'
]);
```

**Ruby**

```ruby
require "emailit"
client = Emailit::EmailitClient.new("your_api_key")

template = client.templates.update("tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a", subject: "Welcome aboard, {{ first_name }}")
```

**Go**

```go
import "github.com/emailit/emailit-go/v2"
client := emailit.NewClient("your_api_key")

template, err := client.Templates.Update("tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a", &emailit.UpdateTemplateRequest{
    Subject: "Welcome aboard, {{ first_name }}",
})
```

**Rust**

```rust
use emailit::Emailit;
let emailit = Emailit::new("your_api_key");

let template = emailit.templates.update("tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a",
    emailit::types::UpdateTemplateParams {
        subject: Some("Welcome aboard, {{ first_name }}".into()),
        ..Default::default()
    }
).await?;
```

**Java**

```java
import com.emailit.*;
import com.emailit.params.*;
EmailitClient emailit = new EmailitClient("your_api_key");

EmailitObject template = emailit.templates().update("tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a",
    TemplateUpdateParams.builder()
        .setSubject("Welcome aboard, {{ first_name }}")
        .build()
);
```

**.NET**

```csharp
using Emailit;
var emailit = new EmailitClient("your_api_key");

var template = emailit.Templates.Update("tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a", new TemplateUpdateOptions {
    Subject = "Welcome aboard, {{ first_name }}"
});
```

**Laravel**

```php
use Emailit\Laravel\Facades\Emailit;

$template = Emailit::templates()->update('tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a', [
    'subject' => 'Welcome aboard, {{ first_name }}'
]);
```

**cURL**

```bash
curl -X POST https://api.emailit.com/v2/templates/tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a \
  -H "Authorization: Bearer your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"subject": "Welcome aboard, {{ first_name }}"}'
```

**200**

```json
{
  "data": {
    "id": "tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a",
    "name": "Welcome email",
    "alias": "welcome-email",
    "from": "Acme <hello@acme.com>",
    "subject": "Welcome aboard, {{ first_name }}",
    "reply_to": ["support@acme.com"],
    "html": "<h1>Welcome, {{ first_name }}</h1>",
    "text": "Welcome, {{ first_name }}",
    "source": null,
    "editor": "html",
    "published_at": "2026-09-30T10:30:00.482119Z",
    "preview_url": null,
    "created_at": "2026-09-28T08:12:45.103882Z",
    "updated_at": "2026-10-01T09:15:27.640000Z"
  },
  "message": "Template was successfully updated."
}
```

**400**

```json
{
  "message": "Validation failed",
  "errors": {
    "alias": ["Alias already exists"]
  }
}
```

**404**

```json
{
  "message": "Template not found"
}
```

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

## Vorlagen auflisten — GET /templates

> Listen Sie die veröffentlichte Version jeder Vorlage in Ihrem Workspace auf, mit Filtern, Sortierung und seitenbasierter Paginierung.

# Vorlagen auflisten

Gibt die veröffentlichte Version jeder Vorlage zurück, die neuesten zuerst. Unveröffentlichte Versionen werden nicht aufgelistet; um alle Versionen eines Alias zu sehen, [rufen Sie eine Vorlage ab](/de/docs/api-reference/templates/get/). Erfordert einen API-Schlüssel mit dem Scope `full`.

`GET /templates`

## Query-Parameter

- `page` (integer): Seitennummer, beginnend bei `1`. Standardwert: `1`.

- `per_page` (integer): Vorlagen pro Seite, von `1` bis `100`. Standardwert: `25`.

- `include_content` (boolean): Setzen Sie den Wert auf `true`, um `html`, `text` und `source` für jede Vorlage einzuschließen. Standardmäßig weggelassen, damit die Antworten klein bleiben.

- `filter[name]` (string): Teilübereinstimmung mit Name oder Alias der Vorlage, ohne Beachtung der Groß-/Kleinschreibung.

- `filter[alias]` (string): Exakter Alias.

- `filter[editor]` (string): Editor: `html`, `text`, `dragit`, `tiptap` oder `mjml` ([Alpha](/de/docs/templates/mjml/)).

- `match` (string): `all` (Standardwert) verlangt, dass jeder Filter `key.condition` zutrifft. Bei `or` genügt einer davon. Siehe [Filtern und Sortieren](/de/docs/api-reference/filtering/).

- `sort` (string): Sortierschlüssel: `name`, `alias`, `created_at` (Standardwert), `updated_at` oder `published_at`.

- `order` (string): Sortierrichtung: `asc` oder `desc` (Standardwert).

## Filter

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

Bei diesem Endpunkt akzeptiert `order` nur `asc` oder `desc`. Übergeben Sie den Sortierschlüssel in `sort`, zum Beispiel `sort=name&order=asc`.

## Rückgabe

Gibt `200 OK` mit den Vorlagen in `data` und den Paginierungsfeldern `total_records`, `per_page`, `current_page` und `total_pages` zurück. Jede Vorlage enthält `total_versions`, die Anzahl der Versionen mit demselben Alias.

**Anfrage** `GET /templates`

**Node.js**

```javascript
import { Emailit } from '@emailit/node';
const emailit = new Emailit('your_api_key');

const templates = await emailit.templates.list();
```

**Python**

```python
from emailit import EmailitClient
client = EmailitClient("your_api_key")

templates = client.templates.list()
```

**PHP**

```php
$emailit = Emailit::client('your_api_key');

$templates = $emailit->templates()->list();
```

**Ruby**

```ruby
require "emailit"
client = Emailit::EmailitClient.new("your_api_key")

templates = client.templates.list
```

**Go**

```go
import "github.com/emailit/emailit-go/v2"
client := emailit.NewClient("your_api_key")

templates, err := client.Templates.List(nil)
```

**Rust**

```rust
use emailit::Emailit;
let emailit = Emailit::new("your_api_key");

let templates = emailit.templates.list(None).await?;
```

**Java**

```java
import com.emailit.*;
import com.emailit.params.*;
EmailitClient emailit = new EmailitClient("your_api_key");

EmailitObject templates = emailit.templates().list();
```

**.NET**

```csharp
using Emailit;
var emailit = new EmailitClient("your_api_key");

var templates = emailit.Templates.List();
```

**Laravel**

```php
use Emailit\Laravel\Facades\Emailit;

$templates = Emailit::templates()->list();
```

**cURL**

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

**200**

```json
{
  "data": [
    {
      "id": "tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a",
      "name": "Welcome email",
      "alias": "welcome-email",
      "from": "Acme <hello@acme.com>",
      "subject": "Welcome to Acme, {{ first_name }}",
      "reply_to": ["support@acme.com"],
      "editor": "html",
      "published_at": "2026-09-30T10:30:00.482119Z",
      "preview_url": null,
      "total_versions": 3,
      "created_at": "2026-09-28T08:12:45.103882Z",
      "updated_at": "2026-09-30T10:30:00.482119Z"
    }
  ],
  "total_records": 1,
  "per_page": 25,
  "current_page": 1,
  "total_pages": 1
}
```

**401**

```json
{
  "statusCode": 401,
  "error": "Unauthorized",
  "message": "Invalid API key"
}
```

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

## Vorlage veröffentlichen — POST /templates/{id}/publish

> Veröffentlichen Sie eine Vorlagenversion, damit Sendungen mit ihrem Alias sie verwenden. Die Veröffentlichung aller anderen Versionen des Alias wird gleichzeitig zurückgezogen.

# Vorlage veröffentlichen

Veröffentlicht eine Vorlagenversion und zieht in derselben Transaktion die Veröffentlichung aller anderen Versionen mit demselben Alias zurück. So bringen Sie einen neuen Entwurf live oder kehren zu einer früheren Version zurück. Erfordert einen API-Schlüssel mit dem Scope `full`.

`POST /templates/:id/publish`

## Pfadparameter

- `id` (string, erforderlich): ID der zu veröffentlichenden Version, zum Beispiel `tem_2xKyB4qLm7RtV9sNd3HwEa6uC1f`.

## Anfrage-Body

Kein Body. Wenn Sie eine bereits veröffentlichte Version erneut veröffentlichen, wird `published_at` neu gesetzt.

## Rückgabe

Gibt `200 OK` mit der veröffentlichten Vorlage in `data` und einer Bestätigung in `message` zurück. Gibt `404` zurück, wenn die Vorlage nicht existiert.

Emailit sendet das Webhook-Event [`template.updated`](/de/docs/webhooks/events/template/updated/) für die veröffentlichte Version und je eines für jede Version, deren Veröffentlichung zurückgezogen wurde.

**Anfrage** `POST /templates/{id}/publish`

**Node.js**

```javascript
import { Emailit } from '@emailit/node';
const emailit = new Emailit('your_api_key');

const template = await emailit.templates.publish('tem_2xKyB4qLm7RtV9sNd3HwEa6uC1f');
```

**Python**

```python
from emailit import EmailitClient
client = EmailitClient("your_api_key")

template = client.templates.publish("tem_2xKyB4qLm7RtV9sNd3HwEa6uC1f")
```

**PHP**

```php
$emailit = Emailit::client('your_api_key');

$template = $emailit->templates()->publish('tem_2xKyB4qLm7RtV9sNd3HwEa6uC1f');
```

**Ruby**

```ruby
require "emailit"
client = Emailit::EmailitClient.new("your_api_key")

template = client.templates.publish("tem_2xKyB4qLm7RtV9sNd3HwEa6uC1f")
```

**Go**

```go
import "github.com/emailit/emailit-go/v2"
client := emailit.NewClient("your_api_key")

template, err := client.Templates.Publish("tem_2xKyB4qLm7RtV9sNd3HwEa6uC1f")
```

**Rust**

```rust
use emailit::Emailit;
let emailit = Emailit::new("your_api_key");

let template = emailit.templates.publish("tem_2xKyB4qLm7RtV9sNd3HwEa6uC1f").await?;
```

**Java**

```java
import com.emailit.*;
import com.emailit.params.*;
EmailitClient emailit = new EmailitClient("your_api_key");

EmailitObject template = emailit.templates().publish("tem_2xKyB4qLm7RtV9sNd3HwEa6uC1f");
```

**.NET**

```csharp
using Emailit;
var emailit = new EmailitClient("your_api_key");

var template = emailit.Templates.Publish("tem_2xKyB4qLm7RtV9sNd3HwEa6uC1f");
```

**Laravel**

```php
use Emailit\Laravel\Facades\Emailit;

$template = Emailit::templates()->publish('tem_2xKyB4qLm7RtV9sNd3HwEa6uC1f');
```

**cURL**

```bash
curl -X POST https://api.emailit.com/v2/templates/tem_2xKyB4qLm7RtV9sNd3HwEa6uC1f/publish \
  -H "Authorization: Bearer your_api_key"
```

**200**

```json
{
  "data": {
    "id": "tem_2xKyB4qLm7RtV9sNd3HwEa6uC1f",
    "name": "Welcome email (October)",
    "alias": "welcome-email",
    "from": "Acme <hello@acme.com>",
    "subject": "Welcome to Acme, {{ first_name }}",
    "reply_to": ["support@acme.com"],
    "html": "<h1>Welcome, {{ first_name }}</h1><p>Here is your October guide.</p>",
    "text": "Welcome, {{ first_name }}. Here is your October guide.",
    "source": null,
    "editor": "html",
    "published_at": "2026-10-01T09:20:04.118502Z",
    "preview_url": null,
    "created_at": "2026-09-30T14:02:11.550731Z",
    "updated_at": "2026-10-01T09:20:04.118000Z"
  },
  "message": "Template was successfully published."
}
```

**404**

```json
{
  "message": "Template not found"
}
```

---
Quelle: https://emailit.com/de/docs/api-reference/templates/publish/

## Vorlage löschen — DELETE /templates/{id}

> Löschen Sie eine Vorlagenversion endgültig. Wenn Sie die veröffentlichte Version löschen, hat ihr Alias keine veröffentlichte Vorlage mehr.

# Vorlage löschen

Löscht eine Vorlagenversion endgültig. Andere Versionen desselben Alias bleiben erhalten. Erfordert einen API-Schlüssel mit dem Scope `full`.

`DELETE /templates/:id`

## Pfadparameter

- `id` (string, erforderlich): ID der Vorlage, zum Beispiel `tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a`.

## Rückgabe

Gibt `200 OK` mit `data: null` und einer Bestätigung in `message` zurück. Emailit sendet das Webhook-Event [`template.deleted`](/de/docs/webhooks/events/template/deleted/) mit der gelöschten Version. Gibt `404` zurück, wenn die Vorlage nicht existiert.

Wenn Sie die veröffentlichte Version löschen, ist für diesen Alias keine Version veröffentlicht, bis Sie [eine andere veröffentlichen](/de/docs/api-reference/templates/publish/), und das Senden mit diesem Alias schlägt fehl. Das Löschen eines Entwurfs wirkt sich nicht auf die veröffentlichte Version aus. Das Löschen lässt sich nicht rückgängig machen.

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

**Node.js**

```javascript
import { Emailit } from '@emailit/node';
const emailit = new Emailit('your_api_key');

await emailit.templates.delete('tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a');
```

**Python**

```python
from emailit import EmailitClient
client = EmailitClient("your_api_key")

client.templates.delete("tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a")
```

**PHP**

```php
$emailit = Emailit::client('your_api_key');

$emailit->templates()->delete('tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a');
```

**Ruby**

```ruby
require "emailit"
client = Emailit::EmailitClient.new("your_api_key")

client.templates.delete("tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a")
```

**Go**

```go
import "github.com/emailit/emailit-go/v2"
client := emailit.NewClient("your_api_key")

err := client.Templates.Delete("tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a")
```

**Rust**

```rust
use emailit::Emailit;
let emailit = Emailit::new("your_api_key");

emailit.templates.delete("tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a").await?;
```

**Java**

```java
import com.emailit.*;
import com.emailit.params.*;
EmailitClient emailit = new EmailitClient("your_api_key");

emailit.templates().delete("tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a");
```

**.NET**

```csharp
using Emailit;
var emailit = new EmailitClient("your_api_key");

emailit.Templates.Delete("tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a");
```

**Laravel**

```php
use Emailit\Laravel\Facades\Emailit;

Emailit::templates()->delete('tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a');
```

**cURL**

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

**200**

```json
{
  "data": null,
  "message": "Template was successfully deleted."
}
```

**404**

```json
{
  "message": "Template not found"
}
```

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