curl --request POST \
--url https://api.superx.so/v1/scheduled-posts/bulk/auto-retweet \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"ids": [
"V1StGXR8_Z5jdHi6B-myT",
"Fq2xWnA0kLpR7sVtYu3zc"
],
"auto_retweet": {
"after_hours": 6,
"remove_after_hours": 4
}
}
'import requests
url = "https://api.superx.so/v1/scheduled-posts/bulk/auto-retweet"
payload = {
"ids": ["V1StGXR8_Z5jdHi6B-myT", "Fq2xWnA0kLpR7sVtYu3zc"],
"auto_retweet": {
"after_hours": 6,
"remove_after_hours": 4
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
ids: ['V1StGXR8_Z5jdHi6B-myT', 'Fq2xWnA0kLpR7sVtYu3zc'],
auto_retweet: {after_hours: 6, remove_after_hours: 4}
})
};
fetch('https://api.superx.so/v1/scheduled-posts/bulk/auto-retweet', 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.superx.so/v1/scheduled-posts/bulk/auto-retweet",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'ids' => [
'V1StGXR8_Z5jdHi6B-myT',
'Fq2xWnA0kLpR7sVtYu3zc'
],
'auto_retweet' => [
'after_hours' => 6,
'remove_after_hours' => 4
]
]),
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.superx.so/v1/scheduled-posts/bulk/auto-retweet"
payload := strings.NewReader("{\n \"ids\": [\n \"V1StGXR8_Z5jdHi6B-myT\",\n \"Fq2xWnA0kLpR7sVtYu3zc\"\n ],\n \"auto_retweet\": {\n \"after_hours\": 6,\n \"remove_after_hours\": 4\n }\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.superx.so/v1/scheduled-posts/bulk/auto-retweet")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"ids\": [\n \"V1StGXR8_Z5jdHi6B-myT\",\n \"Fq2xWnA0kLpR7sVtYu3zc\"\n ],\n \"auto_retweet\": {\n \"after_hours\": 6,\n \"remove_after_hours\": 4\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.superx.so/v1/scheduled-posts/bulk/auto-retweet")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"ids\": [\n \"V1StGXR8_Z5jdHi6B-myT\",\n \"Fq2xWnA0kLpR7sVtYu3zc\"\n ],\n \"auto_retweet\": {\n \"after_hours\": 6,\n \"remove_after_hours\": 4\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"updated": 1,
"skipped": 1,
"failed": 0
}
}{
"error": {
"code": "invalid_parameter",
"message": "since must be a UTC ISO-8601 timestamp"
}
}{
"error": {
"code": "invalid_api_key",
"message": "Unknown or revoked API key"
}
}{
"error": {
"code": "insufficient_scope",
"message": "This API key is read-only. Create a key with the write scope to use this endpoint."
}
}{
"error": {
"code": "account_not_found",
"message": "No account with that id belongs to this key"
}
}{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded for the Pro plan (30 requests/min). Upgrade for higher limits.",
"retry_after": 42
}
}{
"error": {
"code": "upstream_error",
"message": "Failed to fetch scheduled posts. Try again shortly."
}
}{
"error": {
"code": "upstream_unavailable",
"message": "The scheduling service is temporarily unavailable. Retry with the same Idempotency-Key."
}
}Enable auto retweet on queued posts in bulk
Turns Auto Retweet on for up to 100 queued posts at once.
A post that already carries its own auto retweet is counted in
skipped and left untouched: this never overwrites a per-post
setting. Only posts in the queue are changed, so drafts, sent posts
and error rows are counted in skipped too. failed counts posts
whose stored settings could not be read.
Worth knowing: posts created through the API inherit the account’s
Default Post Settings, so if Auto Retweet is on there, every API post
already carries one and this endpoint reports them all as skipped.
To bulk-apply a different auto retweet, create the posts with
auto_retweet: null (or clear each one with
PATCH /v1/scheduled-posts/{id}) first.
Costs one write. Idempotency-Key is not supported and not needed:
a second run skips everything the first one set.
curl --request POST \
--url https://api.superx.so/v1/scheduled-posts/bulk/auto-retweet \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"ids": [
"V1StGXR8_Z5jdHi6B-myT",
"Fq2xWnA0kLpR7sVtYu3zc"
],
"auto_retweet": {
"after_hours": 6,
"remove_after_hours": 4
}
}
'import requests
url = "https://api.superx.so/v1/scheduled-posts/bulk/auto-retweet"
payload = {
"ids": ["V1StGXR8_Z5jdHi6B-myT", "Fq2xWnA0kLpR7sVtYu3zc"],
"auto_retweet": {
"after_hours": 6,
"remove_after_hours": 4
}
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
ids: ['V1StGXR8_Z5jdHi6B-myT', 'Fq2xWnA0kLpR7sVtYu3zc'],
auto_retweet: {after_hours: 6, remove_after_hours: 4}
})
};
fetch('https://api.superx.so/v1/scheduled-posts/bulk/auto-retweet', 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.superx.so/v1/scheduled-posts/bulk/auto-retweet",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'ids' => [
'V1StGXR8_Z5jdHi6B-myT',
'Fq2xWnA0kLpR7sVtYu3zc'
],
'auto_retweet' => [
'after_hours' => 6,
'remove_after_hours' => 4
]
]),
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.superx.so/v1/scheduled-posts/bulk/auto-retweet"
payload := strings.NewReader("{\n \"ids\": [\n \"V1StGXR8_Z5jdHi6B-myT\",\n \"Fq2xWnA0kLpR7sVtYu3zc\"\n ],\n \"auto_retweet\": {\n \"after_hours\": 6,\n \"remove_after_hours\": 4\n }\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.superx.so/v1/scheduled-posts/bulk/auto-retweet")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"ids\": [\n \"V1StGXR8_Z5jdHi6B-myT\",\n \"Fq2xWnA0kLpR7sVtYu3zc\"\n ],\n \"auto_retweet\": {\n \"after_hours\": 6,\n \"remove_after_hours\": 4\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.superx.so/v1/scheduled-posts/bulk/auto-retweet")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"ids\": [\n \"V1StGXR8_Z5jdHi6B-myT\",\n \"Fq2xWnA0kLpR7sVtYu3zc\"\n ],\n \"auto_retweet\": {\n \"after_hours\": 6,\n \"remove_after_hours\": 4\n }\n}"
response = http.request(request)
puts response.read_body{
"data": {
"updated": 1,
"skipped": 1,
"failed": 0
}
}{
"error": {
"code": "invalid_parameter",
"message": "since must be a UTC ISO-8601 timestamp"
}
}{
"error": {
"code": "invalid_api_key",
"message": "Unknown or revoked API key"
}
}{
"error": {
"code": "insufficient_scope",
"message": "This API key is read-only. Create a key with the write scope to use this endpoint."
}
}{
"error": {
"code": "account_not_found",
"message": "No account with that id belongs to this key"
}
}{
"error": {
"code": "rate_limited",
"message": "Rate limit exceeded for the Pro plan (30 requests/min). Upgrade for higher limits.",
"retry_after": 42
}
}{
"error": {
"code": "upstream_error",
"message": "Failed to fetch scheduled posts. Try again shortly."
}
}{
"error": {
"code": "upstream_unavailable",
"message": "The scheduling service is temporarily unavailable. Retry with the same Idempotency-Key."
}
}Authorizations
A SuperX API key ("sxk_..."), created in the SuperX app under Account > API / MCP / CLI. Keys are server-side secrets.
Body
Post ids (from GET /v1/scheduled-posts). Repeated ids are deduplicated.
1 - 100 elementsThe auto retweet to apply to every listed post.
Show child attributes
Show child attributes
Any account you own. An account shared with you returns 403 writes_main_account_only.
Response
How many posts were changed, skipped and failed.
Show child attributes
Show child attributes