# Templates API

> Crie versões de templates, publique uma por alias e use-as ao enviar.

URL base: `https://api.emailit.com/v2`. Autentique-se com `Authorization: Bearer <API key>`.

## Criar um template — POST /templates

> Crie uma versão de template em um alias. Um alias novo é publicado na hora; uma versão de um alias existente começa como rascunho não publicado.

# Criar um template

Cria uma versão de template. As versões que compartilham um `alias` pertencem ao mesmo template, e apenas uma versão por alias fica publicada por vez. Quando você [envia um e-mail](/pt/docs/api-reference/emails/send/) com `template` definido como um alias, o Emailit usa a versão publicada. Requer uma chave de API com escopo `full`.

`POST /templates`

## Corpo da requisição

- `name` (string, obrigatório): Nome do template exibido no painel. Até 191 caracteres.

- `alias` (string, obrigatório): Identificador que agrupa as versões de um template. Até 191 caracteres; apenas letras minúsculas, números, sublinhados e hifens (`^[a-z0-9_-]+$`). Se nenhum template usar este alias ainda, a nova versão é publicada imediatamente. Se o alias já existir, a nova versão é criada sem publicação (`published_at` é `null`), e você a publica com [Publicar um template](/pt/docs/api-reference/templates/publish/).

- `from` (string): Remetente padrão, por exemplo `Acme <hello@acme.com>`. Até 191 caracteres.

- `subject` (string): Linha de assunto padrão. Até 191 caracteres. Pode conter variáveis do [Temple](/pt/docs/templates/temple/), como `{{ first_name }}`.

- `reply_to` (string | string[]): Endereço de resposta (Reply-To) ou um array de endereços. Cada valor deve ser um endereço de e-mail válido.

- `html` (string): Corpo HTML.

- `text` (string): Corpo em texto simples.

