# Plantillas API

> Crea versiones de plantillas, publica una por alias y úsalas al enviar.

URL base: `https://api.emailit.com/v2`. Autentícate con `Authorization: Bearer <API key>`.

## Crear una plantilla — POST /templates

> Crea una versión de plantilla con un alias. Un alias nuevo se publica de inmediato; una versión de un alias existente empieza como borrador sin publicar.

# Crear una plantilla

Crea una versión de plantilla. Las versiones que comparten `alias` pertenecen a la misma plantilla, y cada alias solo tiene una versión publicada a la vez. Cuando [envías un email](/es/docs/api-reference/emails/send/) con `template` igual a un alias, Emailit usa la versión publicada. Requiere una clave de API con el permiso `full`.

`POST /templates`

## Cuerpo de la petición

- `name` (string, obligatorio): El nombre de la plantilla que se muestra en el panel. Hasta 191 caracteres.

- `alias` (string, obligatorio): El identificador que agrupa las versiones de una plantilla. Hasta 191 caracteres; solo letras minúsculas, números, guiones bajos y guiones (`^[a-z0-9_-]+$`). Si ninguna plantilla usa todavía este alias, la nueva versión se publica de inmediato. Si el alias ya existe, la nueva versión se crea sin publicar (`published_at` es `null`) y la publicas con [Publicar una plantilla](/es/docs/api-reference/templates/publish/).

- `from` (string): El remitente por defecto, por ejemplo `Acme <hello@acme.com>`. Hasta 191 caracteres.

- `subject` (string): El asunto por defecto. Hasta 191 caracteres. Puede contener variables de [Temple](/es/docs/templates/temple/) como `{{ first_name }}`.

- `reply_to` (string | string[]): La dirección de respuesta, o un array de direcciones. Todos los valores deben ser direcciones de email válidas.

- `html` (string): El cuerpo HTML.

- `text` (string): El cuerpo en texto plano.

