curl --request PUT \
--url https://app.autoposting.ai/api-proxy/posts/{postId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"brandSlug": "acme-corp",
"text": "Exciting news from Acme! 🚀",
"platforms": [
"x",
"linkedin"
],
"scheduledAt": "2025-02-01T10:00:00Z",
"media": [
{
"url": "<string>",
"altText": "<string>"
}
],
"thread": [
"<string>"
],
"source": "<string>",
"targetAccountIds": {
"x": [
"account-id-1"
],
"linkedin": [
"account-id-2"
]
},
"instagramOptions": {
"reel": {
"thumbOffsetMs": 123,
"shareToFeed": true,
"coverUrl": "<string>",
"collaborators": [
"<string>"
]
}
},
"threadsOptions": {
"replyToId": "<string>"
},
"platformTexts": {},
"platformMedia": {}
}
'import requests
url = "https://app.autoposting.ai/api-proxy/posts/{postId}"
payload = {
"brandSlug": "acme-corp",
"text": "Exciting news from Acme! 🚀",
"platforms": ["x", "linkedin"],
"scheduledAt": "2025-02-01T10:00:00Z",
"media": [
{
"url": "<string>",
"altText": "<string>"
}
],
"thread": ["<string>"],
"source": "<string>",
"targetAccountIds": {
"x": ["account-id-1"],
"linkedin": ["account-id-2"]
},
"instagramOptions": { "reel": {
"thumbOffsetMs": 123,
"shareToFeed": True,
"coverUrl": "<string>",
"collaborators": ["<string>"]
} },
"threadsOptions": { "replyToId": "<string>" },
"platformTexts": {},
"platformMedia": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
brandSlug: 'acme-corp',
text: 'Exciting news from Acme! 🚀',
platforms: ['x', 'linkedin'],
scheduledAt: '2025-02-01T10:00:00Z',
media: [{url: '<string>', altText: '<string>'}],
thread: ['<string>'],
source: '<string>',
targetAccountIds: {x: ['account-id-1'], linkedin: ['account-id-2']},
instagramOptions: {
reel: {
thumbOffsetMs: 123,
shareToFeed: true,
coverUrl: '<string>',
collaborators: ['<string>']
}
},
threadsOptions: {replyToId: '<string>'},
platformTexts: {},
platformMedia: {}
})
};
fetch('https://app.autoposting.ai/api-proxy/posts/{postId}', 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://app.autoposting.ai/api-proxy/posts/{postId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'brandSlug' => 'acme-corp',
'text' => 'Exciting news from Acme! 🚀',
'platforms' => [
'x',
'linkedin'
],
'scheduledAt' => '2025-02-01T10:00:00Z',
'media' => [
[
'url' => '<string>',
'altText' => '<string>'
]
],
'thread' => [
'<string>'
],
'source' => '<string>',
'targetAccountIds' => [
'x' => [
'account-id-1'
],
'linkedin' => [
'account-id-2'
]
],
'instagramOptions' => [
'reel' => [
'thumbOffsetMs' => 123,
'shareToFeed' => true,
'coverUrl' => '<string>',
'collaborators' => [
'<string>'
]
]
],
'threadsOptions' => [
'replyToId' => '<string>'
],
'platformTexts' => [
],
'platformMedia' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.autoposting.ai/api-proxy/posts/{postId}"
payload := strings.NewReader("{\n \"brandSlug\": \"acme-corp\",\n \"text\": \"Exciting news from Acme! 🚀\",\n \"platforms\": [\n \"x\",\n \"linkedin\"\n ],\n \"scheduledAt\": \"2025-02-01T10:00:00Z\",\n \"media\": [\n {\n \"url\": \"<string>\",\n \"altText\": \"<string>\"\n }\n ],\n \"thread\": [\n \"<string>\"\n ],\n \"source\": \"<string>\",\n \"targetAccountIds\": {\n \"x\": [\n \"account-id-1\"\n ],\n \"linkedin\": [\n \"account-id-2\"\n ]\n },\n \"instagramOptions\": {\n \"reel\": {\n \"thumbOffsetMs\": 123,\n \"shareToFeed\": true,\n \"coverUrl\": \"<string>\",\n \"collaborators\": [\n \"<string>\"\n ]\n }\n },\n \"threadsOptions\": {\n \"replyToId\": \"<string>\"\n },\n \"platformTexts\": {},\n \"platformMedia\": {}\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://app.autoposting.ai/api-proxy/posts/{postId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"brandSlug\": \"acme-corp\",\n \"text\": \"Exciting news from Acme! 🚀\",\n \"platforms\": [\n \"x\",\n \"linkedin\"\n ],\n \"scheduledAt\": \"2025-02-01T10:00:00Z\",\n \"media\": [\n {\n \"url\": \"<string>\",\n \"altText\": \"<string>\"\n }\n ],\n \"thread\": [\n \"<string>\"\n ],\n \"source\": \"<string>\",\n \"targetAccountIds\": {\n \"x\": [\n \"account-id-1\"\n ],\n \"linkedin\": [\n \"account-id-2\"\n ]\n },\n \"instagramOptions\": {\n \"reel\": {\n \"thumbOffsetMs\": 123,\n \"shareToFeed\": true,\n \"coverUrl\": \"<string>\",\n \"collaborators\": [\n \"<string>\"\n ]\n }\n },\n \"threadsOptions\": {\n \"replyToId\": \"<string>\"\n },\n \"platformTexts\": {},\n \"platformMedia\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.autoposting.ai/api-proxy/posts/{postId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"brandSlug\": \"acme-corp\",\n \"text\": \"Exciting news from Acme! 🚀\",\n \"platforms\": [\n \"x\",\n \"linkedin\"\n ],\n \"scheduledAt\": \"2025-02-01T10:00:00Z\",\n \"media\": [\n {\n \"url\": \"<string>\",\n \"altText\": \"<string>\"\n }\n ],\n \"thread\": [\n \"<string>\"\n ],\n \"source\": \"<string>\",\n \"targetAccountIds\": {\n \"x\": [\n \"account-id-1\"\n ],\n \"linkedin\": [\n \"account-id-2\"\n ]\n },\n \"instagramOptions\": {\n \"reel\": {\n \"thumbOffsetMs\": 123,\n \"shareToFeed\": true,\n \"coverUrl\": \"<string>\",\n \"collaborators\": [\n \"<string>\"\n ]\n }\n },\n \"threadsOptions\": {\n \"replyToId\": \"<string>\"\n },\n \"platformTexts\": {},\n \"platformMedia\": {}\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "post_01HXYZ",
"brandSlug": "acme-corp",
"text": "Exciting news from Acme! 🚀",
"platforms": [
"x",
"linkedin"
],
"status": "scheduled",
"scheduledAt": "2025-02-01T10:00:00Z",
"media": [],
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T00:00:00Z"
}
}{
"success": false,
"error": "unauthorized",
"message": "Missing or invalid API key."
}Update a post
Accepts the same body fields as Create Post; only provided fields are updated. Posts in published or publishing status cannot be updated.
curl --request PUT \
--url https://app.autoposting.ai/api-proxy/posts/{postId} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"brandSlug": "acme-corp",
"text": "Exciting news from Acme! 🚀",
"platforms": [
"x",
"linkedin"
],
"scheduledAt": "2025-02-01T10:00:00Z",
"media": [
{
"url": "<string>",
"altText": "<string>"
}
],
"thread": [
"<string>"
],
"source": "<string>",
"targetAccountIds": {
"x": [
"account-id-1"
],
"linkedin": [
"account-id-2"
]
},
"instagramOptions": {
"reel": {
"thumbOffsetMs": 123,
"shareToFeed": true,
"coverUrl": "<string>",
"collaborators": [
"<string>"
]
}
},
"threadsOptions": {
"replyToId": "<string>"
},
"platformTexts": {},
"platformMedia": {}
}
'import requests
url = "https://app.autoposting.ai/api-proxy/posts/{postId}"
payload = {
"brandSlug": "acme-corp",
"text": "Exciting news from Acme! 🚀",
"platforms": ["x", "linkedin"],
"scheduledAt": "2025-02-01T10:00:00Z",
"media": [
{
"url": "<string>",
"altText": "<string>"
}
],
"thread": ["<string>"],
"source": "<string>",
"targetAccountIds": {
"x": ["account-id-1"],
"linkedin": ["account-id-2"]
},
"instagramOptions": { "reel": {
"thumbOffsetMs": 123,
"shareToFeed": True,
"coverUrl": "<string>",
"collaborators": ["<string>"]
} },
"threadsOptions": { "replyToId": "<string>" },
"platformTexts": {},
"platformMedia": {}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
brandSlug: 'acme-corp',
text: 'Exciting news from Acme! 🚀',
platforms: ['x', 'linkedin'],
scheduledAt: '2025-02-01T10:00:00Z',
media: [{url: '<string>', altText: '<string>'}],
thread: ['<string>'],
source: '<string>',
targetAccountIds: {x: ['account-id-1'], linkedin: ['account-id-2']},
instagramOptions: {
reel: {
thumbOffsetMs: 123,
shareToFeed: true,
coverUrl: '<string>',
collaborators: ['<string>']
}
},
threadsOptions: {replyToId: '<string>'},
platformTexts: {},
platformMedia: {}
})
};
fetch('https://app.autoposting.ai/api-proxy/posts/{postId}', 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://app.autoposting.ai/api-proxy/posts/{postId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'brandSlug' => 'acme-corp',
'text' => 'Exciting news from Acme! 🚀',
'platforms' => [
'x',
'linkedin'
],
'scheduledAt' => '2025-02-01T10:00:00Z',
'media' => [
[
'url' => '<string>',
'altText' => '<string>'
]
],
'thread' => [
'<string>'
],
'source' => '<string>',
'targetAccountIds' => [
'x' => [
'account-id-1'
],
'linkedin' => [
'account-id-2'
]
],
'instagramOptions' => [
'reel' => [
'thumbOffsetMs' => 123,
'shareToFeed' => true,
'coverUrl' => '<string>',
'collaborators' => [
'<string>'
]
]
],
'threadsOptions' => [
'replyToId' => '<string>'
],
'platformTexts' => [
],
'platformMedia' => [
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.autoposting.ai/api-proxy/posts/{postId}"
payload := strings.NewReader("{\n \"brandSlug\": \"acme-corp\",\n \"text\": \"Exciting news from Acme! 🚀\",\n \"platforms\": [\n \"x\",\n \"linkedin\"\n ],\n \"scheduledAt\": \"2025-02-01T10:00:00Z\",\n \"media\": [\n {\n \"url\": \"<string>\",\n \"altText\": \"<string>\"\n }\n ],\n \"thread\": [\n \"<string>\"\n ],\n \"source\": \"<string>\",\n \"targetAccountIds\": {\n \"x\": [\n \"account-id-1\"\n ],\n \"linkedin\": [\n \"account-id-2\"\n ]\n },\n \"instagramOptions\": {\n \"reel\": {\n \"thumbOffsetMs\": 123,\n \"shareToFeed\": true,\n \"coverUrl\": \"<string>\",\n \"collaborators\": [\n \"<string>\"\n ]\n }\n },\n \"threadsOptions\": {\n \"replyToId\": \"<string>\"\n },\n \"platformTexts\": {},\n \"platformMedia\": {}\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.put("https://app.autoposting.ai/api-proxy/posts/{postId}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"brandSlug\": \"acme-corp\",\n \"text\": \"Exciting news from Acme! 🚀\",\n \"platforms\": [\n \"x\",\n \"linkedin\"\n ],\n \"scheduledAt\": \"2025-02-01T10:00:00Z\",\n \"media\": [\n {\n \"url\": \"<string>\",\n \"altText\": \"<string>\"\n }\n ],\n \"thread\": [\n \"<string>\"\n ],\n \"source\": \"<string>\",\n \"targetAccountIds\": {\n \"x\": [\n \"account-id-1\"\n ],\n \"linkedin\": [\n \"account-id-2\"\n ]\n },\n \"instagramOptions\": {\n \"reel\": {\n \"thumbOffsetMs\": 123,\n \"shareToFeed\": true,\n \"coverUrl\": \"<string>\",\n \"collaborators\": [\n \"<string>\"\n ]\n }\n },\n \"threadsOptions\": {\n \"replyToId\": \"<string>\"\n },\n \"platformTexts\": {},\n \"platformMedia\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.autoposting.ai/api-proxy/posts/{postId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"brandSlug\": \"acme-corp\",\n \"text\": \"Exciting news from Acme! 🚀\",\n \"platforms\": [\n \"x\",\n \"linkedin\"\n ],\n \"scheduledAt\": \"2025-02-01T10:00:00Z\",\n \"media\": [\n {\n \"url\": \"<string>\",\n \"altText\": \"<string>\"\n }\n ],\n \"thread\": [\n \"<string>\"\n ],\n \"source\": \"<string>\",\n \"targetAccountIds\": {\n \"x\": [\n \"account-id-1\"\n ],\n \"linkedin\": [\n \"account-id-2\"\n ]\n },\n \"instagramOptions\": {\n \"reel\": {\n \"thumbOffsetMs\": 123,\n \"shareToFeed\": true,\n \"coverUrl\": \"<string>\",\n \"collaborators\": [\n \"<string>\"\n ]\n }\n },\n \"threadsOptions\": {\n \"replyToId\": \"<string>\"\n },\n \"platformTexts\": {},\n \"platformMedia\": {}\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": "post_01HXYZ",
"brandSlug": "acme-corp",
"text": "Exciting news from Acme! 🚀",
"platforms": [
"x",
"linkedin"
],
"status": "scheduled",
"scheduledAt": "2025-02-01T10:00:00Z",
"media": [],
"createdAt": "2024-01-01T00:00:00Z",
"updatedAt": "2024-01-01T00:00:00Z"
}
}{
"success": false,
"error": "unauthorized",
"message": "Missing or invalid API key."
}Authorizations
API key as Authorization: Bearer sk-social-...
Path Parameters
Unique identifier of the post.
"post_01HXYZ"
Body
Same fields as Create Post; only provided fields are updated.
Slug of the brand to post from.
"acme-corp"
Post content text.
"Exciting news from Acme! 🚀"
Target platforms.
x, linkedin, instagram, threads, youtube, facebook ["x", "linkedin"]
ISO 8601 datetime to schedule the post. Omit to save as draft.
"2025-02-01T10:00:00Z"
Media attachments.
Show child attributes
Show child attributes
Additional tweet content for X threads. Each element is a subsequent tweet in the thread.
Origin source of the post (e.g., dashboard, api, agent).
Explicit selected connected account IDs by platform. Facebook requires a non-empty facebook Page ID array, even when only one Page is connected.
Show child attributes
Show child attributes
{
"x": ["account-id-1"],
"linkedin": ["account-id-2"]
}
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Platform captions. An empty Facebook string is intentional.
Show child attributes
Show child attributes
Platform media override; an empty Facebook array excludes shared media.
Show child attributes
Show child attributes
Was this page helpful?

