Elixpo Mails

Elixpo Mails Docs

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 an Idempotency-Key request 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 — unknown endpoint_key.
Next: Templates

AuthenticationTemplates