---
title: "Media"
description: "Ingest a remote image or video into Dravo storage for reliable publishing."
section: "API reference"
url: https://dravo.dev/docs/api/media
---
# Media

For the why and the format limits, see [media handling](/docs/concepts/media).

## Ingest media

Fetch a remote file into Dravo storage and get back a stable public URL to pass
in `media_urls`.

#### `POST /v1/media`

Ingest a remote image/video URL into Dravo storage and return a stable public URL to use in publish.

**Auth:** API key (`dra_…`) or dashboard JWT

| Field | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `source_url` | body | string (URL) | yes | Remote image or video to fetch. |

Request:

```json
{
  "source_url": "https://example.com/promo.jpg"
}
```

Response `201`: Media stored.

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

Errors:

- `400`: Could not fetch source_url.
- `413`: File exceeds 100 MB.
- `415`: Content-Type is not image/* or video/*.
- `502`: Upload to storage failed.
