Skip to content

Platform

Send: campaigns Send: SMTP relay & Email API Verify Deliver AI Automation All features

Developers

API documentation Email API overview Integrations Custom domains

Solutions

Small businesses E-commerce Agencies Startups & SaaS Creators & individuals

Resources

Blog Help center Free email verifier SPF checker DMARC checker Compare platforms Pricing

Email API reference

Send email with a JSON request and check its delivery status. Endpoints, fields, responses and errors.

The Email API sends messages through the same pipeline, limits and credits as the SMTP relay. Your account needs SMTP relay access (see Send email with the SMTP relay) and a verified sending domain.

Authentication

Create an API key in Settings → API keys and send it as a bearer token. Always include Accept: application/json.

Authorization: Bearer YOUR_API_KEY
Content-Type: application/json
Accept: application/json

Send a message

POST /api/v1/send

{
  "from": "Your Store <orders@yourdomain.com>",
  "to": ["Jane Doe <jane@example.com>"],
  "cc": ["accounts@example.com"],
  "bcc": ["archive@yourdomain.com"],
  "reply_to": "support@yourdomain.com",
  "subject": "Your order #1024",
  "html": "<p>Thanks for your order, Jane!</p>",
  "text": "Thanks for your order, Jane!",
  "tags": ["order-confirmation"],
  "headers": { "X-Order-Id": "1024" },
  "attachments": [
    { "filename": "invoice-1024.pdf", "content": "JVBERi0xLjQK...", "content_type": "application/pdf" }
  ]
}
Field Required Notes
from yes "Name <email>", "email" or {"email": "...", "name": "..."}. The domain must be verified in your account
to yes Array (or comma-separated string) of addresses
cc, bcc no Arrays of addresses. Bcc recipients never appear in the headers
subject yes Up to 998 characters
html / text one of them Send both for the best deliverability
reply_to no Single address
tags no Up to 10 short labels, returned in webhooks and the message log
headers no Custom X-… headers, List-Unsubscribe, In-Reply-To, References
attachments no Up to 10 files: filename, content (base64), optional content_type, optional content_id for inline images referenced as cid: in the HTML

Each unique recipient (to, cc and bcc) costs 1 credit.

Response 202 Accepted

{
  "id": "01JABCDEF0123456789XYZ0000",
  "status": "queued",
  "message_id": "01JABCDEF0123456789XYZ0000@smtp.inboxroads.com",
  "credits_charged": 3,
  "recipients": [
    { "email": "jane@example.com", "type": "to", "status": "queued", "error": null }
  ]
}

Check status

  • GET /api/v1/messages/{id} returns the message and each recipient's status: queued, sent, delivered, bounced, complained, failed or suppressed.
  • GET /api/v1/messages?status=failed&per_page=50 lists recent messages.

For real-time updates, use webhooks instead of polling.

Errors

HTTP Meaning
401 Missing or invalid API key
402 Insufficient credits
403 SMTP relay access is not active, or the account is suspended
413 Message too large
422 Validation error, or the From domain is not verified (see message)
429 Daily sending limit or API rate limit (120 requests per minute) reached

Still stuck? Our team answers every message.

Contact support

Last updated September 30, 2026