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.