OmniSocialsOmniSocials
DocumentationAPI reference
Help centerSupport
  • Documentation
  • API reference
Developers
  • Quickstart
  • API reference
  • SDKs
  • MCP server
  • CLI
For AI agents
  • Docs for AI agents
  • llms.txt
  • OpenAPI spec
  • Postman collection
Product
  • OmniSocials
  • Pricing
  • Changelog
  • Help center
Company
  • Support
  • Privacy policy
  • Terms of service

© 2026 OmniSocials

OmniSocials on GitHubOmniSocials on XOmniSocials on LinkedIn
Information
Posts
    List postsgetList live platform postsgetGet a postgetDelete a postdeleteUpdate a postpatchCreate a postpostCreate and publish postpostPublish a post nowpostRetry failed postpostApprove a postpostReject a postpostGet approval reviewget
Media
    List mediagetGet a media itemgetDelete a media itemdeleteRename or move mediapatchUpload a filepostUpload from base64postUpload from a URLpostCreate an upload URLpostSplit a PDF into pagespostCheck media limitspostUpload with a tokenpost
Folders
    List foldersgetCreate a folderpostDelete a folderdeleteRename or move a folderpatch
Hashtag Sets
    List hashtag setsgetCreate a hashtag setpostGet a hashtag setgetDelete a hashtag setdeleteUpdate a hashtag setpatch
Accounts
    List accountsgetGet an accountget
Analytics
    Get bulk post analyticsgetGet post analyticsgetGet analytics overviewgetGet account analyticsgetGet best posting timesget
Approvals
    List approval workflowsget
Webhooks
    List webhooksgetCreate a webhookpostGet a webhookgetDelete a webhookdeleteUpdate a webhookpatchRotate webhook secretpost
Locations
    Search locationsgetValidate a locationget
Audio
    Search Instagram audioget
Pinterest
    List product PinsgetCheck a product Pinget
Inbox
    List conversationsgetList messagesgetMark conversation readpostReply to a conversationpostHide or unhide a commentpostDelete a commentdeleteGet next conversationget
Automations
    List automationsgetCreate an automationpostGet an automationgetDelete an automationdeleteUpdate an automationpatchList automation eventsget
Schemas
OmniSocials API
OmniSocials API

Media

Download schema

Upload and manage images, video, and PDFs (up to 100 MB per upload, 1 GB from a URL) for use in posts, reels, stories, and PDF carousels.


List media

GET
https://api.omnisocials.com/v1
/media

List media › query Parameters

limit
​integer · max: 100
Default: 20
offset
​integer
Default: 0
search
​string

Case-insensitive search across the media name and filename. Use this to find an existing asset by name instead of re-uploading it.

Example: autumn
folder_id
​string

Return only media in this folder. Use "root" for unfiled items at the top level.

Example: 12

List media › Responses

200

List of media files

​Media[]
​Pagination
GET/media
curl "https://api.omnisocials.com/v1/media?limit=20" \ -H "Authorization: Bearer $OMNISOCIALS_API_KEY"
Example Responses
{ "data": [ { "id": "482913", "url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/1792573200000-k3j9xq_0c9e6b1a-2f4d-4b8e-a7c3-9d1e5f6a2b70.jpg", "thumbnail_url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/thumbnails/1792573200000-k3j9xq_0c9e6b1a-2f4d-4b8e-a7c3-9d1e5f6a2b70_thumbnail.webp", "type": "image", "name": "autumn-menu-hero", "folder_id": "12", "filename": "0c9e6b1a-2f4d-4b8e-a7c3-9d1e5f6a2b70.jpg", "size": "2.50 MB", "status": "ready", "created_at": "2026-10-20T14:32:10.000Z", "pdf": { "id": "9a7e3c1f-5b2d-4e8a-b6c4-1f3d5e7a9b20", "name": "deck.pdf", "url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/1792573200000-p7m2wd_9a7e3c1f-5b2d-4e8a-b6c4-1f3d5e7a9b20.pdf", "page": 1, "total_pages": 8, "rendered_pages": 8, "truncated": false, "pages": [ { "url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/1792573200000-p7m2wd_4c2e8a6f-1d3b-4f5a-9e7c-0b2d4f6a8c13.png", "width": 1080, "height": 1350 } ] } } ], "pagination": { "total": 42, "limit": 20, "offset": 0, "has_more": true } }
json
application/json

