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

# Upload media

Use Kavenio media endpoints to upload assets once and reuse their public URLs in
posts, ads, and supported platform-management routes.

## Presign an upload

```bash theme={null}
kavenio media presign \
  --file-name storefront.jpg \
  --content-type image/jpeg
```

The response includes an upload URL and a public media URL. Upload the bytes to
the upload URL, then use the public URL in post payloads.

## Upload base64 media

For smaller automated workflows, upload a base64 payload directly:

```bash theme={null}
kavenio media upload \
  --file-name storefront.jpg \
  --content-type image/jpeg \
  --base64-data "$(base64 -i storefront.jpg)"
```

## Validate media

```bash theme={null}
kavenio media validate --url https://cdn.example.com/storefront.jpg
```

Validation checks the public URL and platform limits before publish or provider
management calls.

## Google Business photos

Google Business image posts accept one JPEG or PNG image. You can also create
location photos from an already-uploaded public URL:

```bash theme={null}
kavenio accounts gmb-media-create \
  --account-id acc_123 \
  --source-url https://cdn.example.com/storefront.jpg \
  --category EXTERIOR
```

List or delete Google Business photos:

```bash theme={null}
kavenio accounts gmb-media-list --account-id acc_123 --page-size 25
kavenio accounts gmb-media-delete --account-id acc_123 --media-name locations/9281089117903930794/media/photo_123
```

Kavenio performs SSRF-safe validation before sending public media URLs to
Google.
