> ## Documentation Index
> Fetch the complete documentation index at: https://docs.callkaro.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Send Image, Document, Video and Audio

Four function types that let the agent send a file: a product photo, a PDF price list, a demo video, a recorded voice note.

<Note>
  WhatsApp agents only.
</Note>

## Fields

All four share the same shape.

| Field             | Description                                                                        |
| ----------------- | ---------------------------------------------------------------------------------- |
| **Function Name** | e.g. `send_price_list`, `send_product_photo`, `send_demo_video`, `send_voice_note` |
| **Description**   | **Both** where the file comes from and when to send it                             |
| **Test Send**     | Send the file to a phone number to check it before going live                      |

The per-type prompts on the form spell out what the description needs to cover:

| Type              | The description should say                                                                                    |
| ----------------- | ------------------------------------------------------------------------------------------------------------- |
| **Send Image**    | When to send an image, and how the agent gets the image URL — a fixed link, or the output of another function |
| **Send Document** | When to send a document, and how the agent gets the file URL **and filename**                                 |
| **Send Video**    | When to send a video, and how the agent gets the video URL                                                    |
| **Send Audio**    | When to send audio, and how the agent gets the audio URL                                                      |

## Fixed file or dynamic file

Both work, and the difference lives entirely in the description.

**Fixed** — the same file every time:

> Send our standard price list when the customer asks about pricing. The document is at [https://example.com/files/price-list-2026.pdf](https://example.com/files/price-list-2026.pdf), filename "Acme Price List 2026.pdf".

**Dynamic** — a file that depends on the conversation:

> Send the customer's invoice. Get the URL from the `get_invoice_link` function using their order id. Do not call this before the order id is confirmed.

<Warning>
  The URL must be publicly reachable. A link behind a login, a signed URL that has expired, or a file on an internal host will fail at send time — and the customer sees a conversation that stalls with no explanation.
</Warning>

## Test Send

Every media function has one. Enter a test phone number and send the file to yourself:

* The image renders, and is the right one
* The document opens, and its filename reads sensibly to a customer
* The video plays
* The audio is audible and the right recording

<Tip>
  Re-run the Test Send whenever the file changes. A URL that used to work is the most common cause of a media function that quietly stopped sending.
</Tip>

## Related

<CardGroup cols={2}>
  <Card title="Functions overview" icon="code" href="/chat-agents/functions/overview">
    All function types
  </Card>

  <Card title="Custom functions" icon="square-code" href="/chat-agents/functions/custom-functions">
    Generating a file URL to feed these
  </Card>
</CardGroup>
