complete_media_upload
posts:write
Finish an upload started with create_media_upload, once the file has been PUT to uploadUrl. Pass the key, kind and contentType you used. For MP4 and MOV video the length and size are read from the file, so durationSeconds, width and height are only needed for WebM.
Returns asset: pass it as media to create_draft_post or update_post to post it. Video goes to X, LinkedIn, Facebook Pages, Instagram (as a Reel), TikTok and YouTube; Reddit is text only.
Input
assetIdstring (uuid)requiredkeystringrequiredkindstringrequiredone of
image,videocontentTypestringrequiredmin length 1
durationSecondsnumberwidthintegerheightinteger
Permission
Needs the posts:write scope: create drafts. It changes your workspace, so clients may ask you to confirm each call.
Example call
Your assistant sends this for you. It is shown so you can see the shape of a call, with placeholder values for the required fields.
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "complete_media_upload", "arguments": { "assetId": "3f8e2c1a-0000-4000-8000-000000000000", "key": "string", "kind": "image", "contentType": "string" } }}Same action over the REST API
The tool runs POST /v1/orgs/{orgId}/marketing/media/{assetId}/complete as the signed-in user, with the same validation, approval rules and limits. See it in the Media API reference.