Ir a la documentación
API

Listar los carriles de envío

Los dos carriles por los que viaja el correo, con sus cifras de rebotes y quejas.

GET/sending/streams

Ejecuta cualquiera de las 2 llamadas en tu espacio de trabajo.

GET /sending/streams

Los dos carriles por los que viaja el correo, con sus cifras de rebotes y quejas.

Ejemplo

Requiere emails:read. El correo viaja por dos carriles con sus propias colas y su propia reputación: transactional para el correo de la app, como restablecimientos de contraseña y recibos, y broadcast para los boletines. Cada carril viene con sus cifras de los últimos 7 días y los limits a los que está sujeto el carril de envíos masivos.

curl
curl "$OE/sending/streams" -H "$AUTH"
Respuesta
{ "object": "list", "data": [{  "object": "sending_stream",  "stream": "broadcast",  "status": "active",  "pausedAt": null,  "pausedReason": null,  "resumedAt": null,  "window": {    "since": "2026-10-04T09:41:00.000Z",    "until": "2026-10-11T09:41:00.000Z",    "recipients": 18240,    "bounced": 212,    "complained": 9,    "bounceRate": 0.0116,    "complaintRate": 0.0005  },  "limits": { "bounceRate": 0.04, "complaintRate": 0.002, "minimumRecipients": 500, "windowDays": 7 }}] }

El carril de envíos masivos se pone en pausa solo cuando su tasa de rebote supera el 4% o su tasa de quejas el 0,2% en esos 7 días, una vez alcanzado minimumRecipients. pausedReason dice cuál, el propietario del espacio de trabajo recibe un correo, y el correo de la app sigue saliendo.

Mientras está en pausa, un mensaje enviado con stream en broadcast y un envío masivo nuevo son un 409 stream_paused, y los envíos masivos que ya están saliendo se retienen.

Elegir un carril

Requiere emails:send. stream en POST /emails, en cada mensaje de POST /emails/batch y en POST /templates/{id}/send elige el carril. Es transactional salvo que digas otra cosa, y cada copia de un envío masivo viaja por broadcast.

curl
curl -X POST "$OE/emails" -H "$AUTH" -H "Content-Type: application/json" \  -d '{ "from": "[email protected]", "to": "[email protected]", "subject": "What is new in October", "text": "Three things shipped this month.", "stream": "broadcast" }'
Respuesta
{ "object": "email", "id": "msg_5f1c9a0e7b2d4c6a8e3f1b7d", "status": "queued", "stream": "broadcast" }

Por SMTP, la cabecera X-OpenEmail-Stream: broadcast hace lo mismo, y se quita antes de que salga el mensaje.

Reanudar un carril en pausa

Requiere domains:write y al propietario del espacio de trabajo. POST /sending/streams/broadcast/resume reanuda el carril: los mensajes retenidos salen de inmediato y la cuenta de 7 días empieza de nuevo desde ahora, así que limpia primero la audiencia.

curl
curl -X POST "$OE/sending/streams/broadcast/resume" -H "$AUTH"
Respuesta
{  "object": "sending_stream",  "stream": "broadcast",  "status": "active",  "pausedAt": null,  "pausedReason": null,  "resumedAt": null,  "window": {    "since": "2026-10-04T09:41:00.000Z",    "until": "2026-10-11T09:41:00.000Z",    "recipients": 18240,    "bounced": 212,    "complained": 9,    "bounceRate": 0.0116,    "complaintRate": 0.0005  },  "limits": { "bounceRate": 0.04, "complaintRate": 0.002, "minimumRecipients": 500, "windowDays": 7 }}

Un carril que no está en pausa es un 409 stream_not_paused.

Un token de acceso OAuth necesita un código de verificación para esta llamada. Hasta que la app haya verificado uno en los últimos 60 minutos, la llamada responde 403 step_up_required y no cambia nada. A una clave de API nunca se le pide. La página Autenticación muestra cómo pedir un código y verificarlo.

Referencia