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>"
}
}
'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>" }
}
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>'}
})
};
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>'
]
]),
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}")
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}")
.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}"
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>"
}
}
'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>" }
}
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>'}
})
};
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>'
]
]),
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}")
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}")
.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}"
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 ["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).
Map of platform to array of specific account IDs to post from. If omitted, all connected accounts for the brand are used.
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
Was this page helpful?