- `source` (string): Documento-fonte do editor, por exemplo o JSON do Dragit de um template criado no editor de arrastar e soltar. Armazenado como está. Com `editor: "mjml"`, contém o MJML: o Emailit o valida, o armazena como um [documento MJML](/pt/docs/templates/mjml/#the-stored-document) e compila o `html` a partir dele.

- `editor` (string): Editor ao qual o template pertence: `html` (padrão), `text`, `dragit` ou `tiptap`. `mjml` está em alfa e aberto apenas à equipe do Emailit; as outras requisições recebem `403` com `error: "mjml_alpha"`. Consulte [Editores e API de MJML](/pt/docs/templates/mjml/).

## Retorno

Retorna `201 Created` com o template em `data` e uma `message` de confirmação. O template inclui `html`, `text` e `source`. O Emailit também envia um evento de webhook [`template.created`](/pt/docs/webhooks/events/template/created/).

Os templates MJML também retornam um objeto `mjml` com as versões do documento. Um MJML inválido retorna `422` com `errors.source` e `diagnostics`; consulte [Validação](/pt/docs/templates/mjml/#validation).

Se um campo falhar na validação, a resposta é `400` com `message: "Validation failed"` e um objeto `errors` com as chaves por campo, por exemplo um alias com letras maiúsculas ou um endereço `reply_to` inválido. A ausência de `name` ou `alias`, ou um valor de `editor` não permitido, retorna em vez disso o erro de validação `400` padrão, com um array `details`. Consulte [Erros](/pt/docs/api-reference/errors/).

**Requisição** `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 (-)"]
  }
}
```

---
Fonte: https://emailit.com/pt/docs/api-reference/templates/create/

## Obter um template — GET /templates/{id}

> Obtenha uma versão de template pelo ID com todo o conteúdo dela, além de um resumo de cada uma das outras versões que compartilham o alias.

# Obter um template

Retorna uma versão de template, incluindo o conteúdo dela, e lista as outras versões do mesmo alias em `versions`. Os templates são buscados apenas pelo ID, não pelo alias. Requer uma chave de API com escopo `full`.

`GET /templates/:id`

## Parâmetros de caminho

- `id` (string, obrigatório): ID do template, por exemplo `tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a`.

## Retorno

Retorna `200 OK` com o template em `data`. Além dos campos do template, a resposta tem um array `versions` com `id`, `name`, `published_at`, `created_at` e `updated_at` de cada uma das outras versões que compartilham o alias, das mais recentes para as mais antigas. A versão publicada é a que tem `published_at` não nulo.

Retorna `404` com `message: "Template not found"` se o ID não existir no seu workspace.

**Requisição** `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"
}
```

---
Fonte: https://emailit.com/pt/docs/api-reference/templates/get/

## Atualizar um template — POST /templates/{id}

> Atualize o nome, o alias, o remetente, o assunto ou o conteúdo de uma versão de template. A atualização nunca publica nem despublica a versão.

# Atualizar um template

Atualiza uma versão de template. Envie apenas os campos que você quer alterar. A versão mantém o estado de publicação: uma versão publicada continua publicada e um rascunho continua rascunho. Requer uma chave de API com escopo `full`.

`POST /templates/:id`

## Parâmetros de caminho

- `id` (string, obrigatório): ID do template, por exemplo `tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a`.

## Corpo da requisição

- `name` (string): Nome do template. Até 191 caracteres.

- `alias` (string): Novo alias. Até 191 caracteres; apenas letras minúsculas, números, sublinhados e hifens. Não pode ser um alias que outro template já usa.

- `from` (string): Remetente padrão, por exemplo `Acme <hello@acme.com>`. Até 191 caracteres. Envie uma string vazia para limpá-lo.

- `subject` (string): Linha de assunto padrão. Até 191 caracteres. Envie uma string vazia para limpá-la.

- `reply_to` (string | string[]): Endereço de resposta (Reply-To) ou array de endereços. Envie uma string vazia para limpá-lo.

- `html` (string): Corpo HTML.

- `text` (string): Corpo em texto simples.

- `source` (string): Documento-fonte do editor, por exemplo o JSON do Dragit. Em um template MJML, contém o MJML completo: o Emailit o valida e recompila o `html`, e qualquer `html` que você enviar é ignorado.

- `editor` (string): `html`, `text`, `dragit` ou `tiptap`. `mjml` está em alfa e aberto apenas à equipe do Emailit; alterar o conteúdo de um template MJML sem acesso ao MJML retorna `403` com `error: "mjml_alpha"`. Renomear ou publicar o template funciona para todos. Consulte [Editores e API de MJML](/pt/docs/templates/mjml/).

## Retorno

Retorna `200 OK` com o template atualizado em `data` e uma `message` de confirmação. O Emailit também envia um evento de webhook [`template.updated`](/pt/docs/webhooks/events/template/updated/).

Retorna `400` com `message: "Validation failed"` e um objeto `errors` quando um valor é inválido, por exemplo `"Alias already exists"`. Valores com mais de 191 caracteres ou um `editor` desconhecido retornam o erro de validação `400` padrão. Retorna `404` se o template não existir.

Para que esta versão seja a usada nos envios, chame [Publicar um template](/pt/docs/api-reference/templates/publish/).

**Requisição** `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"
}
```

---
Fonte: https://emailit.com/pt/docs/api-reference/templates/update/

## Listar templates — GET /templates

> Liste a versão publicada de cada template do seu workspace, com filtros, ordenação e paginação por páginas.

# Listar templates

Retorna a versão publicada de cada template, dos mais recentes para os mais antigos. As versões não publicadas não são listadas; [obtenha um template](/pt/docs/api-reference/templates/get/) para ver todas as versões do alias dele. Requer uma chave de API com escopo `full`.

`GET /templates`

## Parâmetros de consulta

- `page` (integer): Número da página, a partir de `1`. Padrão: `1`.

- `per_page` (integer): Templates por página, de `1` a `100`. Padrão: `25`.

- `include_content` (boolean): Defina como `true` para incluir `html`, `text` e `source` em cada template. Omitidos por padrão para manter as respostas pequenas.

- `filter[name]` (string): Correspondência parcial, sem diferenciar maiúsculas de minúsculas, no nome ou no alias do template.

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

- `filter[editor]` (string): Editor: `html`, `text`, `dragit`, `tiptap` ou `mjml` ([alfa](/pt/docs/templates/mjml/)).

- `match` (string): `all` (padrão) exige que todos os filtros `key.condition` correspondam. `or` aceita qualquer um deles. Consulte [Filtragem](/pt/docs/api-reference/filtering/).

- `sort` (string): Chave de ordenação: `name`, `alias`, `created_at` (padrão), `updated_at` ou `published_at`.

- `order` (string): Direção da ordenação: `asc` ou `desc` (padrão).

## Filtros

Chaves de filtro e de ordenação: consulte [Filtragem](https://emailit.com/pt/docs/api-reference/filtering/).

Neste endpoint, `order` só aceita `asc` ou `desc`. Passe a chave de ordenação em `sort`, por exemplo `sort=name&order=asc`.

## Retorno

Retorna `200 OK` com os templates em `data` e os campos de paginação `total_records`, `per_page`, `current_page` e `total_pages`. Cada template inclui `total_versions`, o número de versões que compartilham o alias dele.

**Requisição** `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"
}
```

---
Fonte: https://emailit.com/pt/docs/api-reference/templates/list/

## Publicar um template — POST /templates/{id}/publish

> Publique uma versão de template para que os envios que usam o alias dela passem a usá-la. Todas as outras versões do alias são despublicadas ao mesmo tempo.

# Publicar um template

Publica uma versão de template e despublica todas as outras versões com o mesmo alias, em uma única transação. Use-o para colocar um novo rascunho no ar ou para voltar a uma versão anterior. Requer uma chave de API com escopo `full`.

`POST /templates/:id/publish`

## Parâmetros de caminho

- `id` (string, obrigatório): ID da versão a publicar, por exemplo `tem_2xKyB4qLm7RtV9sNd3HwEa6uC1f`.

## Corpo da requisição

Sem corpo. Publicar uma versão já publicada define um novo `published_at`.

## Retorno

Retorna `200 OK` com o template publicado em `data` e uma `message` de confirmação. Retorna `404` se o template não existir.

O Emailit envia um evento de webhook [`template.updated`](/pt/docs/webhooks/events/template/updated/) para a versão que você publicou e um para cada versão que foi despublicada.

**Requisição** `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"
}
```

---
Fonte: https://emailit.com/pt/docs/api-reference/templates/publish/

## Excluir um template — DELETE /templates/{id}

> Exclua permanentemente uma versão de template. Excluir a versão publicada deixa o alias dela sem template publicado.

# Excluir um template

Exclui permanentemente uma versão de template. As outras versões do mesmo alias são mantidas. Requer uma chave de API com escopo `full`.

`DELETE /templates/:id`

## Parâmetros de caminho

- `id` (string, obrigatório): ID do template, por exemplo `tem_2xKx7M2c9wQe3kHhJ8sVtY1pZ0a`.

## Retorno

Retorna `200 OK` com `data: null` e uma `message` de confirmação. O Emailit envia um evento de webhook [`template.deleted`](/pt/docs/webhooks/events/template/deleted/) com a versão excluída. Retorna `404` se o template não existir.

Se você excluir a versão publicada, nenhuma versão desse alias fica publicada até que você [publique outra](/pt/docs/api-reference/templates/publish/), e os envios com esse alias falham. Excluir um rascunho não afeta a versão publicada. A exclusão não pode ser desfeita.

**Requisição** `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"
}
```

---
Fonte: https://emailit.com/pt/docs/api-reference/templates/delete/
