Skip to main content
Pre-upload files when you need trusted ownership, metadata, reuse, or files larger than 10 MB.

1. Create an upload

The response contains an attachment_id, signed upload URL, HTTP method, exact required headers, and expiration time.

2. Upload the raw bytes

Do not use multipart form data. The body length and Content-Type must match the allocation.

3. Send the Attachment

Import a public media URL

For files up to 10 MB, a media part can use a public HTTPS URL instead of a pre-uploaded Attachment:
Relay imports the bytes into an owned Attachment before committing the Message. Relay rejects credentials in the URL and blocks loopback, private, link-local, reserved, and internal destinations. A redirect cannot bypass these checks.

Media metadata

Width and height must be supplied together.

Image formats

Relay accepts raster image formats including JPEG, PNG, GIF, HEIC, TIFF, BMP, and WebP. Relay rejects SVG.
This is a Relay content-safety decision. Reference material disagreed about SVG support, so Relay chose one explicit rule: accept WebP raster bytes and avoid SVG’s additional active-content and renderer surface.

Limits

Ownership

Only the Contact that allocated an Attachment can retrieve or send it. An Attachment can be reused across Messages, but it cannot be deleted after a Message or group photo references it. Signed transfer URLs are capabilities; keep them out of logs.