Saltar al contenido
Docs

Crea campañas, elige sus listas de contactos y envíalas o prográmalas.

URL basehttps://api.emailit.com/v2AutenticaciónErroresLímites de velocidad

Crear una campaña

Crea una campaña con estado draft. Requiere una clave de API con el permiso full. Emite un evento campaign.created.

Una campaña nueva no tiene destinatarios. Elige sus listas de contactos con Actualizar una campaña y después envíala o prográmala. Los créditos se cobran cuando se envía la campaña: 2 créditos por email.

POST/campaigns

Parámetros del cuerpo

namestringobligatorio
El nombre interno de la campaña. Los destinatarios no lo ven. Los demás endpoints de campañas aceptan el nombre en lugar del ID, así que, si los usas así, procura que los nombres sean únicos.
subjectstring
El asunto. Admite etiquetas de combinación como {{first_name}}.
from_emailstring
La dirección del remitente. Debe pertenecer a un dominio de envío verificado del espacio de trabajo, por ejemplo news@acme.com.
from_namestring
El nombre visible del remitente, por ejemplo Acme. El mensaje se envía desde Acme <news@acme.com>.
reply_tostring
La dirección de respuesta. Por defecto, from_email cuando se envía la campaña.
htmlstring
El cuerpo HTML que envía Emailit. Admite las etiquetas de combinación {{first_name}}, {{last_name}}, {{email}}, {{unsubscribe_url}} y {{cf.<key>}} para los campos personalizados. Define el cuerpo al crear la campaña.
textstring
El cuerpo en texto plano. Admite las mismas etiquetas de combinación que html.
preview_textstring
El texto de vista previa que se guarda con la campaña. Emailit no lo inserta en el mensaje; si lo necesitas, añade un preheader oculto a html.
contentstring
El código fuente del cuerpo en el editor (por ejemplo, MJML), guardado tal cual. Emailit envía html y text, no content.
content_typestringpor defecto: html
El formato de content: html, text o mjml. Emailit no compila MJML; envía el HTML compilado en html.

Devuelve

Devuelve 201 Created con el objeto de campaña. status es draft. La respuesta no incluye html, text ni content.

Devuelve 400 si falta name y 403 si la clave de API no tiene el permiso full.

POST/campaigns
Terminal
curl -X POST https://api.emailit.com/v2/campaigns \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "October newsletter",
    "subject": "October news for {{first_name}}",
    "from_email": "news@acme.com",
    "from_name": "Acme",
    "reply_to": "support@acme.com",
    "html": "<p>Hi {{first_name}},</p><p>Here is what changed this month.</p><p><a href=\"{{unsubscribe_url}}\">Unsubscribe</a></p>",
    "text": "Hi {{first_name}}, here is what changed this month. Unsubscribe: {{unsubscribe_url}}"
  }'
JSON
{
  "object": "campaign",
  "id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
  "name": "October newsletter",
  "status": "draft",
  "subject": "October news for {{first_name}}",
  "from_email": "news@acme.com",
  "from_name": "Acme",
  "reply_to": "support@acme.com",
  "preview_text": null,
  "content_type": "html",
  "created_at": "2026-10-01T09:30:12.482193Z",
  "updated_at": "2026-10-01T09:30:12.482193Z"
}

Obtener una campaña

Obtiene una campaña por su ID o su nombre. Requiere una clave de API con el permiso full.

GET/campaigns/{id}

Parámetros de ruta

idstringobligatorio
El ID (cmp_…) o el nombre de la campaña. Codifica para URL los nombres que contengan espacios o caracteres especiales.

Devuelve

Devuelve el objeto de campaña.

objectstring
Siempre campaign.
idstring
El ID de la campaña, con el prefijo cmp_.
statusstring
draft, scheduled, queued, sending, sent, canceled o archived. queued significa que una campaña programada ha llegado a su hora de envío y espera a que la procese un worker.
namestring
El nombre interno de la campaña.
subjectstring
El asunto, con las etiquetas de combinación sin resolver.
from_emailstring
La dirección del remitente. "" hasta que se define.
from_namestring
El nombre visible del remitente. "" hasta que se define.
reply_tostring
La dirección de respuesta. "" significa que las respuestas van a from_email.
preview_textstring | null
El texto de vista previa que se guarda con la campaña.
content_typestring
La etiqueta de formato del código fuente del editor: html, text o mjml en las campañas creadas con la API.
scheduled_atstring | null
Cuándo se envía una campaña programada, en UTC.
sent_atstring | null
Cuándo empezó el envío.
recipientsobject[]
Las listas de contactos a las que se dirige la campaña. Cada elemento tiene audience_id (aud_…) y exclude (true para una lista excluida).

El cuerpo (html, text y content) no se incluye en la respuesta. Las estadísticas de interacción están disponibles en el panel, en Email MarketingCampaigns.

Devuelve 404 si ninguna campaña del espacio de trabajo coincide con id.

