Create inboxes instantly
Provision a new inbox in one request with predictable JSON input and output.
Email automation for developers
Launching soon
PostMX is an email automation API for inbox creation, webhook delivery, polling, and full message retrieval.
Use it for OTP flows, testing, support workflows, and inbound automation with a simple versioned API and bearer auth.
Product overview
PostMX gives you a small, public API for creating inboxes, receiving messages, and fetching the full message body when your app needs it. It is built for teams that want email workflows they can automate without mailbox complexity.
Key benefits
Provision a new inbox in one request with predictable JSON input and output.
Use short-lived inboxes for OTPs or reusable inboxes for recurring workflows.
Read messages from the API or receive them through webhooks.
Request IDs, idempotency keys, and scoped API keys keep integrations easy to debug.
Public API
POST /v1/inboxesGET /v1/inboxes/:id/messagesGET /v1/messages/:idPOST /v1/webhooksAuthorization header.x-request-id for tracing./v1.API examples
Authorization: Bearer pmx_live_...
curl -X POST https://api.postmx.co/v1/inboxes \
-H "Authorization: Bearer pmx_live_..." \
-H "Content-Type: application/json" \
-d '{
"label": "Signup OTP",
"lifecycle_mode": "temporary",
"ttl_minutes": 15
}'
curl "https://api.postmx.co/v1/inboxes/inb_123/messages?limit=50" \
-H "Authorization: Bearer pmx_live_..."
curl -X POST https://api.postmx.co/v1/webhooks \
-H "Authorization: Bearer pmx_live_..." \
-H "Content-Type: application/json" \
-d '{
"label": "Inbox Webhook",
"target_url": "https://example.com/postmx/webhooks",
"inbox_id": "inb_123"
}'
Plans and limits
| Limit | Free | Pro |
|---|---|---|
| Active inboxes | 3 | 25 |
| Received messages / month | 250 | 10,000 |
| API requests / minute | 60 | 300 |
| API requests / day | 2,000 | 25,000 |
| API requests / week | 10,000 | 100,000 |
| API requests / month | 25,000 | 400,000 |
Reliability
Prevent duplicate creates with idempotency keys on write routes.
Trace each request across logs and support tickets with a unique request ID.
Rate limiting is applied at the key level so usage stays predictable.
The webhook signing secret is returned once at creation and used to verify deliveries.
Scope examples: inboxes:write, messages:read, webhooks:write.
Developer notes
Expect clear responses such as 401 unauthorized,
403 insufficient_scope, 429 rate_limited,
404 inbox_not_found, 409 idempotency_conflict, and
500/503 transient_failure.
Start building