curl --request POST \
--url https://app.trypost.it/api/posts/batch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"status": "scheduled",
"queue": "next",
"content": "Our October changelog is live.",
"media": [
{
"upload_token": "4f6c2b1e-8d3a-4e5f-9a7b-1c2d3e4f5a6b",
"alt": "Changelog cover"
}
],
"destinations": [
{
"social_account_id": "9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54",
"content_type": "x_post"
},
{
"social_account_id": "9c8b7a65-5e4f-4a3b-9c2d-1e0f9a8b7c65",
"content_type": "pinterest_pin",
"content": "Everything we shipped in October, in one pin.",
"meta": {
"board_id": "1022106146620830917",
"title": "October changelog",
"link": "https://trypost.it/changelog"
}
}
]
}
'import requests
url = "https://app.trypost.it/api/posts/batch"
payload = {
"status": "scheduled",
"queue": "next",
"content": "Our October changelog is live.",
"media": [
{
"upload_token": "4f6c2b1e-8d3a-4e5f-9a7b-1c2d3e4f5a6b",
"alt": "Changelog cover"
}
],
"destinations": [
{
"social_account_id": "9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54",
"content_type": "x_post"
},
{
"social_account_id": "9c8b7a65-5e4f-4a3b-9c2d-1e0f9a8b7c65",
"content_type": "pinterest_pin",
"content": "Everything we shipped in October, in one pin.",
"meta": {
"board_id": "1022106146620830917",
"title": "October changelog",
"link": "https://trypost.it/changelog"
}
}
]
}
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({
status: 'scheduled',
queue: 'next',
content: 'Our October changelog is live.',
media: [{upload_token: '4f6c2b1e-8d3a-4e5f-9a7b-1c2d3e4f5a6b', alt: 'Changelog cover'}],
destinations: [
{
social_account_id: '9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54',
content_type: 'x_post'
},
{
social_account_id: '9c8b7a65-5e4f-4a3b-9c2d-1e0f9a8b7c65',
content_type: 'pinterest_pin',
content: 'Everything we shipped in October, in one pin.',
meta: {
board_id: '1022106146620830917',
title: 'October changelog',
link: 'https://trypost.it/changelog'
}
}
]
})
};
fetch('https://app.trypost.it/api/posts/batch', 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.trypost.it/api/posts/batch",
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([
'status' => 'scheduled',
'queue' => 'next',
'content' => 'Our October changelog is live.',
'media' => [
[
'upload_token' => '4f6c2b1e-8d3a-4e5f-9a7b-1c2d3e4f5a6b',
'alt' => 'Changelog cover'
]
],
'destinations' => [
[
'social_account_id' => '9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54',
'content_type' => 'x_post'
],
[
'social_account_id' => '9c8b7a65-5e4f-4a3b-9c2d-1e0f9a8b7c65',
'content_type' => 'pinterest_pin',
'content' => 'Everything we shipped in October, in one pin.',
'meta' => [
'board_id' => '1022106146620830917',
'title' => 'October changelog',
'link' => 'https://trypost.it/changelog'
]
]
]
]),
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.trypost.it/api/posts/batch"
payload := strings.NewReader("{\n \"status\": \"scheduled\",\n \"queue\": \"next\",\n \"content\": \"Our October changelog is live.\",\n \"media\": [\n {\n \"upload_token\": \"4f6c2b1e-8d3a-4e5f-9a7b-1c2d3e4f5a6b\",\n \"alt\": \"Changelog cover\"\n }\n ],\n \"destinations\": [\n {\n \"social_account_id\": \"9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54\",\n \"content_type\": \"x_post\"\n },\n {\n \"social_account_id\": \"9c8b7a65-5e4f-4a3b-9c2d-1e0f9a8b7c65\",\n \"content_type\": \"pinterest_pin\",\n \"content\": \"Everything we shipped in October, in one pin.\",\n \"meta\": {\n \"board_id\": \"1022106146620830917\",\n \"title\": \"October changelog\",\n \"link\": \"https://trypost.it/changelog\"\n }\n }\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://app.trypost.it/api/posts/batch")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"status\": \"scheduled\",\n \"queue\": \"next\",\n \"content\": \"Our October changelog is live.\",\n \"media\": [\n {\n \"upload_token\": \"4f6c2b1e-8d3a-4e5f-9a7b-1c2d3e4f5a6b\",\n \"alt\": \"Changelog cover\"\n }\n ],\n \"destinations\": [\n {\n \"social_account_id\": \"9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54\",\n \"content_type\": \"x_post\"\n },\n {\n \"social_account_id\": \"9c8b7a65-5e4f-4a3b-9c2d-1e0f9a8b7c65\",\n \"content_type\": \"pinterest_pin\",\n \"content\": \"Everything we shipped in October, in one pin.\",\n \"meta\": {\n \"board_id\": \"1022106146620830917\",\n \"title\": \"October changelog\",\n \"link\": \"https://trypost.it/changelog\"\n }\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trypost.it/api/posts/batch")
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 \"status\": \"scheduled\",\n \"queue\": \"next\",\n \"content\": \"Our October changelog is live.\",\n \"media\": [\n {\n \"upload_token\": \"4f6c2b1e-8d3a-4e5f-9a7b-1c2d3e4f5a6b\",\n \"alt\": \"Changelog cover\"\n }\n ],\n \"destinations\": [\n {\n \"social_account_id\": \"9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54\",\n \"content_type\": \"x_post\"\n },\n {\n \"social_account_id\": \"9c8b7a65-5e4f-4a3b-9c2d-1e0f9a8b7c65\",\n \"content_type\": \"pinterest_pin\",\n \"content\": \"Everything we shipped in October, in one pin.\",\n \"meta\": {\n \"board_id\": \"1022106146620830917\",\n \"title\": \"October changelog\",\n \"link\": \"https://trypost.it/changelog\"\n }\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"posts": [
{
"id": "9d3c1f2a-6b4e-4c8a-9f1e-2a7b5c8d0e41",
"post_group_id": "9d3c1f29-e0a1-4b7c-8d2e-5f6a7b8c9d03",
"author": {
"id": "9b1e2d3c-4f5a-4b6c-8d7e-9f0a1b2c3d4e",
"name": "Ana Souza"
},
"content": "Our October changelog is live.",
"media": [
{
"id": "9d3c1f30-8a9b-4c0d-9e1f-2a3b4c5d6e7f",
"path": "medias/9d3c1f30-8a9b-4c0d-9e1f-2a3b4c5d6e7f.jpg",
"url": "https://media.trypost.it/medias/9d3c1f30-8a9b-4c0d-9e1f-2a3b4c5d6e7f.jpg",
"type": "image",
"mime_type": "image/jpeg",
"original_filename": "launch.jpg",
"size": 482113,
"meta": {
"width": 1080,
"height": 1350,
"alt_text": "Changelog cover"
}
}
],
"status": "scheduled",
"schedule_mode": "queue",
"scheduled_at": "2026-10-12 14:00:00",
"published_at": null,
"approval_requested_by": null,
"approval_requested_at": null,
"approved_by": null,
"approved_at": null,
"recurrence": null,
"origin": "trypost",
"platforms": [
{
"id": "9d3c1f2b-1a2b-4c3d-8e4f-5a6b7c8d9e10",
"platform": "x",
"content_type": "x_post",
"meta": {
"thread_replies": [
{
"text": "2/ Replies publish under the first post.",
"media": []
}
]
},
"status": "pending",
"enabled": true,
"platform_url": null,
"published_at": null,
"error_message": null,
"display_name": "TryPost",
"display_username": "trypostit",
"display_avatar": "https://pbs.twimg.com/profile_images/1790000000000000000/avatar_400x400.jpg",
"social_account": {
"id": "9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54",
"platform": "x",
"display_name": "TryPost",
"username": "trypostit",
"status": "connected",
"has_posting_schedule": true,
"timezone": "America/Sao_Paulo",
"posting_goal": 5,
"max_content_length": 280,
"long_posts": false,
"verified_badge": null
}
}
],
"labels": [
{
"id": "9c0d1e2f-3a4b-4c5d-8e6f-7a8b9c0d1e2f",
"name": "Launch",
"color": "#2563EB",
"created_at": "2026-09-01 10:00:00",
"updated_at": "2026-09-01 10:00:00"
}
],
"created_at": "2026-10-08 13:20:11",
"updated_at": "2026-10-08 13:20:11"
},
{
"id": "9d3c1f2a-7c5f-4d9b-8e2f-3b8c6d9e1f52",
"post_group_id": "9d3c1f29-e0a1-4b7c-8d2e-5f6a7b8c9d03",
"author": {
"id": "9b1e2d3c-4f5a-4b6c-8d7e-9f0a1b2c3d4e",
"name": "Ana Souza"
},
"content": "Everything we shipped in October, in one pin.",
"media": [
{
"id": "9d3c1f31-9b0c-4d1e-8f2a-3b4c5d6e7f80",
"path": "medias/9d3c1f31-9b0c-4d1e-8f2a-3b4c5d6e7f80.jpg",
"url": "https://media.trypost.it/medias/9d3c1f31-9b0c-4d1e-8f2a-3b4c5d6e7f80.jpg",
"type": "image",
"mime_type": "image/jpeg",
"original_filename": "launch.jpg",
"size": 482113,
"meta": {
"width": 1080,
"height": 1350,
"alt_text": "Changelog cover"
}
}
],
"status": "scheduled",
"schedule_mode": "queue",
"scheduled_at": "2026-10-12 14:00:00",
"published_at": null,
"approval_requested_by": null,
"approval_requested_at": null,
"approved_by": null,
"approved_at": null,
"recurrence": null,
"origin": "trypost",
"platforms": [
{
"id": "9d3c1f2b-2b3c-4d4e-9f5a-6b7c8d9e0f21",
"platform": "pinterest",
"content_type": "pinterest_pin",
"meta": {
"board_id": "1022106146620830917",
"title": "October changelog",
"link": "https://trypost.it/changelog"
},
"status": "pending",
"enabled": true,
"platform_url": null,
"published_at": null,
"error_message": null,
"display_name": "TryPost",
"display_username": "trypostit",
"display_avatar": null,
"social_account": {
"id": "9c8b7a65-5e4f-4a3b-9c2d-1e0f9a8b7c65",
"platform": "pinterest",
"display_name": "TryPost",
"username": "trypostit",
"status": "connected",
"has_posting_schedule": true,
"timezone": "UTC",
"posting_goal": 5,
"max_content_length": 800,
"long_posts": false,
"verified_badge": null
}
}
],
"labels": [
{
"id": "9c0d1e2f-3a4b-4c5d-8e6f-7a8b9c0d1e2f",
"name": "Launch",
"color": "#2563EB",
"created_at": "2026-09-01 10:00:00",
"updated_at": "2026-09-01 10:00:00"
}
],
"created_at": "2026-10-08 13:20:11",
"updated_at": "2026-10-08 13:20:11"
}
]
}{
"message": "Unauthenticated."
}{
"message": "Active subscription required."
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>",
"errors": {}
}{
"name": "rate_limit_exceeded",
"message": "Rate limit exceeded. Please retry after 30 seconds."
}Create posts in batch
Creates one independent post per destination, as the app does when several channels are selected. The posts share a post_group_id. Each destination may override the shared content, media, content_type and meta.
status: scheduled schedules every post at scheduled_at or in each channel’s queue (queue: next or top). One specific slot (queue_slot) is not taken here: use POST /posts or PUT /channels/{account}/queue/slot.
destinations[].meta follows the same per-network rules as platforms[].meta (see PlatformMeta), checked with the destination’s network; errors are reported on destinations.N.meta.*. To schedule or publish, every destination needs its required settings and text or media. API keys belong to workspace admins, so these posts are never stored as pending_approval.
curl --request POST \
--url https://app.trypost.it/api/posts/batch \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"status": "scheduled",
"queue": "next",
"content": "Our October changelog is live.",
"media": [
{
"upload_token": "4f6c2b1e-8d3a-4e5f-9a7b-1c2d3e4f5a6b",
"alt": "Changelog cover"
}
],
"destinations": [
{
"social_account_id": "9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54",
"content_type": "x_post"
},
{
"social_account_id": "9c8b7a65-5e4f-4a3b-9c2d-1e0f9a8b7c65",
"content_type": "pinterest_pin",
"content": "Everything we shipped in October, in one pin.",
"meta": {
"board_id": "1022106146620830917",
"title": "October changelog",
"link": "https://trypost.it/changelog"
}
}
]
}
'import requests
url = "https://app.trypost.it/api/posts/batch"
payload = {
"status": "scheduled",
"queue": "next",
"content": "Our October changelog is live.",
"media": [
{
"upload_token": "4f6c2b1e-8d3a-4e5f-9a7b-1c2d3e4f5a6b",
"alt": "Changelog cover"
}
],
"destinations": [
{
"social_account_id": "9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54",
"content_type": "x_post"
},
{
"social_account_id": "9c8b7a65-5e4f-4a3b-9c2d-1e0f9a8b7c65",
"content_type": "pinterest_pin",
"content": "Everything we shipped in October, in one pin.",
"meta": {
"board_id": "1022106146620830917",
"title": "October changelog",
"link": "https://trypost.it/changelog"
}
}
]
}
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({
status: 'scheduled',
queue: 'next',
content: 'Our October changelog is live.',
media: [{upload_token: '4f6c2b1e-8d3a-4e5f-9a7b-1c2d3e4f5a6b', alt: 'Changelog cover'}],
destinations: [
{
social_account_id: '9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54',
content_type: 'x_post'
},
{
social_account_id: '9c8b7a65-5e4f-4a3b-9c2d-1e0f9a8b7c65',
content_type: 'pinterest_pin',
content: 'Everything we shipped in October, in one pin.',
meta: {
board_id: '1022106146620830917',
title: 'October changelog',
link: 'https://trypost.it/changelog'
}
}
]
})
};
fetch('https://app.trypost.it/api/posts/batch', 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.trypost.it/api/posts/batch",
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([
'status' => 'scheduled',
'queue' => 'next',
'content' => 'Our October changelog is live.',
'media' => [
[
'upload_token' => '4f6c2b1e-8d3a-4e5f-9a7b-1c2d3e4f5a6b',
'alt' => 'Changelog cover'
]
],
'destinations' => [
[
'social_account_id' => '9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54',
'content_type' => 'x_post'
],
[
'social_account_id' => '9c8b7a65-5e4f-4a3b-9c2d-1e0f9a8b7c65',
'content_type' => 'pinterest_pin',
'content' => 'Everything we shipped in October, in one pin.',
'meta' => [
'board_id' => '1022106146620830917',
'title' => 'October changelog',
'link' => 'https://trypost.it/changelog'
]
]
]
]),
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.trypost.it/api/posts/batch"
payload := strings.NewReader("{\n \"status\": \"scheduled\",\n \"queue\": \"next\",\n \"content\": \"Our October changelog is live.\",\n \"media\": [\n {\n \"upload_token\": \"4f6c2b1e-8d3a-4e5f-9a7b-1c2d3e4f5a6b\",\n \"alt\": \"Changelog cover\"\n }\n ],\n \"destinations\": [\n {\n \"social_account_id\": \"9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54\",\n \"content_type\": \"x_post\"\n },\n {\n \"social_account_id\": \"9c8b7a65-5e4f-4a3b-9c2d-1e0f9a8b7c65\",\n \"content_type\": \"pinterest_pin\",\n \"content\": \"Everything we shipped in October, in one pin.\",\n \"meta\": {\n \"board_id\": \"1022106146620830917\",\n \"title\": \"October changelog\",\n \"link\": \"https://trypost.it/changelog\"\n }\n }\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://app.trypost.it/api/posts/batch")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"status\": \"scheduled\",\n \"queue\": \"next\",\n \"content\": \"Our October changelog is live.\",\n \"media\": [\n {\n \"upload_token\": \"4f6c2b1e-8d3a-4e5f-9a7b-1c2d3e4f5a6b\",\n \"alt\": \"Changelog cover\"\n }\n ],\n \"destinations\": [\n {\n \"social_account_id\": \"9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54\",\n \"content_type\": \"x_post\"\n },\n {\n \"social_account_id\": \"9c8b7a65-5e4f-4a3b-9c2d-1e0f9a8b7c65\",\n \"content_type\": \"pinterest_pin\",\n \"content\": \"Everything we shipped in October, in one pin.\",\n \"meta\": {\n \"board_id\": \"1022106146620830917\",\n \"title\": \"October changelog\",\n \"link\": \"https://trypost.it/changelog\"\n }\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.trypost.it/api/posts/batch")
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 \"status\": \"scheduled\",\n \"queue\": \"next\",\n \"content\": \"Our October changelog is live.\",\n \"media\": [\n {\n \"upload_token\": \"4f6c2b1e-8d3a-4e5f-9a7b-1c2d3e4f5a6b\",\n \"alt\": \"Changelog cover\"\n }\n ],\n \"destinations\": [\n {\n \"social_account_id\": \"9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54\",\n \"content_type\": \"x_post\"\n },\n {\n \"social_account_id\": \"9c8b7a65-5e4f-4a3b-9c2d-1e0f9a8b7c65\",\n \"content_type\": \"pinterest_pin\",\n \"content\": \"Everything we shipped in October, in one pin.\",\n \"meta\": {\n \"board_id\": \"1022106146620830917\",\n \"title\": \"October changelog\",\n \"link\": \"https://trypost.it/changelog\"\n }\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"posts": [
{
"id": "9d3c1f2a-6b4e-4c8a-9f1e-2a7b5c8d0e41",
"post_group_id": "9d3c1f29-e0a1-4b7c-8d2e-5f6a7b8c9d03",
"author": {
"id": "9b1e2d3c-4f5a-4b6c-8d7e-9f0a1b2c3d4e",
"name": "Ana Souza"
},
"content": "Our October changelog is live.",
"media": [
{
"id": "9d3c1f30-8a9b-4c0d-9e1f-2a3b4c5d6e7f",
"path": "medias/9d3c1f30-8a9b-4c0d-9e1f-2a3b4c5d6e7f.jpg",
"url": "https://media.trypost.it/medias/9d3c1f30-8a9b-4c0d-9e1f-2a3b4c5d6e7f.jpg",
"type": "image",
"mime_type": "image/jpeg",
"original_filename": "launch.jpg",
"size": 482113,
"meta": {
"width": 1080,
"height": 1350,
"alt_text": "Changelog cover"
}
}
],
"status": "scheduled",
"schedule_mode": "queue",
"scheduled_at": "2026-10-12 14:00:00",
"published_at": null,
"approval_requested_by": null,
"approval_requested_at": null,
"approved_by": null,
"approved_at": null,
"recurrence": null,
"origin": "trypost",
"platforms": [
{
"id": "9d3c1f2b-1a2b-4c3d-8e4f-5a6b7c8d9e10",
"platform": "x",
"content_type": "x_post",
"meta": {
"thread_replies": [
{
"text": "2/ Replies publish under the first post.",
"media": []
}
]
},
"status": "pending",
"enabled": true,
"platform_url": null,
"published_at": null,
"error_message": null,
"display_name": "TryPost",
"display_username": "trypostit",
"display_avatar": "https://pbs.twimg.com/profile_images/1790000000000000000/avatar_400x400.jpg",
"social_account": {
"id": "9c8b7a65-4d3e-4f2a-8b1c-0d9e8f7a6b54",
"platform": "x",
"display_name": "TryPost",
"username": "trypostit",
"status": "connected",
"has_posting_schedule": true,
"timezone": "America/Sao_Paulo",
"posting_goal": 5,
"max_content_length": 280,
"long_posts": false,
"verified_badge": null
}
}
],
"labels": [
{
"id": "9c0d1e2f-3a4b-4c5d-8e6f-7a8b9c0d1e2f",
"name": "Launch",
"color": "#2563EB",
"created_at": "2026-09-01 10:00:00",
"updated_at": "2026-09-01 10:00:00"
}
],
"created_at": "2026-10-08 13:20:11",
"updated_at": "2026-10-08 13:20:11"
},
{
"id": "9d3c1f2a-7c5f-4d9b-8e2f-3b8c6d9e1f52",
"post_group_id": "9d3c1f29-e0a1-4b7c-8d2e-5f6a7b8c9d03",
"author": {
"id": "9b1e2d3c-4f5a-4b6c-8d7e-9f0a1b2c3d4e",
"name": "Ana Souza"
},
"content": "Everything we shipped in October, in one pin.",
"media": [
{
"id": "9d3c1f31-9b0c-4d1e-8f2a-3b4c5d6e7f80",
"path": "medias/9d3c1f31-9b0c-4d1e-8f2a-3b4c5d6e7f80.jpg",
"url": "https://media.trypost.it/medias/9d3c1f31-9b0c-4d1e-8f2a-3b4c5d6e7f80.jpg",
"type": "image",
"mime_type": "image/jpeg",
"original_filename": "launch.jpg",
"size": 482113,
"meta": {
"width": 1080,
"height": 1350,
"alt_text": "Changelog cover"
}
}
],
"status": "scheduled",
"schedule_mode": "queue",
"scheduled_at": "2026-10-12 14:00:00",
"published_at": null,
"approval_requested_by": null,
"approval_requested_at": null,
"approved_by": null,
"approved_at": null,
"recurrence": null,
"origin": "trypost",
"platforms": [
{
"id": "9d3c1f2b-2b3c-4d4e-9f5a-6b7c8d9e0f21",
"platform": "pinterest",
"content_type": "pinterest_pin",
"meta": {
"board_id": "1022106146620830917",
"title": "October changelog",
"link": "https://trypost.it/changelog"
},
"status": "pending",
"enabled": true,
"platform_url": null,
"published_at": null,
"error_message": null,
"display_name": "TryPost",
"display_username": "trypostit",
"display_avatar": null,
"social_account": {
"id": "9c8b7a65-5e4f-4a3b-9c2d-1e0f9a8b7c65",
"platform": "pinterest",
"display_name": "TryPost",
"username": "trypostit",
"status": "connected",
"has_posting_schedule": true,
"timezone": "UTC",
"posting_goal": 5,
"max_content_length": 800,
"long_posts": false,
"verified_badge": null
}
}
],
"labels": [
{
"id": "9c0d1e2f-3a4b-4c5d-8e6f-7a8b9c0d1e2f",
"name": "Launch",
"color": "#2563EB",
"created_at": "2026-09-01 10:00:00",
"updated_at": "2026-09-01 10:00:00"
}
],
"created_at": "2026-10-08 13:20:11",
"updated_at": "2026-10-08 13:20:11"
}
]
}{
"message": "Unauthenticated."
}{
"message": "Active subscription required."
}{
"message": "<string>"
}{
"message": "<string>"
}{
"message": "<string>",
"errors": {}
}{
"name": "rate_limit_exceeded",
"message": "Rate limit exceeded. Please retry after 30 seconds."
}Authorizations
Workspace API key from Settings → API Keys.
Body
draft keeps the post editable. scheduled schedules it at scheduled_at or in the channel queue (queue). publishing publishes it now.
draft, scheduled, publishing One entry per social account; each account at most once.
1Show child attributes
Show child attributes
Shared text, at most 25000 characters. When status is scheduled or publishing it must also fit each account's limit (max_content_length of the social account, for example 280 on X or 25000 for X accounts with long posts, 300 on Bluesky, 500 on Mastodon including the content warning), measured on the text the network receives. A scheduled or published post needs text or media.
25000Shared media. Media in order. Each item is one of upload_token, url or id. Types the channel does not accept are refused.
Show child attributes
Show child attributes
When to publish, for status: scheduled. Any date string; must be in the future and before 2038-01-19. Cannot be combined with queue. Required with status: scheduled unless queue is sent.
Queue position, only with status: scheduled. next takes the channel's first free slot; top takes its first slot and moves the queued posts behind it to the next gap. Every channel must have posting times (has_posting_schedule). Cannot be combined with scheduled_at.
next, top, null Labels of this workspace.
Response
The created posts.
Show child attributes
Show child attributes

