Sending attachments
Include a base64-encodedattachments array on POST /messages (or reply/forward):
Receiving attachments
Inbound attachments are stored and surfaced on the message — both in the webhook payload and onGET /messages/{id} / GET /threads/{id}:
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 return413 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.