Get a media item

GET
https://api.omnisocials.com/v1
/media/{id}

Fetch one media item by id. Use this to poll a large URL upload until its status becomes ready (or failed).

Get a media item › path Parameters

id
​string · required

Media id returned by an upload endpoint.

Example: 482913

Get a media item › Responses

The media item

​Media
GET/media/{id}
curl "https://api.omnisocials.com/v1/media/67890" \ -H "Authorization: Bearer $OMNISOCIALS_API_KEY"
Example Responses
{ "data": { "id": "482913", "url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/1792573200000-k3j9xq_0c9e6b1a-2f4d-4b8e-a7c3-9d1e5f6a2b70.jpg", "thumbnail_url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/thumbnails/1792573200000-k3j9xq_0c9e6b1a-2f4d-4b8e-a7c3-9d1e5f6a2b70_thumbnail.webp", "type": "image", "name": "autumn-menu-hero", "folder_id": "12", "filename": "0c9e6b1a-2f4d-4b8e-a7c3-9d1e5f6a2b70.jpg", "size": "2.50 MB", "status": "ready", "created_at": "2026-10-20T14:32:10.000Z", "pdf": { "id": "9a7e3c1f-5b2d-4e8a-b6c4-1f3d5e7a9b20", "name": "deck.pdf", "url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/1792573200000-p7m2wd_9a7e3c1f-5b2d-4e8a-b6c4-1f3d5e7a9b20.pdf", "page": 1, "total_pages": 8, "rendered_pages": 8, "truncated": false, "pages": [ { "url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/1792573200000-p7m2wd_4c2e8a6f-1d3b-4f5a-9e7c-0b2d4f6a8c13.png", "width": 1080, "height": 1350 } ] } } }
json
application/json

Delete a media item

DELETE
https://api.omnisocials.com/v1
/media/{id}

Delete a media item › path Parameters

id
​string · required

Delete a media item › Responses

Media deleted

No data returned
DELETE/media/{id}
curl -X DELETE "https://api.omnisocials.com/v1/media/67890" \ -H "Authorization: Bearer $OMNISOCIALS_API_KEY"
Example Responses
No example specified for this content type

Rename or move media

PATCH
https://api.omnisocials.com/v1
/media/{id}

Update the human-readable name and/or move a media file into a folder. Lets you label assets so they can be found later by name instead of re-uploading. Only the fields you send are changed.

Rename or move media › path Parameters

id
​string · required

Rename or move media › Request Body

name
​string

Human-readable label (e.g. "pp-play5get50"). Send an empty string to clear it.

Example: autumn-menu-hero
folder_id
​string | null

Move the file into this folder. Send null to move it to the root ("All media").

Example: 12

Rename or move media › Responses

Media updated

​Media
PATCH/media/{id}
curl -X PATCH "https://api.omnisocials.com/v1/media/67890" \ -H "Authorization: Bearer $OMNISOCIALS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"name": "hero-v2"}'
Example Request Body
{ "name": "autumn-menu-hero", "folder_id": "12" }
json
Example Responses
{ "data": { "id": "482913", "url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/1792573200000-k3j9xq_0c9e6b1a-2f4d-4b8e-a7c3-9d1e5f6a2b70.jpg", "thumbnail_url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/thumbnails/1792573200000-k3j9xq_0c9e6b1a-2f4d-4b8e-a7c3-9d1e5f6a2b70_thumbnail.webp", "type": "image", "name": "autumn-menu-hero", "folder_id": "12", "filename": "0c9e6b1a-2f4d-4b8e-a7c3-9d1e5f6a2b70.jpg", "size": "2.50 MB", "status": "ready", "created_at": "2026-10-20T14:32:10.000Z", "pdf": { "id": "9a7e3c1f-5b2d-4e8a-b6c4-1f3d5e7a9b20", "name": "deck.pdf", "url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/1792573200000-p7m2wd_9a7e3c1f-5b2d-4e8a-b6c4-1f3d5e7a9b20.pdf", "page": 1, "total_pages": 8, "rendered_pages": 8, "truncated": false, "pages": [ { "url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/1792573200000-p7m2wd_4c2e8a6f-1d3b-4f5a-9e7c-0b2d4f6a8c13.png", "width": 1080, "height": 1350 } ] } } }
json
application/json

