Complete a media upload
curl --request POST \
--url https://posted-api.example.com/api/media/{mediaId}/complete \
--header 'Authorization: Bearer <token>'import requests
url = "https://posted-api.example.com/api/media/{mediaId}/complete"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://posted-api.example.com/api/media/{mediaId}/complete', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://posted-api.example.com/api/media/{mediaId}/complete",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://posted-api.example.com/api/media/{mediaId}/complete"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://posted-api.example.com/api/media/{mediaId}/complete")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://posted-api.example.com/api/media/{mediaId}/complete")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"state": "ready",
"media": {
"id": "44444444-4444-4444-8444-444444444444",
"fileName": "studio.jpg",
"contentType": "image/jpeg",
"sizeBytes": 245760,
"width": 1600,
"height": 900,
"alt": "A bright studio desk beside a window",
"durationSeconds": null
}
}{
"state": "processing"
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>"
}
}Complete a media upload
Validate uploaded media and queue video preparation. Read its status until ready before scheduling it.
POST
/
api
/
media
/
{mediaId}
/
complete
Complete a media upload
curl --request POST \
--url https://posted-api.example.com/api/media/{mediaId}/complete \
--header 'Authorization: Bearer <token>'import requests
url = "https://posted-api.example.com/api/media/{mediaId}/complete"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://posted-api.example.com/api/media/{mediaId}/complete', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://posted-api.example.com/api/media/{mediaId}/complete",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://posted-api.example.com/api/media/{mediaId}/complete"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://posted-api.example.com/api/media/{mediaId}/complete")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://posted-api.example.com/api/media/{mediaId}/complete")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"state": "ready",
"media": {
"id": "44444444-4444-4444-8444-444444444444",
"fileName": "studio.jpg",
"contentType": "image/jpeg",
"sizeBytes": 245760,
"width": 1600,
"height": 900,
"alt": "A bright studio desk beside a window",
"durationSeconds": null
}
}{
"state": "processing"
}{
"error": {
"code": "<string>",
"message": "<string>",
"requestId": "<string>"
}
}Write access: a member/administrator with a write-enabled credential, or an authorized signed-in user.
Validate uploaded media and queue video preparation. Read its status until ready before scheduling it.
Images can become ready immediately. Videos normally return state processing with HTTP 202 and must finish preparation before a post can use them. Invalid bytes or size are rejected.
MCP clients can use
complete_media_upload for this operation.
Request conventions · API keys · MCP connectionsAuthorizations
bearerAuthsessionCookie
Personal or team Posted REST API key
Path Parameters
The mediaId from the corresponding list, record or authorization response.
Was this page helpful?
