---
title: "Fetch media from a public URL"
method: POST
path: "/api/v1/media/upload-from-url"
tags: ["Media"]
---

# Fetch media from a public URL

`POST /api/v1/media/upload-from-url`

## Request

- Base URL: `https://www.poster.ly`
- URL: `https://www.poster.ly/api/v1/media/upload-from-url`
- Auth: HTTP bearer

Fetch an image or video from a public HTTP(S) URL into posterly storage. The fetcher blocks localhost, private IPs, embedded credentials, and redirect chains that resolve to private networks.

## Request body

- MediaUploadFromUrlRequest
  - `url` string, uri, required
  - `filename` string, nullable
  - `content_type` string, nullable
  - `workspace_id` string: Optional. The workspace this call acts in and whose plan and credits it uses (from whoami). Needed only when the key can act in several workspaces.

## Response `200`

Remote media uploaded successfully

- MediaUploadFromUrlResponse
  - `url` string, required
  - `path` string, required
  - `source_url` string, required
  - `content_type` string, required
  - `size` integer, required

## Other responses

- `400`: Validation error
- `401`: Invalid or missing API key
- `429`: Too many requests

---

[API](https://skmtc.dev/poster/apis/posterly-api.md) · [All operations](https://skmtc.dev/poster/apis/posterly-api/llms.txt) · [OpenAPI document](https://skmtc.dev/poster/apis/posterly-api/revisions/60be02a61f95?raw)
