Skip to main content
An asset is a file owned by a studio — an image, a video, or a document. An asset is uploaded first, then attached to a post.

Kinds and limits

Storage accepts all three kinds, but publishing is image-only today. Publishing a post with a video or document attached fails with publishing_video_not_supported_yet. Per-platform image ceilings still apply: 9 for LinkedIn, 4 for X.

Three ways to upload

Upload session

create_upload_session returns a browser link. The user drags files in — any size, no client-side plumbing. Best when a human is in the loop.

Presigned PUT

request_asset_upload returns a signed URL. PUT the raw bytes, then attach_asset. Best for large files and clients that can do HTTP.

Inline base64

upload_asset_inline takes the bytes in the tool call. Capped at 5 MB. Best when the client can’t make its own HTTP requests.

Lifecycle

An asset is pending until its bytes are confirmed, then ready. attach_asset does that confirmation: it checks the bytes actually landed, enforces the size limit, and enforces the per-post count. Only ready assets are published. detach_asset removes an asset from a post but keeps the stored file, so you can re-attach it to another post.

Expiry

Both are re-mintable — call the tool again for a fresh link.