# Modèles API

> Créez des versions de modèle, publiez-en une par alias et utilisez-les lors de l’envoi.

URL de base : `https://api.emailit.com/v2`. Authentifiez-vous avec `Authorization: Bearer <API key>`.

## Créer un modèle — POST /templates

> Créez une version de modèle sous un alias. Un nouvel alias est publié immédiatement ; une version pour un alias existant commence comme brouillon non publié.

# Créer un modèle

Crée une version de modèle. Les versions qui partagent un `alias` appartiennent au même modèle, et une seule version par alias est publiée à la fois. Lorsque vous [envoyez un e-mail](/fr/docs/api-reference/emails/send/) avec `template` défini sur un alias, Emailit utilise la version publiée. Nécessite une clé API de portée `full`.

`POST /templates`

## Corps de la requête

- `name` (string, obligatoire): Nom du modèle affiché dans le tableau de bord. 191 caractères au maximum.

- `alias` (string, obligatoire): Identifiant qui regroupe les versions d’un modèle. 191 caractères au maximum ; lettres minuscules, chiffres, traits de soulignement et traits d’union uniquement (`^[a-z0-9_-]+$`). Si aucun modèle n’utilise encore cet alias, la nouvelle version est publiée immédiatement. Si l’alias existe déjà, la nouvelle version est créée non publiée (`published_at` vaut `null`) et vous la publiez avec [Publier un modèle](/fr/docs/api-reference/templates/publish/).

- `from` (string): Expéditeur par défaut, par exemple `Acme <hello@acme.com>`. 191 caractères au maximum.

- `subject` (string): Ligne d’objet par défaut. 191 caractères au maximum. Peut contenir des variables [Temple](/fr/docs/templates/temple/) comme `{{ first_name }}`.

- `reply_to` (string | string[]): Adresse de réponse, ou tableau d’adresses. Chaque valeur doit être une adresse e-mail valide.

- `html` (string): Corps HTML.

- `text` (string): Corps en texte brut.