Upload a file

POST
https://api.omnisocials.com/v1
/media/upload

Upload an image or video, or a PDF. A PDF is rasterized into one image slide per page and returned as a carousel (see PdfUploadResult): pass all of media_ids to POST /posts. On LinkedIn the slides post as a native swipeable document; on Instagram, TikTok, Threads and Pinterest as an image carousel. PDFs are capped at 20 pages.

Upload a file › Request Body

file
​string · required

The file to upload: an image, video, or PDF (max 100MB). Per-platform caps apply at scheduling: Mastodon 99MB, Bluesky 100MB, X 512MB (free tier), Threads/Reddit 1GB, Pinterest 2GB, Facebook/Instagram/TikTok 4GB, LinkedIn 5GB, YouTube 256GB. A PDF is split into image slides (max 20 pages) and returned as a carousel.

name
​string

Optional human-readable label (e.g. "pp-play5get50") so the asset is findable by name later. If the same bytes were already uploaded, the existing file is returned and labelled with this name.

Example: autumn-menu-hero
folder
​string

Optional folder name to file the asset under (created at the top level if it does not exist). Use folder_id instead to target an existing folder.

Example: Autumn campaign
folder_id
​string

Optional id of an existing folder to file the asset under.

Example: 12
pdf_mode
​string · enum

PDF uploads only. slides (default): one image media item per page, one id each; pass ALL of media_ids to POST /posts. document: ONE media item for the whole PDF (type document, its pages in pdf.pages); pass its single id in media_ids and the post gets every page, in order. Both modes keep the original file, which LinkedIn receives when the pages are posted unchanged.

Enum values:
slides
document
Default: slides

Upload a file › Responses

File uploaded successfully. For an image or video the body has a single data (Media). For a PDF the body is a PdfUploadResult with slides + media_ids for the whole carousel.

oneOf
Exactly one variant must match.

Decision Table

VariantMatching Criteria
type = object
type = object
Properties for Variant 1:
​Media
​MediaCompatibility

Whether the file fits the platforms connected to your workspace. compatible is true when no connected platform would reject it.

message
​string
POST/media/upload
curl -X POST "https://api.omnisocials.com/v1/media/upload" \ -H "Authorization: Bearer $OMNISOCIALS_API_KEY" \ -F "file=@./photo.jpg"
Example Request Body
{ "file": "file", "name": "autumn-menu-hero", "folder": "Autumn campaign", "folder_id": "12", "pdf_mode": "slides" }
text
Example Responses
{ "data": { "id": "482913", "url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/1792573200000-k3j9xq_0c9e6b1a-2f4d-4b8e-a7c3-9d1e5f6a2b70.jpg", "thumbnail_url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/thumbnails/1792573200000-k3j9xq_0c9e6b1a-2f4d-4b8e-a7c3-9d1e5f6a2b70_thumbnail.webp", "type": "image", "name": "autumn-menu-hero", "folder_id": "12", "filename": "0c9e6b1a-2f4d-4b8e-a7c3-9d1e5f6a2b70.jpg", "size": "2.50 MB", "status": "ready", "created_at": "2026-10-20T14:32:10.000Z", "pdf": { "id": "9a7e3c1f-5b2d-4e8a-b6c4-1f3d5e7a9b20", "name": "deck.pdf", "url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/1792573200000-p7m2wd_9a7e3c1f-5b2d-4e8a-b6c4-1f3d5e7a9b20.pdf", "page": 1, "total_pages": 8, "rendered_pages": 8, "truncated": false, "pages": [ { "url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/1792573200000-p7m2wd_4c2e8a6f-1d3b-4f5a-9e7c-0b2d4f6a8c13.png", "width": 1080, "height": 1350 } ] } }, "compatibility": { "compatible": false, "warnings": [ { "platform": "instagram", "display_name": "Instagram", "reasons": [ "max 300 MB" ] } ], "summary": "This file (450 MB) won't post to: Instagram (max 300 MB)." }, "message": "File uploaded successfully. Use the 'id' in your post request." }
json
application/json

