Works with all AI agents

Connect your AI agent

Choose your assistant and connect in seconds.

Add to Claude

Works on every Claude plan, including free. Full Claude guide

  1. 1

    Add to Claude

    One click from Claude’s connector directory.

  2. 2

    Sign up or sign in

    Takes seconds, then you’re sent straight back.

  3. 3

    Ask Claude

    “Plan and schedule my posts for next week.”

POST/media/upload-from-url

Import media from a URL with the PostEverywhere API

Fetches the URL server-side and stores it — no presign/PUT/complete dance. **Images** (JPEG/PNG/GIF/WebP/HEIC/HEIF, max 25 MB) import synchronously: the response `media_id` is ready immediately. **Videos** (MP4 only, max 500 MB) import ASYNCHRONOUSLY: the response returns instantly with `media_status: "uploading"` while the file streams in server-side. Poll `GET /media/{id}` until `media_status` is `ready` (typically seconds), then attach via `media_ids`. If it becomes `failed`, the poll response's `error_message` states exactly why (too large, not actually an MP4, storage quota, source URL died). Oversize videos with a Content-Length return `413` up front; storage quota returns `403 storage_quota_exceeded`. 30 s fetch timeout to first byte, SSRF-guarded including redirects (no localhost/private addresses, `400 invalid_url`). Unreachable or slow URLs return `502`/`504` `fetch_failed`. Consumes the media upload quota.

Guide: Media requirements by platform

This endpoint accepts a JSON request body. See the media guide for a worked example.

Responses

  • 200Imported. Images return media_status "ready"; videos return "uploading" — poll `GET /media/{id}` until ready before attaching.
  • 400
  • 401
  • 402
  • 403
  • 413Downloaded file exceeds 25 MB
  • 415Video URL — use the 3-step upload flow instead
  • 429
  • 500
  • 502Source URL unreachable or upstream image service unavailable
  • 504Source URL timed out (over 30 s)

More in Media