- `source` (string): Document source de l’éditeur, par exemple le JSON Dragit d’un modèle créé dans l’éditeur glisser-déposer. Enregistré tel quel. Pour `editor: "mjml"`, le MJML : Emailit le valide, l’enregistre sous forme de [document MJML](/fr/docs/templates/mjml/#the-stored-document) et en compile `html`.

- `editor` (string): Éditeur auquel appartient le modèle : `html` (par défaut), `text`, `dragit` ou `tiptap`. `mjml` est en alpha et réservé à l’équipe Emailit ; les autres requêtes reçoivent `403` avec `error: "mjml_alpha"`. Consultez [Éditeurs et API MJML](/fr/docs/templates/mjml/).

## Réponse

Renvoie `201 Created` avec le modèle dans `data` et un `message` de confirmation. Le modèle inclut `html`, `text` et `source`. Emailit envoie aussi l’événement webhook [`template.created`](/fr/docs/webhooks/events/template/created/).

Les modèles MJML renvoient aussi un objet `mjml` avec les versions du document. Un MJML invalide renvoie `422` avec `errors.source` et `diagnostics` ; consultez [Validation](/fr/docs/templates/mjml/#validation).

Si un champ ne passe pas la validation, la réponse est `400` avec `message: "Validation failed"` et un objet `errors` indexé par champ, par exemple pour un alias contenant des majuscules ou une adresse `reply_to` non valide. Un `name` ou un `alias` manquant, ou une valeur `editor` non autorisée, renvoie à la place l’erreur de validation `400` standard avec un tableau `details`. Consultez [Erreurs](/fr/docs/api-reference/errors/).

**Requête** `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 (-)"]
  }
}
```

---
Source: https://emailit.com/fr/docs/api-reference/templates/create/

## Récupérer un modèle — GET /templates/{id}

> Récupérez une version de modèle par son ID avec son contenu complet, ainsi qu’un résumé de toutes les autres versions qui partagent son alias.

# Récupérer un modèle

Renvoie une version de modèle, avec son contenu, et liste les autres versions du même alias dans `versions`. Les modèles se recherchent uniquement par ID, pas par alias. Nécessite une clé API de portée `full`.

`GET /templates/:id`

## Paramètres de chemin

- `id` (string, obligatoire): ID du modèle, par exemple `tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a`.

## Réponse

Renvoie `200 OK` avec le modèle dans `data`. En plus des champs du modèle, la réponse contient un tableau `versions` avec l’`id`, le `name`, le `published_at`, le `created_at` et l’`updated_at` de chacune des autres versions qui partagent l’alias, de la plus récente à la plus ancienne. La version publiée est celle dont `published_at` n’est pas nul.

Renvoie `404` avec `message: "Template not found"` si l’ID n’existe pas dans votre espace de travail.

**Requête** `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"
}
```

---
Source: https://emailit.com/fr/docs/api-reference/templates/get/

## Mettre à jour un modèle — POST /templates/{id}

> Mettez à jour le nom, l’alias, l’expéditeur, l’objet ou le contenu d’une version de modèle. La mise à jour ne la publie ni ne la dépublie jamais.

# Mettre à jour un modèle

Met à jour une version de modèle. N’envoyez que les champs à modifier. La version conserve son état de publication : une version publiée reste publiée et un brouillon reste un brouillon. Nécessite une clé API de portée `full`.

`POST /templates/:id`

## Paramètres de chemin

- `id` (string, obligatoire): ID du modèle, par exemple `tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a`.

## Corps de la requête

- `name` (string): Nom du modèle. 191 caractères au maximum.

- `alias` (string): Nouvel alias. 191 caractères au maximum ; lettres minuscules, chiffres, traits de soulignement et traits d’union uniquement. Il ne peut pas s’agir d’un alias déjà utilisé par un autre modèle.

- `from` (string): Expéditeur par défaut, par exemple `Acme <hello@acme.com>`. 191 caractères au maximum. Envoyez une chaîne vide pour l’effacer.

- `subject` (string): Ligne d’objet par défaut. 191 caractères au maximum. Envoyez une chaîne vide pour l’effacer.

- `reply_to` (string | string[]): Adresse de réponse ou tableau d’adresses. Envoyez une chaîne vide pour l’effacer.

- `html` (string): Corps HTML.

- `text` (string): Corps en texte brut.

- `source` (string): Document source de l’éditeur, par exemple du JSON Dragit. Pour un modèle MJML, le MJML complet : Emailit le valide et recompile `html`, et tout `html` que vous envoyez est ignoré.

- `editor` (string): `html`, `text`, `dragit` ou `tiptap`. `mjml` est en alpha et réservé à l’équipe Emailit ; modifier le contenu d’un modèle MJML sans accès à MJML renvoie `403` avec `error: "mjml_alpha"`. Le renommer ou le publier fonctionne pour tout le monde. Consultez [Éditeurs et API MJML](/fr/docs/templates/mjml/).

## Réponse

Renvoie `200 OK` avec le modèle mis à jour dans `data` et un `message` de confirmation. Emailit envoie aussi l’événement webhook [`template.updated`](/fr/docs/webhooks/events/template/updated/).

Renvoie `400` avec `message: "Validation failed"` et un objet `errors` lorsqu’une valeur n’est pas valide, par exemple `"Alias already exists"`. Les valeurs de plus de 191 caractères ou un `editor` inconnu renvoient l’erreur de validation `400` standard. Renvoie `404` si le modèle n’existe pas.

Pour que cette version soit celle utilisée pour les envois, appelez [Publier un modèle](/fr/docs/api-reference/templates/publish/).

**Requête** `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"
}
```

---
Source: https://emailit.com/fr/docs/api-reference/templates/update/

## Lister les modèles — GET /templates

> Listez la version publiée de chaque modèle de votre espace de travail, avec filtres, tri et pagination par pages.

# Lister les modèles

Renvoie la version publiée de chaque modèle, du plus récent au plus ancien. Les versions non publiées ne sont pas listées ; [récupérez un modèle](/fr/docs/api-reference/templates/get/) pour voir toutes les versions de son alias. Nécessite une clé API de portée `full`.

`GET /templates`

## Paramètres de requête

- `page` (integer): Numéro de page, à partir de `1`. Par défaut : `1`.

- `per_page` (integer): Nombre de modèles par page, de `1` à `100`. Par défaut : `25`.

- `include_content` (boolean): Définissez-le sur `true` pour inclure `html`, `text` et `source` dans chaque modèle. Omis par défaut pour alléger les réponses.

- `filter[name]` (string): Correspondance partielle, insensible à la casse, sur le nom ou l’alias du modèle.

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

- `filter[editor]` (string): Éditeur : `html`, `text`, `dragit`, `tiptap` ou `mjml` ([alpha](/fr/docs/templates/mjml/)).

- `match` (string): `all` (par défaut) exige que tous les filtres `key.condition` correspondent. `or` accepte n’importe lequel d’entre eux. Consultez [Filtrage et tri](/fr/docs/api-reference/filtering/).

- `sort` (string): Clé de tri : `name`, `alias`, `created_at` (par défaut), `updated_at` ou `published_at`.

- `order` (string): Sens du tri : `asc` ou `desc` (par défaut).

## Filtres

Clés de filtre et de tri : voir [Filtrage et tri](https://emailit.com/fr/docs/api-reference/filtering/).

Sur cet endpoint, `order` n’accepte que `asc` ou `desc`. Transmettez la clé de tri dans `sort`, par exemple `sort=name&order=asc`.

## Réponse

Renvoie `200 OK` avec les modèles dans `data` et les champs de pagination `total_records`, `per_page`, `current_page` et `total_pages`. Chaque modèle inclut `total_versions`, le nombre de versions qui partagent son alias.

**Requête** `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"
}
```

---
Source: https://emailit.com/fr/docs/api-reference/templates/list/

## Publier un modèle — POST /templates/{id}/publish

> Publiez une version de modèle pour que les envois qui utilisent son alias s’en servent. Toutes les autres versions de l’alias sont dépubliées en même temps.

# Publier un modèle

Publie une version de modèle et dépublie toutes les autres versions du même alias, en une seule transaction. Utilisez-le pour déployer un nouveau brouillon ou pour revenir à une version antérieure. Nécessite une clé API de portée `full`.

`POST /templates/:id/publish`

## Paramètres de chemin

- `id` (string, obligatoire): ID de la version à publier, par exemple `tem_2xKyB4qLm7RtV9sNd3HwEa6uC1f`.

## Corps de la requête

Aucun corps. Publier une version déjà publiée définit un nouveau `published_at`.

## Réponse

Renvoie `200 OK` avec le modèle publié dans `data` et un `message` de confirmation. Renvoie `404` si le modèle n’existe pas.

Emailit envoie un événement webhook [`template.updated`](/fr/docs/webhooks/events/template/updated/) pour la version publiée, et un autre pour chaque version dépubliée.

**Requête** `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"
}
```

---
Source: https://emailit.com/fr/docs/api-reference/templates/publish/

## Supprimer un modèle — DELETE /templates/{id}

> Supprimez définitivement une version de modèle. Supprimer la version publiée laisse son alias sans modèle publié.

# Supprimer un modèle

Supprime définitivement une version de modèle. Les autres versions du même alias sont conservées. Nécessite une clé API de portée `full`.

`DELETE /templates/:id`

## Paramètres de chemin

- `id` (string, obligatoire): ID du modèle, par exemple `tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a`.

## Réponse

Renvoie `200 OK` avec `data: null` et un `message` de confirmation. Emailit envoie l’événement webhook [`template.deleted`](/fr/docs/webhooks/events/template/deleted/) avec la version supprimée. Renvoie `404` si le modèle n’existe pas.

Si vous supprimez la version publiée, aucune version de cet alias n’est publiée tant que vous n’en [publiez pas une autre](/fr/docs/api-reference/templates/publish/), et les envois avec cet alias échouent. Supprimer un brouillon n’affecte pas la version publiée. La suppression est irréversible.

**Requête** `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"
}
```

---
Source: https://emailit.com/fr/docs/api-reference/templates/delete/
