Media
How inbound media reaches R2 and how outbound voice notes are sent.
Inbound
OpenWA includes media inline as base64 up to 1 MB. The webhook handler writes that data to R2 at inbound/<sessionId>/<messageId> and removes it from the job body so queue messages stay small. Media over the inline limit is not in the webhook. The inbound job downloads the stored file from the gateway, which works because the compose file sets MEDIA_DOWNLOAD_ENABLED=true so the gateway keeps files. If the gateway kept none the download returns 404 and the message is stored without a file.
The inbound job archives each downloaded file to ws/<workspaceId>/media/<messageId> in R2. Files over 25 MB are skipped. Voice notes are transcribed in the answer job (see Voice notes, groups and calling).
Outbound
- Text goes through
send-text, quoting the message being answered. Link previews are enabled only when the text contains a URL. - Voice notes go through
send-audiowithptt: trueand mimetypeaudio/ogg; codecs=opus. If rendering or sending speech fails the text reply is sent instead. send-image,send-videoandsend-documentexist in the client but the assistant does not send files today.
Retention
Raw payloads and archived media contain customer content. Set an R2 lifecycle rule that matches your retention policy.