Upload from base64

POST
https://api.omnisocials.com/v1
/media/upload-from-base64

Upload a file from base64-encoded data. Useful for MCP integrations where the AI has image data but no URL. Accepts images, video, and PDF (a PDF is split into image slides and returned as a carousel, see PdfUploadResult; pass all of media_ids to POST /posts). Max 100MB after decoding; per-platform caps apply at scheduling (Mastodon 99MB, Bluesky 100MB, X 512MB free tier, Threads/Reddit 1GB, Pinterest 2GB, Facebook/Instagram/TikTok 4GB, LinkedIn 5GB, YouTube 256GB).

Upload from base64 › Request Body

data
​string · required

Base64-encoded file data (without data URI prefix)

mime_type
​string · required

MIME type of the file (e.g. image/jpeg, image/png, application/pdf)

Example: image/jpeg
filename
​string

Optional filename

Example: autumn-menu.jpg
name
​string

Optional human-readable label so the asset is findable by name later (e.g. "pp-play5get50").

Example: autumn-menu-hero
folder
​string

Optional folder name to file the asset under (created at the top level if missing).

Example: Autumn campaign
folder_id
​string

Optional id of an existing folder to file the asset under.

Example: 12
pdf_mode
​string · enum

PDF uploads only. slides (default): one image media item per page, one id each; pass ALL of media_ids to POST /posts. document: ONE media item for the whole PDF (type document, its pages in pdf.pages); pass its single id in media_ids and the post gets every page, in order. Both modes keep the original file, which LinkedIn receives when the pages are posted unchanged.

Enum values:
slides
document
Default: slides

Upload from base64 › Responses

File uploaded successfully. A single data (Media) for image/video; a PdfUploadResult (slides + media_ids) for a PDF.

oneOf
Exactly one variant must match.

Decision Table

VariantMatching Criteria
type = object
type = object
Properties for Variant 1:
​Media
POST/media/upload-from-base64
DATA=$(base64 < chart.png | tr -d '\n') curl -X POST "https://api.omnisocials.com/v1/media/upload-from-base64" \ -H "Authorization: Bearer $OMNISOCIALS_API_KEY" \ -H "Content-Type: application/json" \ -d "{\"data\": \"$DATA\", \"mime_type\": \"image/png\", \"filename\": \"chart.png\"}"
Example Request Body
{ "data": "data", "mime_type": "image/jpeg", "filename": "autumn-menu.jpg", "name": "autumn-menu-hero", "folder": "Autumn campaign", "folder_id": "12", "pdf_mode": "slides" }
json
Example Responses
{ "data": { "id": "482913", "url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/1792573200000-k3j9xq_0c9e6b1a-2f4d-4b8e-a7c3-9d1e5f6a2b70.jpg", "thumbnail_url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/thumbnails/1792573200000-k3j9xq_0c9e6b1a-2f4d-4b8e-a7c3-9d1e5f6a2b70_thumbnail.webp", "type": "image", "name": "autumn-menu-hero", "folder_id": "12", "filename": "0c9e6b1a-2f4d-4b8e-a7c3-9d1e5f6a2b70.jpg", "size": "2.50 MB", "status": "ready", "created_at": "2026-10-20T14:32:10.000Z", "pdf": { "id": "9a7e3c1f-5b2d-4e8a-b6c4-1f3d5e7a9b20", "name": "deck.pdf", "url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/1792573200000-p7m2wd_9a7e3c1f-5b2d-4e8a-b6c4-1f3d5e7a9b20.pdf", "page": 1, "total_pages": 8, "rendered_pages": 8, "truncated": false, "pages": [ { "url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/1792573200000-p7m2wd_4c2e8a6f-1d3b-4f5a-9e7c-0b2d4f6a8c13.png", "width": 1080, "height": 1350 } ] } } }
json
application/json

Upload from a URL

POST
https://api.omnisocials.com/v1
/media/upload-from-url

