Send an image, video, audio, document or sticker
send_mediaSend media by URL: an image, video, audio clip, document or sticker.
Set exactly one recipient: number, group_id, or contact_id.
url must still be reachable when the send happens: Turbo Notify
fetches the bytes from it. A copy is kept in the organization's own
object storage afterwards when that is configured, which never blocks
the send and is not required for one.
caption applies to image, video and document only; audio and
stickers have nowhere to render one. filename applies to document
only. Pairing either with a kind that cannot carry it is rejected here,
before anything is sent.
After sending, only the caption of an image, video or document can be
changed, with edit_media_caption. The file itself, an audio clip and a
sticker cannot be edited: delete_message is the only change for them.
mime_type is optional and does not change how the message is sent.
The type WhatsApp receives comes from what the URL's own server serves,
so point url at a file that server labels correctly.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Link to the file to send. It must still be reachable when the message goes out. | |
| kind | Yes | What the file is: image, video, audio, document or sticker. | |
| number | No | Recipient phone number in E.164 form, digits only, country code first (e.g. `5511999999999`). Set exactly one of `number`, `group_id` or `contact_id`. | |
| caption | No | Text shown with an image, video or document, up to 1024 characters. Audio and stickers cannot carry one. | |
| filename | No | The file name the recipient sees on a document, up to 255 characters. Documents only. | |
| group_id | No | Recipient group id (`grp_…`), from `list_groups`. A group id belongs to one number: an id from one inbox does not address the same group in another. Set exactly one of `number`, `group_id` or `contact_id`. Addressing a group needs a plan that includes group messaging: without it the call answers `payment_required: feature_not_available`, and retrying will not change that. | |
| mime_type | No | The media's MIME type, recorded alongside the message. It does not change how the file is sent: the type WhatsApp receives comes from what the URL's own server serves. Optional. | |
| contact_id | No | Recipient contact id (`ct_…`), from `list_contacts`. A contact id belongs to one number: an id from one inbox does not address the same person in another. Set exactly one of `number`, `group_id` or `contact_id`. | |
| number_alias | No | Which of the organization's WhatsApp numbers this acts on: `main`, the alias of an extra number, or the number's `id` (`num_…`), which stays the same when the alias is renamed. Call `list_numbers` to see them. Defaults to the main number. | main |
| idempotency_key | No | Any printable ASCII text you choose, 1 to 255 characters, for example the id of the event you are answering. Reusing it for the same number suppresses a duplicate if you retry. Without it, retrying after a timeout may deliver the message twice, and the recipient sees both. | |
| quoted_message_id | No | Quote an earlier message (`msg_…`) so it appears above yours. Do this only when your text depends on something said a while ago, yours or theirs; do not quote the message you are answering right now, send a normal message instead. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||