GET/campaigns/{id}
Terminal
curl https://api.emailit.com/v2/campaigns/cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "object": "campaign",
  "id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
  "name": "October newsletter",
  "status": "scheduled",
  "subject": "October news for {{first_name}}",
  "from_email": "news@acme.com",
  "from_name": "Acme",
  "reply_to": "support@acme.com",
  "preview_text": null,
  "content_type": "html",
  "sent_at": null,
  "scheduled_at": "2026-10-08 09:00:00+00",
  "created_at": "2026-10-01 09:30:12.482193+00",
  "updated_at": "2026-10-01 10:02:47.118204+00",
  "recipients": [
    { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV", "exclude": false },
    { "audience_id": "aud_3hRmYTSQ4ca6y9tbPI0IQPjVTL9", "exclude": true }
  ]
}

Actualizar una campaña

Actualiza los campos que pasas y deja los demás sin cambios. Úsalo para elegir las listas de contactos de la campaña antes de enviarla. Requiere una clave de API con el permiso full. Emite un evento campaign.updated.

Una campaña programada envía lo que esté guardado a su hora de envío, así que puedes seguir editándola después de programarla.

POST/campaigns/{id}

Parámetros de ruta

idstringobligatorio
El ID (cmp_…) o el nombre de la campaña.

Parámetros del cuerpo

namestring
El nombre interno de la campaña.
subjectstring
El asunto. Admite etiquetas de combinación.
from_emailstring
La dirección del remitente, de un dominio de envío verificado.
from_namestring
El nombre visible del remitente.
reply_tostring
La dirección de respuesta. Una cadena vacía significa que las respuestas van a from_email.
preview_textstring
El texto de vista previa que se guarda con la campaña.
contentstring
El código fuente del cuerpo en el editor, guardado tal cual.
content_typestring
El formato de content: html, text o mjml.
recipientsobject[]

Las listas de contactos a las que se dirige. Sustituye las listas actuales. Incluye al menos una lista con exclude en false.

  • audience_id (cadena, obligatorio): el ID de una lista de contactos (aud_…) de este espacio de trabajo.
  • exclude (booleano, por defecto false): true guarda la lista como exclusión. El panel resta las listas excluidas de su estimación de destinatarios, pero de momento el envío no aplica las exclusiones, así que quita también esos contactos de las listas incluidas.

Los ID de lista duplicados se ignoran. Al enviar, Emailit envía un email a cada contacto suscrito de las listas incluidas una sola vez y omite los contactos dados de baja y las direcciones bloqueadas.

El cuerpo HTML y el de texto se definen al crear la campaña. Los campos desconocidos del cuerpo se ignoran.

Devuelve

Devuelve el objeto de campaña actualizado, con recipients.

Devuelve 422 si recipients no tiene ninguna lista incluida o hace referencia a una lista de otro espacio de trabajo, y 404 si la campaña no existe.

POST/campaigns/{id}
Terminal
curl -X POST https://api.emailit.com/v2/campaigns/cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": "Your October update, {{first_name}}",
    "recipients": [
      { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" },
      { "audience_id": "aud_3hRmYTSQ4ca6y9tbPI0IQPjVTL9", "exclude": true }
    ]
  }'
