Ir a la documentación
API

Enviar con una plantilla

El cuerpo almacenado aporta el mensaje; la petición aporta el sobre y los valores.

POSTapi.openemail.uk/templates/{id}/send

Ejecuta la llamada real contra tu espacio de trabajo, con tu propia clave.

POST /templates/{id}/send

El cuerpo almacenado aporta el mensaje; la petición aporta el sobre y los valores.

Ejemplo

Necesita templates:write Y emails:send. Respeta Idempotency-Key exactamente igual que POST /emails.

curl
curl -X POST "$OE/templates/order-shipped/send" -H "$AUTH" \  -H "Content-Type: application/json" -H "Idempotency-Key: order:AC-4192:shipped" \  -d '{    "from": "Acme Dispatch <[email protected]>",    "to": ["[email protected]"],    "version": 5,    "props": { "orderId": "AC-4192", "customer": "Ada" }  }'
Respuesta
{  "object": "email",  "id": "msg_c5f21cc6…",  "status": "queued",  "from": "[email protected]",  "subject": "Order AC-4192 is on its way",  "template": { "id": "order-shipped", "version": 5 }}

Los dos scopes, y ninguno sobra: templates:write porque quien llama alcanza un cuerpo almacenado, y emails:send porque el correo sale del espacio de trabajo. Una key que puede enviar sus propios cuerpos sigue sin poder enviar la plantilla de otra persona.

Fija version en cualquier cosa automatizada. Si lo omites, resuelves lo que esté publicado en ese momento, que es lo que quieres cuando el texto es de otra persona y no lo que quieres la mañana en que lo reescriben.

subject sustituye al de la plantilla solo para este mensaje, y cancellableForSeconds, tracking y tags se comportan exactamente igual que en un envío normal.

POST /emails acepta un campo template que hace lo mismo, para quien ya compone mensajes allí. Este endpoint existe para que alcanzar un cuerpo almacenado no exija aportar la forma de un mensaje que no estás componiendo.

Cuando se rechaza un envío

Las props son un contrato y no una sugerencia, y todos los fallos de abajo ocurren antes de que se despache nada. La alternativa, un mensaje que sale con un hueco donde iba el número de pedido, no la informa nada y no se puede retirar.

CódigoEstadoQué pasó
`resource_not_found`404No hay ninguna plantilla en esta conexión con ese id o slug.
`template_not_published`422Existe y nunca se ha publicado, o la versión que nombraste sigue siendo un borrador.
`template_version_not_found`422Fijaste una version que esta plantilla nunca ha tenido.
`missing_template_prop`422Una prop declarada como required estaba ausente, era null o estaba vacía.
`unknown_template_prop`422Pasaste una clave que la versión no declara. El mensaje nombra las que sí.
`unknown_template_slot`422Lo mismo, para un slot.
`invalid_template_prop`422Un valor que no es string, number ni boolean. Un object o un array no se pueden sustituir dentro de HTML.

param en estos es template.props.<key>, así que un cliente puede señalar el campo que erró sin parsear el mensaje.