- `source` (string): El documento de origen del editor, por ejemplo el JSON de Dragit de una plantilla creada en el editor de arrastrar y soltar. Se guarda tal cual. Con `editor: "mjml"`, es el MJML: Emailit lo valida, lo guarda como un [documento MJML](/es/docs/templates/mjml/#the-stored-document) y compila `html` a partir de él.

- `editor` (string): El editor al que pertenece la plantilla: `html` (por defecto), `text`, `dragit` o `tiptap`. `mjml` está en alfa y solo está abierto al equipo de Emailit; las demás peticiones reciben `403` con `error: "mjml_alpha"`. Consulta [Editores y API de MJML](/es/docs/templates/mjml/).

## Devuelve

Devuelve `201 Created` con la plantilla en `data` y un `message` de confirmación. La plantilla incluye `html`, `text` y `source`. Emailit también envía un evento de webhook [`template.created`](/es/docs/webhooks/events/template/created/).

Las plantillas MJML también devuelven un objeto `mjml` con las versiones del documento. Un MJML no válido devuelve `422` con `errors.source` y `diagnostics`; consulta [Validación](/es/docs/templates/mjml/#validation).

Si un campo no supera la validación, la respuesta es `400` con `message: "Validation failed"` y un objeto `errors` con una clave por campo; por ejemplo, si el alias tiene mayúsculas o la dirección de `reply_to` no es válida. Si falta `name` o `alias`, o si `editor` tiene un valor no permitido, se devuelve en su lugar el error de validación `400` estándar con un array `details`. Consulta [Errores](/es/docs/api-reference/errors/).

**Petición** `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 (-)"]
  }
}
```

---
Fuente: https://emailit.com/es/docs/api-reference/templates/create/

## Obtener una plantilla — GET /templates/{id}

> Obtén una versión de plantilla por su ID con todo su contenido, además de un resumen de las demás versiones que comparten su alias.

# Obtener una plantilla

Devuelve una versión de plantilla, con su contenido, y enumera en `versions` las demás versiones del mismo alias. Las plantillas solo se buscan por ID, no por alias. Requiere una clave de API con el permiso `full`.

`GET /templates/:id`

## Parámetros de ruta

- `id` (string, obligatorio): El ID de la plantilla, por ejemplo `tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a`.

## Devuelve

Devuelve `200 OK` con la plantilla en `data`. Además de los campos de la plantilla, la respuesta incluye un array `versions` con el `id`, el `name`, `published_at`, `created_at` y `updated_at` de cada una de las demás versiones que comparten el alias, de la más reciente a la más antigua. La versión publicada es la que tiene un `published_at` no nulo.

Devuelve `404` con `message: "Template not found"` si el ID no existe en tu espacio de trabajo.

**Petición** `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"
}
```

---
Fuente: https://emailit.com/es/docs/api-reference/templates/get/

## Actualizar una plantilla — POST /templates/{id}

> Actualiza el nombre, el alias, el remitente, el asunto o el contenido de una versión de plantilla. Actualizarla nunca la publica ni la despublica.

# Actualizar una plantilla

Actualiza una versión de plantilla. Envía solo los campos que quieras cambiar. La versión conserva su estado de publicación: una versión publicada sigue publicada y un borrador sigue siendo un borrador. Requiere una clave de API con el permiso `full`.

`POST /templates/:id`

## Parámetros de ruta

- `id` (string, obligatorio): El ID de la plantilla, por ejemplo `tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a`.

## Cuerpo de la petición

- `name` (string): El nombre de la plantilla. Hasta 191 caracteres.

- `alias` (string): El nuevo alias. Hasta 191 caracteres; solo letras minúsculas, números, guiones bajos y guiones. No puede ser un alias que ya use otra plantilla.

- `from` (string): El remitente por defecto, por ejemplo `Acme <hello@acme.com>`. Hasta 191 caracteres. Envía una cadena vacía para borrarlo.

- `subject` (string): El asunto por defecto. Hasta 191 caracteres. Envía una cadena vacía para borrarlo.

- `reply_to` (string | string[]): La dirección de respuesta o un array de direcciones. Envía una cadena vacía para borrarla.

- `html` (string): El cuerpo HTML.

- `text` (string): El cuerpo en texto plano.

- `source` (string): El documento de origen del editor, por ejemplo el JSON de Dragit. En una plantilla MJML, es el MJML completo: Emailit lo valida y vuelve a compilar `html`, y se ignora cualquier `html` que envíes.

- `editor` (string): `html`, `text`, `dragit` o `tiptap`. `mjml` está en alfa y solo está abierto al equipo de Emailit; cambiar el contenido de una plantilla MJML sin acceso a MJML devuelve `403` con `error: "mjml_alpha"`. Cambiarle el nombre o publicarla funciona para todos. Consulta [Editores y API de MJML](/es/docs/templates/mjml/).

## Devuelve

Devuelve `200 OK` con la plantilla actualizada en `data` y un `message` de confirmación. Emailit también envía un evento de webhook [`template.updated`](/es/docs/webhooks/events/template/updated/).

Devuelve `400` con `message: "Validation failed"` y un objeto `errors` si un valor no es válido, por ejemplo `"Alias already exists"`. Los valores de más de 191 caracteres o un `editor` desconocido devuelven el error de validación `400` estándar. Devuelve `404` si la plantilla no existe.

To make this version the one used for sending, call [Publish a template](/es/docs/api-reference/templates/publish/).

**Petición** `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"
}
```

---
Fuente: https://emailit.com/es/docs/api-reference/templates/update/

## Listar plantillas — GET /templates

> Obtén la versión publicada de cada plantilla de tu espacio de trabajo, con filtros, ordenación y paginación por páginas.

# Listar plantillas

Devuelve la versión publicada de cada plantilla, de la más reciente a la más antigua. Las versiones sin publicar no aparecen en el listado; para ver todas las versiones de un alias, [obtén la plantilla](/es/docs/api-reference/templates/get/). Requiere una clave de API con el permiso `full`.

`GET /templates`

## Parámetros de consulta

- `page` (integer): El número de página, empezando por `1`. Por defecto, `1`.

- `per_page` (integer): Plantillas por página, de `1` a `100`. Por defecto, `25`.

- `include_content` (boolean): Ponlo en `true` para incluir `html`, `text` y `source` en cada plantilla. Por defecto se omiten para que las respuestas sean pequeñas.

- `filter[name]` (string): Coincidencia parcial en el nombre o el alias de la plantilla, sin distinguir mayúsculas y minúsculas.

- `filter[alias]` (string): El alias exacto.

- `filter[editor]` (string): El editor: `html`, `text`, `dragit`, `tiptap` o `mjml` ([alfa](/es/docs/templates/mjml/)).

- `match` (string): `all` (por defecto) exige que coincidan todos los filtros `key.condition`. `or` exige que coincida cualquiera de ellos. Consulta [Filtrado](/es/docs/api-reference/filtering/).

- `sort` (string): La clave de ordenación: `name`, `alias`, `created_at` (por defecto), `updated_at` o `published_at`.

- `order` (string): La dirección de la ordenación: `asc` o `desc` (por defecto).

## Filtros

Claves de filtro y de ordenación: consulta [Filtrado](https://emailit.com/es/docs/api-reference/filtering/).

En este endpoint, `order` solo acepta `asc` o `desc`. Pasa la clave de ordenación en `sort`, por ejemplo `sort=name&order=asc`.

## Devuelve

Devuelve `200 OK` con las plantillas en `data` y los campos de paginación `total_records`, `per_page`, `current_page` y `total_pages`. Cada plantilla incluye `total_versions`, el número de versiones que comparten su alias.

**Petición** `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"
}
```

---
Fuente: https://emailit.com/es/docs/api-reference/templates/list/

## Publicar una plantilla — POST /templates/{id}/publish

> Publica una versión de plantilla para que los envíos que usan su alias la utilicen. Todas las demás versiones del alias se despublican a la vez.

# Publicar una plantilla

Publica una versión de plantilla y despublica todas las demás versiones con el mismo alias, en una sola transacción. Úsalo para poner en producción un borrador nuevo o para volver a una versión anterior. Requiere una clave de API con el permiso `full`.

`POST /templates/:id/publish`

## Parámetros de ruta

- `id` (string, obligatorio): El ID de la versión que se publica, por ejemplo `tem_2xKyB4qLm7RtV9sNd3HwEa6uC1f`.

## Cuerpo de la petición

Sin cuerpo. Publicar una versión que ya está publicada establece un nuevo `published_at`.

## Devuelve

Devuelve `200 OK` con la plantilla publicada en `data` y un `message` de confirmación. Devuelve `404` si la plantilla no existe.

Emailit envía un evento de webhook [`template.updated`](/es/docs/webhooks/events/template/updated/) por la versión que has publicado y otro por cada versión que se ha despublicado.

**Petición** `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"
}
```

---
Fuente: https://emailit.com/es/docs/api-reference/templates/publish/

## Eliminar una plantilla — DELETE /templates/{id}

> Elimina de forma permanente una versión de plantilla. Si eliminas la versión publicada, su alias se queda sin plantilla publicada.

# Eliminar una plantilla

Elimina de forma permanente una versión de plantilla. Las demás versiones del mismo alias se conservan. Requiere una clave de API con el permiso `full`.

`DELETE /templates/:id`

## Parámetros de ruta

- `id` (string, obligatorio): El ID de la plantilla, por ejemplo `tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a`.

## Devuelve

Devuelve `200 OK` con `data: null` y un `message` de confirmación. Emailit envía un evento de webhook [`template.deleted`](/es/docs/webhooks/events/template/deleted/) con la versión eliminada. Devuelve `404` si la plantilla no existe.

Si eliminas la versión publicada, ninguna versión de ese alias queda publicada hasta que [publiques otra](/es/docs/api-reference/templates/publish/), y los envíos con ese alias fallan. Eliminar un borrador no afecta a la versión publicada. La eliminación no se puede deshacer.

**Petición** `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"
}
```

---
Fuente: https://emailit.com/es/docs/api-reference/templates/delete/