Download a file from a URL and upload it to your media library. It is the recommended path for MCP/programmatic uploads. Supports videos up to 1 GB: files over 100 MB are streamed to storage by a background worker and the response returns 202 with the item in processing state (poll GET /media/{id} until status is ready). Files at or under 100 MB upload inline and return 201 ready. A PDF URL is split into image slides and returned as a carousel (see PdfUploadResult; pass all of media_ids to POST /posts). Every response also includes a compatibility block listing any connected platforms that would reject the file by size or format.

Upload from a URL › Request Body

url
​string · uri · required

HTTP or HTTPS URL of the file to download (max 1 GB for video; per-platform caps apply at scheduling).

Example: https://example.com/video.mp4
filename
​string

Optional filename override

Example: autumn-reel.mp4
name
​string

Optional human-readable label so the asset is findable by name later (e.g. "pp-play5get50").

Example: autumn-menu-hero
folder
​string

Optional folder name to file the asset under (created at the top level if missing).

Example: Autumn campaign
folder_id
​string

Optional id of an existing folder to file the asset under.

Example: 12
pdf_mode
​string · enum

PDF uploads only. slides (default): one image media item per page, one id each; pass ALL of media_ids to POST /posts. document: ONE media item for the whole PDF (type document, its pages in pdf.pages); pass its single id in media_ids and the post gets every page, in order. Both modes keep the original file, which LinkedIn receives when the pages are posted unchanged.

Enum values:
slides
document
Default: slides

Upload from a URL › Responses

File uploaded inline (<= 100 MB) and ready to use. A single data (Media) for image/video; a PdfUploadResult (slides + media_ids) for a PDF.

oneOf
Exactly one variant must match.

Decision Table

VariantMatching Criteria
type = object
type = object
Properties for Variant 1:
​Media
​MediaCompatibility

Whether the file fits the platforms connected to your workspace. compatible is true when no connected platform would reject it.

message
​string
POST/media/upload-from-url
curl -X POST "https://api.omnisocials.com/v1/media/upload-from-url" \ -H "Authorization: Bearer $OMNISOCIALS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com/launch-video.mp4"}'
Example Request Body
{ "url": "https://example.com/video.mp4", "filename": "autumn-reel.mp4", "name": "autumn-menu-hero", "folder": "Autumn campaign", "folder_id": "12", "pdf_mode": "slides" }
json
Example Responses
{ "data": { "id": "482913", "url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/1792573200000-k3j9xq_0c9e6b1a-2f4d-4b8e-a7c3-9d1e5f6a2b70.jpg", "thumbnail_url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/thumbnails/1792573200000-k3j9xq_0c9e6b1a-2f4d-4b8e-a7c3-9d1e5f6a2b70_thumbnail.webp", "type": "image", "name": "autumn-menu-hero", "folder_id": "12", "filename": "0c9e6b1a-2f4d-4b8e-a7c3-9d1e5f6a2b70.jpg", "size": "2.50 MB", "status": "ready", "created_at": "2026-10-20T14:32:10.000Z", "pdf": { "id": "9a7e3c1f-5b2d-4e8a-b6c4-1f3d5e7a9b20", "name": "deck.pdf", "url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/1792573200000-p7m2wd_9a7e3c1f-5b2d-4e8a-b6c4-1f3d5e7a9b20.pdf", "page": 1, "total_pages": 8, "rendered_pages": 8, "truncated": false, "pages": [ { "url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/1792573200000-p7m2wd_4c2e8a6f-1d3b-4f5a-9e7c-0b2d4f6a8c13.png", "width": 1080, "height": 1350 } ] } }, "compatibility": { "compatible": false, "warnings": [ { "platform": "instagram", "display_name": "Instagram", "reasons": [ "max 300 MB" ] } ], "summary": "This file (450 MB) won't post to: Instagram (max 300 MB)." }, "message": "File uploaded successfully. Use the 'id' in your post request." }
json
application/json

Create an upload URL

POST
https://api.omnisocials.com/v1
/media/create-upload-url

Create a one-time upload URL, for code that cannot send the API key with the upload, such as an AI assistant's code sandbox. POST the file as multipart file to upload_url (POST /media/upload-by-token) within 10 minutes; the URL works once. The MCP server's upload tool uses this flow. Requires the media:write scope.

