Update social post
Update a draft or scheduled post. Send only the fields you want to change.
If the post will be a scheduled Facebook Reel after the update (platform_options.facebook.type set to reel), it is checked against Facebook’s limit of 30 Reels per Page in 24 hours at its publish time, counting other published and scheduled Reels but not this post itself. A Page that would be over the limit is refused with 422 PLATFORM_DAILY_LIMIT_REACHED and details carrying account_id, limit, used and next_available_at; nothing is changed.
Requires scope social:write.
curl --request PATCH \
--url https://api.smartlyq.com/v1/social/posts/{post_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"content": "<string>",
"platforms": [],
"account_ids": [
123
],
"scheduled_time": "2023-11-07T05:31:56Z",
"media_urls": [
"<string>"
],
"link": "<string>"
}
'import requests
url = "https://api.smartlyq.com/v1/social/posts/{post_id}"
payload = {
"content": "<string>",
"platforms": [],
"account_ids": [123],
"scheduled_time": "2023-11-07T05:31:56Z",
"media_urls": ["<string>"],
"link": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
content: '<string>',
platforms: [],
account_ids: [123],
scheduled_time: '2023-11-07T05:31:56Z',
media_urls: ['<string>'],
link: '<string>'
})
};
fetch('https://api.smartlyq.com/v1/social/posts/{post_id}', 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://api.smartlyq.com/v1/social/posts/{post_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'content' => '<string>',
'platforms' => [
],
'account_ids' => [
123
],
'scheduled_time' => '2023-11-07T05:31:56Z',
'media_urls' => [
'<string>'
],
'link' => '<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://api.smartlyq.com/v1/social/posts/{post_id}"
payload := strings.NewReader("{\n \"content\": \"<string>\",\n \"platforms\": [],\n \"account_ids\": [\n 123\n ],\n \"scheduled_time\": \"2023-11-07T05:31:56Z\",\n \"media_urls\": [\n \"<string>\"\n ],\n \"link\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.smartlyq.com/v1/social/posts/{post_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"content\": \"<string>\",\n \"platforms\": [],\n \"account_ids\": [\n 123\n ],\n \"scheduled_time\": \"2023-11-07T05:31:56Z\",\n \"media_urls\": [\n \"<string>\"\n ],\n \"link\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.smartlyq.com/v1/social/posts/{post_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"content\": \"<string>\",\n \"platforms\": [],\n \"account_ids\": [\n 123\n ],\n \"scheduled_time\": \"2023-11-07T05:31:56Z\",\n \"media_urls\": [\n \"<string>\"\n ],\n \"link\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": 128,
"content": "Big news - our summer collection is live! ☀️",
"platforms": [
"twitter"
],
"status": "published",
"scheduled_time": "2026-07-26T09:41:22Z",
"published_at": "2026-07-26T09:41:22Z",
"created_at": "2026-07-26T09:41:22Z"
},
"meta": {
"request_id": "req_9f3a2b1c-7d4e-4a08-b2c6-5e1f8a9d0c34",
"timestamp": "2026-07-26T09:41:22Z"
}
}{
"success": false,
"error": {
"code": "BAD_REQUEST",
"message": "The request body is not valid JSON.",
"details": {}
},
"meta": {
"request_id": "req_9f3a2b1c-7d4e-4a08-b2c6-5e1f8a9d0c34",
"timestamp": "2026-07-26T09:41:22Z"
}
}{
"success": false,
"error": {
"code": "INVALID_API_KEY",
"message": "Missing or malformed Authorization header",
"details": {}
},
"meta": {
"request_id": "req_9f3a2b1c-7d4e-4a08-b2c6-5e1f8a9d0c34",
"timestamp": "2026-07-26T09:41:22Z"
}
}{
"success": false,
"error": {
"code": "INSUFFICIENT_SCOPE",
"message": "API key lacks required scope: social:write",
"details": {
"required_scope": "social:write"
}
},
"meta": {
"request_id": "req_9f3a2b1c-7d4e-4a08-b2c6-5e1f8a9d0c34",
"timestamp": "2026-07-26T09:41:22Z"
}
}{
"success": false,
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Post not found.",
"details": {}
},
"meta": {
"request_id": "req_9f3a2b1c-7d4e-4a08-b2c6-5e1f8a9d0c34",
"timestamp": "2026-07-26T09:41:22Z"
}
}{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Missing required fields: content, platforms.",
"details": {
"fields": [
"content",
"platforms"
]
}
},
"meta": {
"request_id": "req_9f3a2b1c-7d4e-4a08-b2c6-5e1f8a9d0c34",
"timestamp": "2026-07-26T09:41:22Z"
}
}{
"success": false,
"error": {
"code": "SERVER_ERROR",
"message": "Something went wrong on our side. Retry with the same request_id - it is safe.",
"details": {}
},
"meta": {
"request_id": "req_9f3a2b1c-7d4e-4a08-b2c6-5e1f8a9d0c34",
"timestamp": "2026-07-26T09:41:22Z"
}
}Authorizations
API key from Developer dashboard (Bearer token).
Path Parameters
Body
At least one field must be provided.
Target platforms. Use twitter for X and gmb for Google Business. telegram posts via the workspace's connected bot (created with @BotFather); discord posts via the connected server webhook. Both are connected in the dashboard's Social Accounts page.
facebook, instagram, twitter, linkedin, youtube, tiktok, gmb, threads, bluesky, tumblr, telegram, discord curl --request PATCH \
--url https://api.smartlyq.com/v1/social/posts/{post_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"content": "<string>",
"platforms": [],
"account_ids": [
123
],
"scheduled_time": "2023-11-07T05:31:56Z",
"media_urls": [
"<string>"
],
"link": "<string>"
}
'import requests
url = "https://api.smartlyq.com/v1/social/posts/{post_id}"
payload = {
"content": "<string>",
"platforms": [],
"account_ids": [123],
"scheduled_time": "2023-11-07T05:31:56Z",
"media_urls": ["<string>"],
"link": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
content: '<string>',
platforms: [],
account_ids: [123],
scheduled_time: '2023-11-07T05:31:56Z',
media_urls: ['<string>'],
link: '<string>'
})
};
fetch('https://api.smartlyq.com/v1/social/posts/{post_id}', 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://api.smartlyq.com/v1/social/posts/{post_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'content' => '<string>',
'platforms' => [
],
'account_ids' => [
123
],
'scheduled_time' => '2023-11-07T05:31:56Z',
'media_urls' => [
'<string>'
],
'link' => '<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://api.smartlyq.com/v1/social/posts/{post_id}"
payload := strings.NewReader("{\n \"content\": \"<string>\",\n \"platforms\": [],\n \"account_ids\": [\n 123\n ],\n \"scheduled_time\": \"2023-11-07T05:31:56Z\",\n \"media_urls\": [\n \"<string>\"\n ],\n \"link\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.smartlyq.com/v1/social/posts/{post_id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"content\": \"<string>\",\n \"platforms\": [],\n \"account_ids\": [\n 123\n ],\n \"scheduled_time\": \"2023-11-07T05:31:56Z\",\n \"media_urls\": [\n \"<string>\"\n ],\n \"link\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.smartlyq.com/v1/social/posts/{post_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"content\": \"<string>\",\n \"platforms\": [],\n \"account_ids\": [\n 123\n ],\n \"scheduled_time\": \"2023-11-07T05:31:56Z\",\n \"media_urls\": [\n \"<string>\"\n ],\n \"link\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"id": 128,
"content": "Big news - our summer collection is live! ☀️",
"platforms": [
"twitter"
],
"status": "published",
"scheduled_time": "2026-07-26T09:41:22Z",
"published_at": "2026-07-26T09:41:22Z",
"created_at": "2026-07-26T09:41:22Z"
},
"meta": {
"request_id": "req_9f3a2b1c-7d4e-4a08-b2c6-5e1f8a9d0c34",
"timestamp": "2026-07-26T09:41:22Z"
}
}{
"success": false,
"error": {
"code": "BAD_REQUEST",
"message": "The request body is not valid JSON.",
"details": {}
},
"meta": {
"request_id": "req_9f3a2b1c-7d4e-4a08-b2c6-5e1f8a9d0c34",
"timestamp": "2026-07-26T09:41:22Z"
}
}{
"success": false,
"error": {
"code": "INVALID_API_KEY",
"message": "Missing or malformed Authorization header",
"details": {}
},
"meta": {
"request_id": "req_9f3a2b1c-7d4e-4a08-b2c6-5e1f8a9d0c34",
"timestamp": "2026-07-26T09:41:22Z"
}
}{
"success": false,
"error": {
"code": "INSUFFICIENT_SCOPE",
"message": "API key lacks required scope: social:write",
"details": {
"required_scope": "social:write"
}
},
"meta": {
"request_id": "req_9f3a2b1c-7d4e-4a08-b2c6-5e1f8a9d0c34",
"timestamp": "2026-07-26T09:41:22Z"
}
}{
"success": false,
"error": {
"code": "RESOURCE_NOT_FOUND",
"message": "Post not found.",
"details": {}
},
"meta": {
"request_id": "req_9f3a2b1c-7d4e-4a08-b2c6-5e1f8a9d0c34",
"timestamp": "2026-07-26T09:41:22Z"
}
}{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "Missing required fields: content, platforms.",
"details": {
"fields": [
"content",
"platforms"
]
}
},
"meta": {
"request_id": "req_9f3a2b1c-7d4e-4a08-b2c6-5e1f8a9d0c34",
"timestamp": "2026-07-26T09:41:22Z"
}
}{
"success": false,
"error": {
"code": "SERVER_ERROR",
"message": "Something went wrong on our side. Retry with the same request_id - it is safe.",
"details": {}
},
"meta": {
"request_id": "req_9f3a2b1c-7d4e-4a08-b2c6-5e1f8a9d0c34",
"timestamp": "2026-07-26T09:41:22Z"
}
}
