---
title: "Media handling"
description: "How Dravo ingests images and video, why you should ingest before publishing, and the format limits."
section: "Core concepts"
url: https://dravo.dev/docs/concepts/media
---
# Media handling

## Ingest then publish

Dravo publishes media by URL. The recommended flow is to ingest a remote file
once, then reference the stable URL Dravo returns in your publish call.

```bash
curl -X POST https://api.dravo.dev/v1/media \
  -H "Authorization: Bearer $DRAVO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "source_url": "https://example.com/promo.jpg" }'
```

```json
{
  "public_url": "https://cdn.dravo.dev/u/abc/2f1c....jpg",
  "content_type": "image/jpeg",
  "size_bytes": 84211
}
```

Then publish:

```json
{
  "account_ids": ["acc_8f2c1d"],
  "text": "New drop.",
  "media_urls": ["https://cdn.dravo.dev/u/abc/2f1c....jpg"]
}
```

## Why ingest first

You can pass any public URL in `media_urls`, but ingesting first is more
reliable:

- Platforms fetch the URL themselves; a stable, fast, always available URL
  avoids transient fetch failures at publish time.
- Some networks (for example TikTok with PULL_FROM_URL) require the source
  domain to be verified. Serving from Dravo storage sidesteps per customer
  domain verification for those flows.
- You validate the file once (size and type) instead of discovering a problem
  during delivery.

## Limits and formats

| Constraint | Value |
| --- | --- |
| Max file size | 100 MB |
| Image types | jpeg, png, webp, gif |
| Video types | mp4, quicktime (mov), webm |

Requests that exceed the size return `413`, and unsupported content types return
`415`. See [POST /v1/media](/docs/api/media) for the full error list.

## Per network rules

Each platform adds its own constraints on top (aspect ratio, duration, codecs,
how many items per post). The current MVP publishes one media item per post.
Check the [per network notes](/docs/networks/instagram) for the exact rules,
for example Instagram requiring JPEG for images and MP4 or MOV for Reels.
