Skip to main content

Messages

All message routes live under an inbox: /v0/emails/inboxes/:inbox_id/emails….

Send

POST …/emails/send with Idempotency-Key header support:
Attachments take content (base64, 6 MB total request cap) or url (fetched, 30 MB cap) — stored on R2. track_opens injects a 1px pixel; first open adds the opened label and fires email.opened once. Sends are allow/block-list gated (403 rejected + email.rejected event).

Conversation

  • POST …/emails/:id/reply and /reply-all — recipients/subject/threading derived from the source email.
  • POST …/emails/:id/forward — new thread, Fwd: subject, body merged.
  • GET …/emails/search?q= — substring + tokenized-body search.
  • POST …/batch-get { email_ids[] }, POST …/batch-update with add_labels / remove_labels (single string or array).
  • PATCH …/:id relabels one message; DELETE removes it and recomputes the thread.
  • GET …/:id/raw returns the RFC822 source (message/rfc822).
Message objects carry labels, preview, extracted_text (quoted replies stripped), attachments[] metadata, in_reply_to, references, headers.