Skip to main content

Sending attachments

Include a base64-encoded attachments array on POST /messages (or reply/forward):

Receiving attachments

Inbound attachments are stored and surfaced on the message — both in the webhook payload and on GET /messages/{id} / GET /threads/{id}:
The url is a short-lived signed download link — fetch the bytes directly from storage, no extra auth needed. You can also mint a fresh link any time with GET /attachments/{id}.

Size limit

Email providers cap message size, so a single email’s attachments must fit within ~7 MB (the base64-encoded message stays under the 10 MB provider limit). Oversized sends return 413 attachment_too_large — caught before sending, never a silent failure.
Need to move bigger files? Talk to us about large-file support (direct-to-storage uploads) on higher plans.

Storage limit

Total attachment storage is a per-plan cap: Sending an attachment that would exceed your cap returns 402 storage_limit_reached. Inbound mail is never rejected — it’s always stored, and the dashboard warns you as you approach the limit. Track usage on the Overview.