Create an upload URL › Responses

The one-time upload URL and how to use it.

upload_url
​string

POST the file here (POST /media/upload-by-token with the token in the query).

Example: https://api.omnisocials.com/v1/media/upload-by-token?upload_token=9f2c4e1ab07d
upload_token
​string

The one-time token (64 hex characters), also part of upload_url.

Example: 9f2c4e1ab07d
expires_in_seconds
​integer
method
​string
content_type
​string
instructions
​string

Upload commands (curl and Python) written for an AI assistant's code sandbox.

hint
​string

What an AI assistant should tell the user when its sandbox blocks the upload host.

POST/media/create-upload-url
curl -X POST "https://api.omnisocials.com/v1/media/create-upload-url" \ -H "Authorization: Bearer $OMNISOCIALS_API_KEY"
Example Responses
{ "upload_url": "https://api.omnisocials.com/v1/media/upload-by-token?upload_token=9f2c4e1ab07d", "upload_token": "9f2c4e1ab07d", "expires_in_seconds": 600, "method": "POST", "content_type": "multipart/form-data", "instructions": "instructions", "hint": "hint" }
json
application/json

Split a PDF into pages

POST
https://api.omnisocials.com/v1
/media/{id}/split

For a media item of type document (a PDF kept as one item): creates one image media item per rendered page, in page order, each a copy of the page image and each carrying pdf with its page number. The document item stays. Use it when a single page is needed as a normal image. A full, ordered set of the slides still publishes the original PDF on LinkedIn. Requires media:write.

Split a PDF into pages › path Parameters

id
​string · required

Split a PDF into pages › Responses

The new slide items, in page order

​Media[]
media_ids
​string[]
POST/media/{id}/split
curl -X POST "https://api.omnisocials.com/v1/media/67890/split" \ -H "Authorization: Bearer $OMNISOCIALS_API_KEY"
Example Responses
{ "data": [ { "id": "482913", "url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/1792573200000-k3j9xq_0c9e6b1a-2f4d-4b8e-a7c3-9d1e5f6a2b70.jpg", "thumbnail_url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/thumbnails/1792573200000-k3j9xq_0c9e6b1a-2f4d-4b8e-a7c3-9d1e5f6a2b70_thumbnail.webp", "type": "image", "name": "autumn-menu-hero", "folder_id": "12", "filename": "0c9e6b1a-2f4d-4b8e-a7c3-9d1e5f6a2b70.jpg", "size": "2.50 MB", "status": "ready", "created_at": "2026-10-20T14:32:10.000Z", "pdf": { "id": "9a7e3c1f-5b2d-4e8a-b6c4-1f3d5e7a9b20", "name": "deck.pdf", "url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/1792573200000-p7m2wd_9a7e3c1f-5b2d-4e8a-b6c4-1f3d5e7a9b20.pdf", "page": 1, "total_pages": 8, "rendered_pages": 8, "truncated": false, "pages": [ { "url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/1792573200000-p7m2wd_4c2e8a6f-1d3b-4f5a-9e7c-0b2d4f6a8c13.png", "width": 1080, "height": 1350 } ] } } ], "media_ids": [ "string" ] }
json
application/json

Check media limits

POST
https://api.omnisocials.com/v1
/media/check

Preflight a file against the platforms connected to your workspace and find out which (if any) would reject it by size or format, before you upload or post. Provide ONE of: a public url (we read its size/type via a HEAD request), an existing media_id, or an explicit size_bytes + mime. Use this to warn the user ("this 995 MB video won't post to Instagram") and confirm before uploading.

Check media limits › Request Body

url
​string

Public URL of the file to check (HEAD-probed for size + type).

Example: https://example.com/video.mp4
media_id
​string

Id of an already-uploaded library item to check.

Example: 482913
size_bytes
​integer

File size in bytes (use with mime when you already know them).

Example: 471859200
mime
​string

MIME type, e.g. "video/mp4" (use with size_bytes).

Example: video/mp4

Check media limits › Responses

Compatibility result

​object
connected_platforms
​string[]
compatible
​boolean

true when no connected platform would reject the file.

Example: false
​object[]
summary
​string | null

One-line human summary, or null when fully compatible.

