Triggering
Send an email by POSTing a signed request to the template's webhook endpoint. The endpoint_key is shown on each webhook.
Endpoint
POST https://mails.elixpo.com/v1/hooks/<endpoint_key>
Request
http
POST https://mails.elixpo.com/v1/hooks/<endpoint_key>
Content-Type: application/json
X-Elixpo-Signature: t=<unix_seconds>,v1=<hex HMAC-SHA256>
{
"to": "user@example.com",
"variables": { "name": "Ada" },
"idempotency_key": "optional-dedupe-key"
}to— recipient email address. Required.variables— object of{{var}}values merged into the template's subject and body.idempotency_key— optional dedupe key (or pass anIdempotency-Keyrequest header); the same key won't send twice — a duplicate returns the original result (good for retries).
Responses
200 — sent. The email was accepted by your sender's mailbox.
json
{
"ok": true,
"id": "del_...",
"status": "sent",
"to": "user@example.com",
"subject": "Welcome, Ada"
}200 — suppressed. The recipient previously unsubscribed, so a non-transactional send is skipped. This is a successful no-op, not an error — handle it as success.
json
{
"ok": false,
"status": "suppressed",
"to": "user@example.com"
}502 — failed. A downstream send failure (e.g. the sender mailbox rejected it). Inspect error.
json
{
"ok": false,
"status": "failed",
"error": "smtp: 535 authentication failed"
}Error statuses
401— bad or missing signature.400— invalid timestamp (outside the 5-minute tolerance) or invalid recipient.403— disabled webhook/product, or no signing secret configured.404— unknownendpoint_key.
