Documentation / Email attachments
BUILD

Email attachments

Upload first, then reference ready assets when you send.

Upload in the dashboard

Use the attachment picker when composing a message. Uploads are tenant-scoped and expire. The server stores each upload as a ready asset. Assets must be unexpired when the message is accepted.

Upload over HTTP with a session

POST /v1/attachments accepts filename, content_type, and content_base64, plus tenant_id for a session. Supported types are PDF, plain text, CSV, PNG, and JPEG. Each decoded file must be between 1 byte and 5 MiB. The response returns its ready attachment ID. Generic write permission is session-only with the current API scope catalog; API keys cannot upload attachments.

{
  "tenant_id": "YOUR_TENANT_UUID",
  "filename": "hello.txt",
  "content_type": "text/plain",
  "content_base64": "SGVsbG8h"
}

Reference attachment IDs

Supply attachment_ids with at most five IDs to POST /v1/notifications. Combined content may not exceed 5 MiB. An asset from another tenant is rejected; copying an ID does not grant access.

{ "attachment_ids": ["READY_ATTACHMENT_UUID"] }

Retention and availability

Expired attachments are cleaned up only when no queued, sending, or unknown message still references them. Download links are temporary; do not treat a signed storage URL as permanent application data.

Building something interesting?We’d love to help