Example: This file (450 MB) won't post to: Instagram (max 300 MB).
​object[]

How each connected channel with a fit rule shows this IMAGE as a feed post (sizes known for library images). fits: false = the ratio is outside the window the channel shows uncropped; default_action is what a post create does (crop = Instagram crops it to target around the subject; keep = Pinterest sends it as it is and reports it) unless the post's media_fit says otherwise. Empty for videos and unknown sizes.

POST/media/check
curl -X POST "https://api.omnisocials.com/v1/media/check" \ -H "Authorization: Bearer $OMNISOCIALS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com/launch-video.mp4"}'
Example Request Body
{ "url": "https://example.com/video.mp4", "media_id": "482913", "size_bytes": 471859200, "mime": "video/mp4" }
json
Example Responses
{ "file": { "size_bytes": 471859200, "mime": "video/mp4", "size_known": true }, "connected_platforms": [ "instagram" ], "compatible": false, "warnings": [ { "platform": "instagram", "display_name": "Instagram", "reasons": [ "max 300 MB" ] } ], "summary": "This file (450 MB) won't post to: Instagram (max 300 MB).", "fit": [ { "platform": "instagram", "display_name": "Instagram", "fits": false, "ratio": "9:16", "shown": "whole", "target": "4:5", "default_action": "crop", "message": "message" } ] }
json
application/json

Upload with a token

POST
https://api.omnisocials.com/v1
/media/upload-by-token

Upload a file to a one-time URL from POST /media/create-upload-url. No API key: the upload_token query parameter is the auth, valid once for 10 minutes. Takes the same files as POST /media/upload (images, video, PDF; up to 100 MB). If storage is briefly down (503), the token stays valid and the same request can be sent again.

Upload with a token › query Parameters

upload_token
​string · required

The token from POST /media/create-upload-url.

Example: 9f2c4e1ab07d

Upload with a token › Request Body

file
​string · required

An image, video or PDF, up to 100 MB.

name
​string

Optional label so the file is findable by name later.

Example: autumn-menu-hero
pdf_mode
​string · enum

PDF uploads only, as on POST /media/upload.

Enum values:
slides
document
Default: slides

Upload with a token › Responses

The stored file. For an image or video, data is the media item. For a PDF the body is a PdfUploadResult.

oneOf
Exactly one variant must match.

Decision Table

VariantMatching Criteria
type = object
type = object
Properties for Variant 1:
id
​string
​Media
status
​string
POST/media/upload-by-token
curl -X POST "https://api.omnisocials.com/v1/media/upload-by-token?upload_token=9f2c4e1ab07d" \ -F "file=@./photo.jpg"
Example Request Body
{ "file": "file", "name": "autumn-menu-hero", "pdf_mode": "slides" }
text
Example Responses
{ "id": "123", "data": { "id": "482913", "url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/1792573200000-k3j9xq_0c9e6b1a-2f4d-4b8e-a7c3-9d1e5f6a2b70.jpg", "thumbnail_url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/thumbnails/1792573200000-k3j9xq_0c9e6b1a-2f4d-4b8e-a7c3-9d1e5f6a2b70_thumbnail.webp", "type": "image", "name": "autumn-menu-hero", "folder_id": "12", "filename": "0c9e6b1a-2f4d-4b8e-a7c3-9d1e5f6a2b70.jpg", "size": "2.50 MB", "status": "ready", "created_at": "2026-10-20T14:32:10.000Z", "pdf": { "id": "9a7e3c1f-5b2d-4e8a-b6c4-1f3d5e7a9b20", "name": "deck.pdf", "url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/1792573200000-p7m2wd_9a7e3c1f-5b2d-4e8a-b6c4-1f3d5e7a9b20.pdf", "page": 1, "total_pages": 8, "rendered_pages": 8, "truncated": false, "pages": [ { "url": "https://cdn.omnisocials.com/file/library-omnisocials/312a658f-2b45-4289-b240-890807221a74/library/1792573200000-p7m2wd_4c2e8a6f-1d3b-4f5a-9e7c-0b2d4f6a8c13.png", "width": 1080, "height": 1350 } ] } }, "status": "ready" }
json
application/json

PostsFolders