> ## Documentation Index
> Fetch the complete documentation index at: https://docs.notifique.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Inicio rápido

> Primer envío de email: verificar dominio, enviar, consultar y cancelar mensajes programados.

<Tip>
  De **cero a su primer email en cola** en pocos pasos. Lo imprescindible es un **dominio verificado** en DNS; sin eso, el envío no funcionará.
</Tip>

## En resumen

* **Verifique un dominio** en DNS; demuestra que controla el remitente (`noreply@yourdomain.com`).
* **Envíe** con asunto y cuerpo (texto y/o HTML) a hasta **100** destinatarios por llamada.
* **Consulte, programe o cancele** y obtenga estado vía [webhooks](/es/emails-api/como-funciona/eventos-do-webhooks).

Contexto: [Introducción](/es/emails-api/como-funciona/introducao). Alcances: [Alcances de API Key](/es/emails-api/como-funciona/escopos-da-api-key).

## Antes de empezar

* Clave con **`email:domains:create`**, **`email:domains:list`**, and **`email:send`** (o alcance admin en pruebas)
* El dominio **`from`** debe estar **VERIFIED** antes del envío
* Auth: `Authorization: Bearer sk_live_...` or `x-api-key`
* Base URL: `https://api.notifique.dev`, use `sk_test_...` in [Sandbox](/es/guides/sandbox/index) al empezar

***

## 1. Verificar dominio

Dos caminos, elija lo que encaje con su integración:

#### 1A, Vía panel

1. Settings → Email → **Add domain**
2. Copie los registros **DNS** (TXT/CNAME) en su proveedor de dominio
3. Haga clic en **Verify** hasta que el estado sea **VERIFIED**

#### 1B, Vía API

**Registrar dominio**

```http theme={null}
POST /v1/email/domains
Content-Type: application/json
Authorization: Bearer sk_live_xxxxx
```

```json theme={null}
{
  "domain": "yourdomain.com"
}
```

Respuesta esperada: **200** con estado **PENDING** y registros DNS:

```json theme={null}
{
  "success": true,
  "data": {
    "id": "clxx123...",
    "domain": "yourdomain.com",
    "status": "PENDING",
    "dnsRecords": [
      {
        "type": "TXT",
        "name": "notifique._domainkey.yourdomain.com",
        "value": "p=MIGf..."
      }
    ],
    "createdAt": "2025-02-15T10:00:00.000Z"
  },
  "message": "Add the DNS record(s) above to your domain, then call the verify endpoint or use the Verify button in the dashboard."
}
```

Guarde el **`id`** del dominio para el paso de verificación.

**Verificar** (llame de nuevo tras propagar DNS):

```http theme={null}
POST /v1/email/domains/:id/verify
Authorization: Bearer sk_live_xxxxx
```

DNS aún pendiente, **200**, no es error HTTP:

```json theme={null}
{
  "success": true,
  "verified": false,
  "code": "EMAIL_DOMAIN_DNS_PENDING",
  "message": "DNS records are not verified yet. Check your DNS provider and try again in a few minutes.",
  "data": { "id": "clxx...", "domain": "yourdomain.com", "status": "PENDING" }
}
```

Verificado, **200**:

```json theme={null}
{
  "success": true,
  "verified": true,
  "code": "EMAIL_DOMAIN_VERIFIED",
  "message": "Domain verified successfully.",
  "data": { "id": "clxx...", "domain": "yourdomain.com", "status": "VERIFIED" }
}
```

