Skip to main content
All media is stored on storage.postsiva.com. Upload returns a media_id (UUID) to pass to Posting endpoints as default_image_id, video_id, or carousel image_ids.

Base URL & auth

Use returned media_id in POST /unified/post/image, carousel, or video requests.

POST /media/upload

Single endpoint for image, video, or multiple images (carousel batch upload).

Form fields

Provide either file(s) or URL(s) — not empty.

Single image

Single video

Minimum 2 images, maximum 35 per request. Returns an array of ids.

Upload response (single)

Upload response (multiple)

With vs without platform

Platform-scoped uploads require the account to be connected via OAuth and X-Workspace-Id when the platform resolver needs workspace context.

Chunked upload (large videos)

For large files, use the storage chunk API instead of a single multipart POST.

Flow

POST /media/storage/init

JSON body:
Requires X-Workspace-Id.

POST /media/storage/chunk

Multipart form:

POST /media/storage/complete

JSON body: Returns same shape as direct upload: media_id, public_url, etc.

GET /media/storage/progress

GET /media

List media for the current workspace. Requires X-Workspace-Id.

GET /media/

Fetch one media record by UUID.

DELETE /media/

Delete one media item from DB and storage.

Bulk and filter delete

DELETE /media/filter removes all media matching the filter for the authenticated user. Use with caution.

Using media_id in posts

After upload, reference ids in Posting:
For carousel posts, pass 2–20 ids in image_ids (not the bulk upload endpoint count limit of 35 — posting validates 2–20).

MCP equivalent

The publish tool accepts default_image_id, default_image_url, video_id, and video_url. Upload media via REST first, then call MCP publish with the returned id. See MCP tools and Posting.
  • Posting — consume media_id in publish requests
  • OAuth — connect accounts before platform-scoped uploads
  • Authentication — workspace headers and API keys