Email API

A REST API built for email

One endpoint, one JSON document, and your message is on its way. No SOAP, no XML, no ritual sacrifices — just a clean API that says what it means.

Under the hood

One POST. That's the whole integration.

Send a JSON document, get a JSON document back. The response shape never changes between languages or SDKs.

terminal
# Send a single email with curl
curl "https://api.postedapi.org/email" \
  -X POST \
  -H "Accept: application/json" \
  -H "Content-Type: application/json" \
  -H "X-PostedApi-Server-Token: your-server-token" \
  -d '{
    "From": "[email protected]",
    "To": "[email protected]",
    "Subject": "Your receipt is ready",
    "TextBody": "Thanks for your order — details attached.",
    "MessageStream": "outbound"
  }'

# → 200 OK, usually in a couple hundred milliseconds
{
  "MessageID": "c6a4f9b2-7d1e-4a55-9c08-2f8e6b41d903",
  "SubmittedAt": "2025-06-12T14:03:11Z"
}

Copy, paste, send. Your first email can be in the air in under five minutes.

Helpful API error responses
Errors

Error messages that actually help

A 422 should read like a colleague wrote it, not like a server sneezed. Every error carries a status you already know, a sentence that tells you what to fix, and a debug ID our support team can act on the moment you paste it into a ticket.

  • Precise error codes that map to exactly one cause
  • Actionable messages that say how to fix the problem
  • A unique debug ID on every single response
See the error format
Batch sending validates every message
Batch sending

Up to 500 messages per call

Firing a whole digest run or onboarding sequence? Shove it into a single request. Each message inside the batch is validated on its own, so one mistyped address never takes the other 499 down with it.

  • Up to 500 messages in one API call
  • Individual validation for every message in the batch
  • A per-message result you can act on, success or failure
Read about batch sends
Sandbox mode for safe testing
Sandbox mode

Rehearse everything, send nothing

Every account ships with a sandbox stream. Point your code at it and practise the entire integration — sends, bounces, errors, webhooks — while real inboxes stay gloriously untouched. Flip one setting and the exact same code talks to production.

  • Test sends, bounces and errors without delivering a thing
  • Responses identical to production, down to the field names
  • Go live by swapping one token — no code changes
How the sandbox works
Built for builders

The API is the whole product

No dashboard-first afterthought here. Every feature ships in the API on day one.

JSON in, JSON out

Post a JSON document, get a JSON document back. The request and response shapes are the same in every SDK, every language, every time.

Official SDKs

Node.js, PHP, Python, Ruby, C# and Go. Maintained by us, versioned properly, and boring in the best possible way.

Stats API

Pull delivery rates, bounce counts and engagement numbers straight into your own dashboards with a tidy stats endpoint.

Try the API in minutes

Sign up, grab a server token, and send your first email before your coffee gets cold. The $1.90 Starter plan includes 100 emails a month.