Códigos y errores HTTP: [Respuestas de error](/es/guides/conceitos/resposta-de-erros#email-verify-domain-post-v1emaildomainsidverify).

***

## 2. Enviar email

Con un dominio **VERIFIED**, envíe a uno o muchos destinatarios. `to` es siempre un **array** (hasta **100**).

```http theme={null}
POST /v1/email/messages
Content-Type: application/json
Authorization: Bearer sk_live_xxxxx
```

```json theme={null}
{
  "from": "noreply@tudominio.com",
  "fromName": "Soporte",
  "to": ["cliente@example.com"],
  "type": "email",
  "payload": {
    "subject": "Confirmación de pedido",
    "html": "<p>Hola, tu pedido fue confirmado.</p>",
    "text": "Hola, tu pedido fue confirmado."
  }
}
```

Obligatorio en `payload`: **subject** y al menos **text** o **html**.

### Enviar con plantilla

Si ya tienes una [plantilla del workspace](/es/template-api/como-funciona/variaveis-disponiveis-e-crud) con email habilitado:

```json theme={null}
{
  "from": "noreply@tudominio.com",
  "to": ["cliente@example.com"],
  "type": "template",
  "payload": {
    "templateId": "ID_DE_LA_PLANTILLA",
    "variables": { "name": "María", "orderId": "12345" }
  }
}
```

Respuesta esperada: **202**

```json theme={null}
{
  "success": true,
  "data": {
    "status": "QUEUED",
    "count": 1,
    "messageIds": ["clemail1..."],
    "emailIds": ["clemail1..."]
  }
}
```

`messageIds` es el campo canónico; `emailIds` es un alias de compatibilidad.

<Note>
  Dominio **de** no verificado → **400** con `DOMAIN_NOT_VERIFIED`.
</Note>

**Opciones en `options`:** `priority` (`high`, `normal`, `low`), `webhook` (URL y secret solo para este lote), `metadata` (texto libre). Detalles en la referencia de API.

**RFC 8058 (one-click unsubscribe):** por defecto, si el destinatario es un contacto del workspace, Notifique inyecta `List-Unsubscribe`. Para email transaccional use `"listUnsubscribe": false`. Topic inválido → **400** `INVALID_LIST_UNSUBSCRIBE_TOPIC`. Guía: [One-click unsubscribe](/es/emails-api/como-funciona/one-click-unsubscribe-rfc-8058).

***

## 3. Consultar, programar y cancelar

**Listar enviados**

```http theme={null}
GET /v1/email/messages?page=1&limit=20
Authorization: Bearer sk_live_xxxxx
```

Filtros opcionales: `fromDate`, `toDate`, `status`, `emailDomainId`. Requiere **`email:read`**.

**Ver un envío**

```http theme={null}
GET /v1/email/messages/:id
Authorization: Bearer sk_live_xxxxx
```

**Programar**, incluya en el cuerpo del envío:

```json theme={null}
{
  "from": "noreply@tudominio.com",
  "to": ["cliente@example.com"],
  "type": "email",
  "payload": {
    "subject": "Recordatorio",
    "html": "<p>Contenido.</p>"
  },
  "schedule": {
    "sendAt": "2025-12-31T14:00:00.000Z"
  }
}
```

**Cancelar programación** (solo con estado **SCHEDULED**):

```http theme={null}
POST /v1/email/messages/:id/cancel
Authorization: Bearer sk_live_xxxxx
```

Alcance: **`email:cancel`**. Los créditos programados vuelven al workspace.

***

## 4. Evitar duplicados

**`Idempotency-Key`** header en `POST`. Repeticiones dentro de 24 h no crean envíos duplicados. Ver [Seguridad y confiabilidad](/es/guides/conceitos/seguranca-e-confiabilidade).

***

## 5. Webhooks (opcional)

Configure `email.sent`, `email.delivered`, `email.opened`, `email.clicked`, `email.failed`, `email.complained`, and `email.cancelled` para rastrear sin polling.

Guía: [Eventos de Webhook](/es/emails-api/como-funciona/eventos-do-webhooks).

***

## Todos los tipos de envío

En la referencia de la API (pestaña Correo), abra **Enviar correo** y elija un ejemplo en el playground: HTML+texto, Solo texto, Plantilla, Programado, List-Unsubscribe.

## Próximos pasos

* [Introducción](/es/emails-api/como-funciona/introducao): cuándo usar y ciclo de estados
* [Alcances](/es/emails-api/como-funciona/escopos-da-api-key): permisos de la clave
* [Eventos de Webhook](/es/emails-api/como-funciona/eventos-do-webhooks): estado en tiempo real
* [Respuestas de error](/es/guides/conceitos/resposta-de-erros): códigos HTTP y `code`