JSON
{
  "object": "campaign",
  "id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
  "name": "October newsletter",
  "status": "draft",
  "subject": "Your October update, {{first_name}}",
  "from_email": "news@acme.com",
  "from_name": "Acme",
  "reply_to": "support@acme.com",
  "preview_text": null,
  "content_type": "html",
  "scheduled_at": null,
  "created_at": "2026-10-01 09:30:12.482193+00",
  "updated_at": "2026-10-01 10:02:47.118204+00",
  "recipients": [
    { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV", "exclude": false },
    { "audience_id": "aud_3hRmYTSQ4ca6y9tbPI0IQPjVTL9", "exclude": true }
  ]
}

Listar campañas

Devuelve las campañas del espacio de trabajo, de la más reciente a la más antigua. Requiere una clave de API con el permiso full.

GET/campaigns

Parámetros de consulta

pageintegerpor defecto: 1
El número de página, empezando por 1.
limitintegerpor defecto: 10
Las campañas por página, de 1 a 100.
statusstring
Un filtro rápido por estado: draft, scheduled, sending (también incluye queued), sent, canceled, archived o all.
matchstring

all (por defecto) exige que se cumplan todos los filtros. or coincide con cualquier filtro. Consulta Filtrado.

orderstring

Clave de ordenación de esta lista. Consulta las claves de ordenación más abajo.

directionstring

asc o desc.

Claves de filtro

Los filtros usan parámetros de consulta key.condition=value, por ejemplo status.exact=sent o created_at.after=2026-09-01. Para las condiciones de cada tipo, consulta Filtrado y ordenación.

Clave Tipo Notas
name string
subject string
status enum draft, scheduled, queued, sending, sent, archived
created_at date
sent_at date

Claves de orden para order: name, subject, status, created_at, sent_at.

Devuelve

Devuelve una página de objetos de campaña sin reply_to, preview_text, content_type ni recipients. Para obtenerlos, usa Obtener una campaña.

dataobject[]
Las campañas de esta página.
total_recordsinteger
El número de campañas que coinciden con la consulta.
next_page_urlstring | null
La ruta de la página siguiente, o null en la última página. Solo incluye page y limit, así que vuelve a añadir tu búsqueda y tus filtros cuando la sigas.
previous_page_urlstring | null
La ruta de la página anterior, o null en la primera página.
GET/campaigns
Terminal
curl -G https://api.emailit.com/v2/campaigns \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -d limit=20 \
  -d status=sent \
  -d order=sent_at \
  -d direction=desc
JSON
{
  "data": [
    {
      "object": "campaign",
      "id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
      "name": "October newsletter",
      "status": "sent",
      "subject": "Your October update, {{first_name}}",
      "from_email": "news@acme.com",
      "from_name": "Acme",
      "sent_at": "2026-10-08 09:00:04+00",
      "scheduled_at": "2026-10-08 09:00:00+00",
      "created_at": "2026-10-01 09:30:12.482193+00",
      "updated_at": "2026-10-08 09:00:31+00"
    }
  ],
  "total_records": 34,
  "next_page_url": "/v2/campaigns?page=2&limit=20",
  "previous_page_url": null
}

Enviar o programar una campaña

Envía la campaña ahora o la programa si pasas un scheduled_at futuro. Requiere una clave de API con el permiso full y un espacio de trabajo verificado: los espacios de trabajo sin verificar no pueden enviar campañas y reciben 403.

Antes de enviarla, comprueba que la campaña tiene un from_email de un dominio verificado, un asunto, un cuerpo html o text y al menos una lista de contactos incluida (se define con Actualizar una campaña). Cada email cuesta 2 créditos.

POST/campaigns/{id}/send

Parámetros de ruta

idstringobligatorio
El ID (cmp_…) o el nombre de la campaña.

Parámetros del cuerpo

scheduled_atstring

Cuándo enviarla. Acepta ISO 8601 (2026-10-08T09:00:00Z), una marca de tiempo Unix en segundos o lenguaje natural como tomorrow at 9am (interpretado en UTC). La hora debe ser futura y la campaña debe estar en draft.

Omítelo para enviarla ahora. Para enviar antes de tiempo una campaña programada, llama a este endpoint sin scheduled_at.

Devuelve

Enviar ahora: el estado cambia a sending y Emailit emite campaign.sending. Después, Emailit crea un email por destinatario: todos los contactos suscritos de las listas incluidas, sin direcciones duplicadas y sin los contactos dados de baja ni las direcciones bloqueadas. Cuando todos los destinatarios han pasado al proceso de envío, el estado cambia a sent y Emailit emite campaign.sent. Sigue la entrega en el panel o con los eventos de email.

Programar: el estado cambia a scheduled y Emailit emite campaign.scheduled. A la hora programada, la campaña pasa a queued (campaign.queued) y después se envía como se describe arriba.

La respuesta contiene object, id, name y el nuevo status, además de scheduled_at si la programas.

Código Cuándo
403 El espacio de trabajo no está verificado o la clave de API no tiene el permiso full.
404 Ninguna campaña coincide con id.
422 scheduled_at no se puede interpretar o no es una hora futura, o intentaste programar una campaña que no es un borrador.
POST/campaigns/{id}/send
Terminal
curl -X POST https://api.emailit.com/v2/campaigns/cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN/send \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "scheduled_at": "2026-10-08T09:00:00Z" }'
JSON
{
  "object": "campaign",
  "id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
  "name": "October newsletter",
  "status": "scheduled",
  "scheduled_at": "2026-10-08T09:00:00.000000Z"
}

Cancelar una campaña

Cambia el estado de la campaña a canceled y emite un evento campaign.canceled. Requiere una clave de API con el permiso full.

Solo se pueden cancelar las campañas con estado draft o sending; cualquier otro estado devuelve 422. Si cancelas una campaña que se está enviando, los emails que ya están en cola para su entrega no se recuperan.

POST/campaigns/{id}/cancel

Parámetros de ruta

idstringobligatorio
El ID (cmp_…) o el nombre de la campaña.

Devuelve

Devuelve object, id, name y status (canceled).

Devuelve 422 si el estado de la campaña no es draft ni sending, y 404 si la campaña no existe.

POST/campaigns/{id}/cancel
Terminal
curl -X POST https://api.emailit.com/v2/campaigns/cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN/cancel \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "object": "campaign",
  "id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
  "name": "October newsletter",
  "status": "canceled"
}

Eliminar una campaña

Elimina una campaña de forma permanente. Requiere una clave de API con el permiso full. Emite un evento campaign.deleted.

Eliminar una campaña no afecta a los emails que ya se enviaron o se pusieron en cola. Para detener una campaña que se está enviando, primero cancélala.

DELETE/campaigns/{id}

Parámetros de ruta

idstringobligatorio
El ID (cmp_…) o el nombre de la campaña.

Devuelve

Devuelve object, id, name y deleted: true. Devuelve 404 si la campaña no existe.

DELETE/campaigns/{id}
Terminal
curl -X DELETE https://api.emailit.com/v2/campaigns/cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "object": "campaign",
  "id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
  "name": "October newsletter",
  "deleted": true
}

¿Te ha resultado útil esta página?

Gracias por tu opinión.

Gracias. Leemos todos los mensajes.