Errors and limits

Errors

Postilon uses HTTP status codes, and every error has this body:

{
  "error": {
    "code": "domain_not_verified",
    "message": "Sender domain acme.com is not verified in this workspace. Verify it under Domains, or send with a test API key."
  }
}
Status Code What to do
400 invalid_json Send a valid JSON body with the documented types. variables values must be strings.
400 validation_error A required field is missing or invalid; the message says which.
400 invalid_scheduled_at Use an RFC 3339 time such as 2026-11-01T09:00:00Z.
401 missing_authorization Send Authorization: Bearer <API key>.
401 unauthorized The key is wrong, revoked or expired.
402 insufficient_credits Buy credits in the dashboard, or turn on auto-recharge.
403 domain_not_verified Verify the sender domain, or send from a verified one.
403 domain_restricted The key may only send from another domain, or its domain was removed. Use a key for this domain.
403 insufficient_scope The key is a sending-only key; use a full-access key for this endpoint.
403 workspace_suspended Sending is paused for the workspace; contact support.
404 not_found The email, domain, template, webhook or other resource does not exist in this workspace.
409 already_exists The domain is already in this workspace.
409 cannot_cancel The email is already being delivered or was sent.
409 idempotency_key_reused The Idempotency-Key was used for a different request; use a new key for a new email.
429 rate_limit_exceeded Slow down; see the rate limit headers.
429 daily_limit_reached The workspace's daily sending limit is reached. Try later, or ask for a higher limit.

Rate limit

A workspace can make 100 API requests per second, shared by all its keys. Every response says where you stand:

Header Meaning
X-RateLimit-Limit Requests allowed per second (100).
X-RateLimit-Remaining Requests left in the current second.
X-RateLimit-Reset When the window resets, in Unix seconds.

Over the limit, requests fail with 429 rate_limit_exceeded. Wait until the reset time, and use batch sending for many emails at once.

Limits

Limit Value
Daily sending limit 100 recipients per rolling 24 hours for new workspaces; 10,000 after the first paid top-up. Higher limits on request.
API requests 100 per second per workspace
Emails per batch request 100
Message size 10 MB (enforced on the SMTP relay)
Credits 1 per recipient; credits are valid for 90 days from purchase or grant

Sending health

Sending pauses automatically when, over 24 hours and at least 100 emails, bounces reach 5% or spam complaints reach 0.3%. Keep bounces under 2% and complaints under 0.1%: send only to people who asked for your email, and remove addresses that bounce. Postilon adds hard-bounced, complaining and unsubscribed addresses to your suppression list for you. See the Acceptable Use Policy.