Skip to content

Developer API

The mail your product sends, as an API.

The same engine that runs our mailboxes, with a send endpoint, retries that never send twice, signed webhooks and an events API that reports what actually happened.

Send a message

One request. One answer you can trust.

Authenticate with a workspace API key, send an Idempotency-Key, and a retry replays the first response instead of sending twice.

curl https://api.alecrae.com/v1/messages \
  -H "Authorization: Bearer $API_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
    "from": { "email": "receipts@yourapp.com" },
    "to":   [{ "email": "ada@example.com" }],
    "subject": "Your receipt",
    "template_id": "receipt",
    "variables": { "order": "A-1042" }
  }'

Available now

What the API does today.

  • One send endpoint

    POST /v1/messages with text, HTML or a stored template plus variables. Inputs are validated at the edge, and a bad request names the exact field and reason.

  • Safe retries

    Send an Idempotency-Key and a retried request replays the original response for 24 hours instead of sending twice.

  • Signed webhooks

    HMAC-SHA256 over timestamp and body, 10 attempts over about 24 hours, and every attempt listed per endpoint. A short outage never switches your endpoint off.

  • An events API

    Queued, sent, delivered, deferred, bounced, complained, opened, clicked, unsubscribed and received events, cursor-paginated.

  • Domains you can verify

    Publish the DKIM, SPF and DMARC records we issue, and we check the published key against the one we sign with.

  • Suppression and a typed SDK

    Hard bounces, complaints and unsubscribes suppress future sends, scoped to your account. A TypeScript client and webhook verifier ship as @alecrae/sdk.

On the roadmap

Not available yet. Listed so you know where we're going.

  • Published OpenAPI reference
  • SMTP submission (port 587)
  • Batch send
  • Webhook replay
  • Test-mode sandbox addresses
  • Downstream delivery confirmation on every route
  • Dedicated sending IPs

Delivery status

Every state means one thing.

A message is never reported as delivered because a server said “accepted” on the way out.

sent
Our relay accepted the message. Not yet a delivery.
delivered
A delivery report says the receiving server accepted it.
deferred
The receiving server asked us to try again later.
bounced
The receiving server refused it. Hard bounces suppress the address.
complained
The recipient marked it as spam. The address is suppressed.

Pricing

Usage-based. Contact us.

API volume pricing is not published yet. Tell us what you send and how much, and we'll talk it through.

Machine-readable starting points: the API capability index and API health.