Skip to main content
To send images, video, audio, or documents, you first upload the file and get a file_uuid, which you then pass to a send action.
1

Request an upload URL

With { filename, mime_type, size_bytes }. It returns 201 with file_uuid, upload_url, upload_token, storage_path, and expires_at.
2

Upload the binary

Upload the file to the upload_url you received, before it expires (expires_at).
3

Confirm

With { file_uuid }. It returns 200 with file_uuid, mime_type, size_bytes, download_url, and expires_at. From here the file_uuid is sendable.
Once confirmed, pass the file_uuid to a send action — as direct media in send_message, or as a template header:
The header.typeimage | video | document carries file_uuid (document accepts an optional filename). In send_message media mode, the file_uuid goes at the action level with body as an optional caption (audio doesn’t accept a caption).
If the preflight rejects the group, the response is a synchronous 4xx and no action runs. See Errors.

Executable example

The full flow in three calls. The file_uuid confirmed in step 3 is the one you then pass to a send action. 1 · Request an upload URL
2 · Upload the binary to the upload_url before it expires
3 · Confirm