# Finalise a media upload with the PostEverywhere API **Source:** https://posteverywhere.ai/docs/api/complete-media-upload --- [🤖Connect ChatGPT, Claude or any AI agent to manage your social media end to endConnect your AI agent to manage your social media](https://posteverywhere.ai/agents)POST/media/{id}/complete # Finalise a media upload with the PostEverywhere API Call after uploading the file to the presigned `upload_url`. Verifies the file actually exists (`400 file_not_uploaded` when it does not) and that its magic bytes match the declared content type (`400 file_type_mismatch` — the media is then marked failed). Videos get a thumbnail generated in the background. Idempotent: calling on already-ready media returns 200. `400 upload_failed` when the media was previously marked failed. No request body is required. Guide: [Media requirements by platform](https://posteverywhere.ai/docs/media-requirements) Copy MarkdownCopy for LLM ## Parameters idstringrequiredMedia UUID ## Responses - 200Media finalized (or already ready) - 400 - 401 - 402 - 403 - 404 - 429 - 500 ## More in Media - [List media](https://posteverywhere.ai/docs/api/list-media) - [Upload media](https://posteverywhere.ai/docs/api/init-media-upload) - [Import from URL](https://posteverywhere.ai/docs/api/upload-media-from-url) - [Get media](https://posteverywhere.ai/docs/api/get-media) - [Delete media](https://posteverywhere.ai/docs/api/delete-media) [← Delete media](https://posteverywhere.ai/docs/api/delete-media)[← All endpoints](https://posteverywhere.ai/docs/api/reference)