Skip to Content
WhatsApp Agent Docs
OpenWA reference

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-audio with ptt: true and mimetype audio/ogg; codecs=opus. If rendering or sending speech fails the text reply is sent instead.
  • send-image, send-video and send-document exist 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.

On this page