Create Scheduled Post
curl --request POST \
--url https://api.supapost.so/schedule/posts \
--header 'Content-Type: application/json' \
--data '
{
"social_account_id": "<string>",
"platform": "<string>",
"scheduled_at": "<string>",
"project_id": "<string>",
"title": "<string>",
"image_urls": [
"<string>"
]
}
'import requests
url = "https://api.supapost.so/schedule/posts"
payload = {
"social_account_id": "<string>",
"platform": "<string>",
"scheduled_at": "<string>",
"project_id": "<string>",
"title": "<string>",
"image_urls": ["<string>"]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
social_account_id: '<string>',
platform: '<string>',
scheduled_at: '<string>',
project_id: '<string>',
title: '<string>',
image_urls: ['<string>']
})
};
fetch('https://api.supapost.so/schedule/posts', 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.supapost.so/schedule/posts",
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([
'social_account_id' => '<string>',
'platform' => '<string>',
'scheduled_at' => '<string>',
'project_id' => '<string>',
'title' => '<string>',
'image_urls' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"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.supapost.so/schedule/posts"
payload := strings.NewReader("{\n \"social_account_id\": \"<string>\",\n \"platform\": \"<string>\",\n \"scheduled_at\": \"<string>\",\n \"project_id\": \"<string>\",\n \"title\": \"<string>\",\n \"image_urls\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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.supapost.so/schedule/posts")
.header("Content-Type", "application/json")
.body("{\n \"social_account_id\": \"<string>\",\n \"platform\": \"<string>\",\n \"scheduled_at\": \"<string>\",\n \"project_id\": \"<string>\",\n \"title\": \"<string>\",\n \"image_urls\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.supapost.so/schedule/posts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"social_account_id\": \"<string>\",\n \"platform\": \"<string>\",\n \"scheduled_at\": \"<string>\",\n \"project_id\": \"<string>\",\n \"title\": \"<string>\",\n \"image_urls\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "post-uuid",
"team_id": "team-uuid",
"project_id": "proj-uuid",
"social_account_id": "acct-uuid",
"platform": "tiktok",
"scheduled_at": "2026-04-10T14:00:00Z",
"title": "Morning Routine Tips",
"image_urls": ["https://cdn.supapost.so/assets/team/slide1.jpg"],
"status": "scheduled",
"project": {
"id": "proj-uuid",
"name": "Morning Routine Carousel",
"thumbnail_url": "https://cdn.supapost.so/assets/team/thumb.jpg"
},
"account": {
"id": "acct-uuid",
"platform": "tiktok",
"platform_username": "myaccount",
"display_name": "My Account",
"avatar_url": "https://example.com/avatar.jpg"
}
}
{
"success": false,
"message": "scheduled_at must be in the future"
}
Scheduling
Create Scheduled Post
Schedule a post for future publishing
POST
/
schedule
/
posts
Create Scheduled Post
curl --request POST \
--url https://api.supapost.so/schedule/posts \
--header 'Content-Type: application/json' \
--data '
{
"social_account_id": "<string>",
"platform": "<string>",
"scheduled_at": "<string>",
"project_id": "<string>",
"title": "<string>",
"image_urls": [
"<string>"
]
}
'import requests
url = "https://api.supapost.so/schedule/posts"
payload = {
"social_account_id": "<string>",
"platform": "<string>",
"scheduled_at": "<string>",
"project_id": "<string>",
"title": "<string>",
"image_urls": ["<string>"]
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
social_account_id: '<string>',
platform: '<string>',
scheduled_at: '<string>',
project_id: '<string>',
title: '<string>',
image_urls: ['<string>']
})
};
fetch('https://api.supapost.so/schedule/posts', 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.supapost.so/schedule/posts",
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([
'social_account_id' => '<string>',
'platform' => '<string>',
'scheduled_at' => '<string>',
'project_id' => '<string>',
'title' => '<string>',
'image_urls' => [
'<string>'
]
]),
CURLOPT_HTTPHEADER => [
"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.supapost.so/schedule/posts"
payload := strings.NewReader("{\n \"social_account_id\": \"<string>\",\n \"platform\": \"<string>\",\n \"scheduled_at\": \"<string>\",\n \"project_id\": \"<string>\",\n \"title\": \"<string>\",\n \"image_urls\": [\n \"<string>\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
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.supapost.so/schedule/posts")
.header("Content-Type", "application/json")
.body("{\n \"social_account_id\": \"<string>\",\n \"platform\": \"<string>\",\n \"scheduled_at\": \"<string>\",\n \"project_id\": \"<string>\",\n \"title\": \"<string>\",\n \"image_urls\": [\n \"<string>\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.supapost.so/schedule/posts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"social_account_id\": \"<string>\",\n \"platform\": \"<string>\",\n \"scheduled_at\": \"<string>\",\n \"project_id\": \"<string>\",\n \"title\": \"<string>\",\n \"image_urls\": [\n \"<string>\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"id": "post-uuid",
"team_id": "team-uuid",
"project_id": "proj-uuid",
"social_account_id": "acct-uuid",
"platform": "tiktok",
"scheduled_at": "2026-04-10T14:00:00Z",
"title": "Morning Routine Tips",
"image_urls": ["https://cdn.supapost.so/assets/team/slide1.jpg"],
"status": "scheduled",
"project": {
"id": "proj-uuid",
"name": "Morning Routine Carousel",
"thumbnail_url": "https://cdn.supapost.so/assets/team/thumb.jpg"
},
"account": {
"id": "acct-uuid",
"platform": "tiktok",
"platform_username": "myaccount",
"display_name": "My Account",
"avatar_url": "https://example.com/avatar.jpg"
}
}
{
"success": false,
"message": "scheduled_at must be in the future"
}
Creates a new scheduled post. The
scheduled_at time must be in the future. A cron job will automatically publish the post at the scheduled time.
Authentication
string
Bearer token.
Bearer <supabase-jwt>.Body
string
required
ID of the connected social account to publish to.
string
required
Target platform, e.g.
"tiktok".string
required
ISO 8601 datetime for when the post should be published. Must be in the future.
string
Optional project ID to link this post to.
string
default:"Scheduled post"
Title or caption for the post.
string[]
required
Array of image URLs to include in the post.
{
"id": "post-uuid",
"team_id": "team-uuid",
"project_id": "proj-uuid",
"social_account_id": "acct-uuid",
"platform": "tiktok",
"scheduled_at": "2026-04-10T14:00:00Z",
"title": "Morning Routine Tips",
"image_urls": ["https://cdn.supapost.so/assets/team/slide1.jpg"],
"status": "scheduled",
"project": {
"id": "proj-uuid",
"name": "Morning Routine Carousel",
"thumbnail_url": "https://cdn.supapost.so/assets/team/thumb.jpg"
},
"account": {
"id": "acct-uuid",
"platform": "tiktok",
"platform_username": "myaccount",
"display_name": "My Account",
"avatar_url": "https://example.com/avatar.jpg"
}
}
{
"success": false,
"message": "scheduled_at must be in the future"
}
⌘I