https://inkbox.ai/api/v1/whatsapp. Media belongs to the selected agent identity. A message accepts at most one media ID.
Upload an attachment
file field within the current whatsapp.max_media_bytes limit. Its initial fallback is 5 MiB; 20 MiB is the transport ceiling, not the default allowance. Use the agent_identity_id query parameter when selecting the agent with an organization-wide credential. Returns 201 with a flat media object. Uploading does not grant permission to message a recipient: before their first WhatsApp reply, sending media also requires whatsapp.pre_reply_media_allowed (initially 0). The direct-message send examples below assume a recipient who has replied or an organization policy that permits opening media. Group attachments require an existing conversation where another participant’s message has been received; uploading a file does not satisfy that requirement.
Media in existing groups
Use the same upload endpoint, then sendmedia_ids with the group’s conversation_id. Images, videos, audio, and documents are supported. GIF playback requires SDK or CLI 0.7.29 or later and also works in eligible direct conversations. If animation is not available on the connection, a gif_playback send returns 409 whatsapp_capability_not_ready without admitting a message. To show an MP4 video as an animation, set gif_playback: true (gif_playback=True in Python, gifPlayback: true in TypeScript, or --gif-playback in the CLI). Upload the MP4 with MIME type video/mp4 (content_type="video/mp4", contentType: "video/mp4", or --content-type video/mp4). Other content types return 422; the option does not convert arbitrary files. Preserve the flag with the original request when retrying. A raw GIF file remains a file attachment.
Add reply_to_message_id to quote a message in that same group. Keep the original media ID and idempotency key when recovering a send.
Get current media access
404.
Download the URL without forwarding your Inkbox API key to the download host.
Python
TypeScript
Media object
Keep filename, type, size and status even when bytes are unavailable. A pending or unavailable attachment is not an empty text message and should not silently disappear from an incoming-message workflow.

