Documentation menu
Post actions
Schedule, queue, publish, and retry posts.
POST /posts/{id}/schedule
Requires Authorization: Bearer <token>.
Path parameters
| Field | Type | Notes |
|---|---|---|
idrequired | string | — |
Request body
| Field | Type | Notes |
|---|---|---|
scheduled_at | stringnullable | format: date-time |
Example request
curl -X POST 'https://app.shoutrrr.com/api/v1/posts/{id}/schedule' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"scheduled_at": "2026-01-01T09:00:00Z"
}' const res = await fetch('https://app.shoutrrr.com/api/v1/posts/{id}/schedule', {
method: 'POST',
headers: {
'Authorization': 'Bearer <token>',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"scheduled_at": "2026-01-01T09:00:00Z"
}),
});
const data = await res.json(); import requests
res = requests.post(
'https://app.shoutrrr.com/api/v1/posts/{id}/schedule',
headers={'Authorization': 'Bearer <token>'},
json={
'scheduled_at': '2026-01-01T09:00:00Z'
},
)
data = res.json() <?php
$ch = curl_init('https://app.shoutrrr.com/api/v1/posts/{id}/schedule');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => '{
"scheduled_at": "2026-01-01T09:00:00Z"
}',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer <token>',
'Content-Type: application/json',
],
]);
$data = json_decode(curl_exec($ch), true); Responses
200
| Field | Type | Notes |
|---|---|---|
postrequired | object | — |
idrequired | string | — |
base_textrequired | string | — |
segmentsrequired | any[]nullable | — |
mentionsrequired | any[] | — |
statusrequired | string | — |
scheduled_atrequired | stringnullable | — |
published_atrequired | stringnullable | — |
updated_atrequired | string | — |
destinationrequired | "all" | "accounts" | "account" | "set" | — |
targetsrequired | object[] | — |
idrequired | string | — |
connected_account_idrequired | string | — |
platformrequired | string | — |
handlerequired | string | — |
display_namerequired | stringnullable | — |
avatar_urlrequired | stringnullable | — |
sectionsrequired | any[] | — |
content_overriderequired | any[]nullable | — |
auto_splitrequired | boolean | — |
statusrequired | string | — |
error_kindrequired | stringnullable | — |
error_messagerequired | stringnullable | — |
attemptsrequired | integer | — |
remote_idrequired | stringnullable | — |
issuesrequired | string | — |
mediarequired | object[] | — |
idrequired | string | — |
urlrequired | string | — |
mimerequired | string | — |
kindrequired | string | — |
duration_secondsrequired | integernullable | — |
alt_textrequired | stringnullable | — |
positionrequired | integer | — |
edit_settingsrequired | any[]nullable | — |
source_urlrequired | stringnullable | — |
401 Unauthenticated
| Field | Type | Notes |
|---|---|---|
messagerequiredError overview. | string | — |
422 Validation error
| Field | Type | Notes |
|---|---|---|
messagerequiredErrors overview. | string | — |
errorsrequiredA detailed description of each field that failed validation. | object | — |
POST /posts/{id}/queue
Requires Authorization: Bearer <token>.
Path parameters
| Field | Type | Notes |
|---|---|---|
idrequired | string | — |
Example request
curl -X POST 'https://app.shoutrrr.com/api/v1/posts/{id}/queue' \
-H 'Authorization: Bearer <token>' const res = await fetch('https://app.shoutrrr.com/api/v1/posts/{id}/queue', {
method: 'POST',
headers: {
'Authorization': 'Bearer <token>',
},
});
const data = await res.json(); import requests
res = requests.post(
'https://app.shoutrrr.com/api/v1/posts/{id}/queue',
headers={'Authorization': 'Bearer <token>'},
)
data = res.json() <?php
$ch = curl_init('https://app.shoutrrr.com/api/v1/posts/{id}/queue');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer <token>',
],
]);
$data = json_decode(curl_exec($ch), true); Responses
200
| Field | Type | Notes |
|---|---|---|
postrequired | object | — |
idrequired | string | — |
base_textrequired | string | — |
segmentsrequired | any[]nullable | — |
mentionsrequired | any[] | — |
statusrequired | string | — |
scheduled_atrequired | stringnullable | — |
published_atrequired | stringnullable | — |
updated_atrequired | string | — |
destinationrequired | "all" | "accounts" | "account" | "set" | — |
targetsrequired | object[] | — |
idrequired | string | — |
connected_account_idrequired | string | — |
platformrequired | string | — |
handlerequired | string | — |
display_namerequired | stringnullable | — |
avatar_urlrequired | stringnullable | — |
sectionsrequired | any[] | — |
content_overriderequired | any[]nullable | — |
auto_splitrequired | boolean | — |
statusrequired | string | — |
error_kindrequired | stringnullable | — |
error_messagerequired | stringnullable | — |
attemptsrequired | integer | — |
remote_idrequired | stringnullable | — |
issuesrequired | string | — |
mediarequired | object[] | — |
idrequired | string | — |
urlrequired | string | — |
mimerequired | string | — |
kindrequired | string | — |
duration_secondsrequired | integernullable | — |
alt_textrequired | stringnullable | — |
positionrequired | integer | — |
edit_settingsrequired | any[]nullable | — |
source_urlrequired | stringnullable | — |
401 Unauthenticated
| Field | Type | Notes |
|---|---|---|
messagerequiredError overview. | string | — |
422 An error
| Field | Type | Notes |
|---|---|---|
messagerequiredError overview. | string | — |
POST /posts/{id}/publish
Requires Authorization: Bearer <token>.
Path parameters
| Field | Type | Notes |
|---|---|---|
idrequired | string | — |
Example request
curl -X POST 'https://app.shoutrrr.com/api/v1/posts/{id}/publish' \
-H 'Authorization: Bearer <token>' const res = await fetch('https://app.shoutrrr.com/api/v1/posts/{id}/publish', {
method: 'POST',
headers: {
'Authorization': 'Bearer <token>',
},
});
const data = await res.json(); import requests
res = requests.post(
'https://app.shoutrrr.com/api/v1/posts/{id}/publish',
headers={'Authorization': 'Bearer <token>'},
)
data = res.json() <?php
$ch = curl_init('https://app.shoutrrr.com/api/v1/posts/{id}/publish');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer <token>',
],
]);
$data = json_decode(curl_exec($ch), true); Responses
202
| Field | Type | Notes |
|---|---|---|
statusrequired | "queued" | — |
messagerequired | "Publishing started. Poll GET /posts/{id} for per-target status." | — |
postrequired | object | — |
idrequired | string | — |
base_textrequired | string | — |
segmentsrequired | any[]nullable | — |
mentionsrequired | any[] | — |
statusrequired | string | — |
scheduled_atrequired | stringnullable | — |
published_atrequired | stringnullable | — |
updated_atrequired | string | — |
destinationrequired | "all" | "accounts" | "account" | "set" | — |
targetsrequired | object[] | — |
idrequired | string | — |
connected_account_idrequired | string | — |
platformrequired | string | — |
handlerequired | string | — |
display_namerequired | stringnullable | — |
avatar_urlrequired | stringnullable | — |
sectionsrequired | any[] | — |
content_overriderequired | any[]nullable | — |
auto_splitrequired | boolean | — |
statusrequired | string | — |
error_kindrequired | stringnullable | — |
error_messagerequired | stringnullable | — |
attemptsrequired | integer | — |
remote_idrequired | stringnullable | — |
issuesrequired | string | — |
mediarequired | object[] | — |
idrequired | string | — |
urlrequired | string | — |
mimerequired | string | — |
kindrequired | string | — |
duration_secondsrequired | integernullable | — |
alt_textrequired | stringnullable | — |
positionrequired | integer | — |
edit_settingsrequired | any[]nullable | — |
source_urlrequired | stringnullable | — |
401 Unauthenticated
| Field | Type | Notes |
|---|---|---|
messagerequiredError overview. | string | — |
403 Authorization error
| Field | Type | Notes |
|---|---|---|
messagerequiredError overview. | string | — |
POST /posts/{id}/targets/{targetId}/retry
Requires Authorization: Bearer <token>.
Path parameters
| Field | Type | Notes |
|---|---|---|
idrequired | string | — |
targetIdrequired | string | — |
Example request
curl -X POST 'https://app.shoutrrr.com/api/v1/posts/{id}/targets/{targetId}/retry' \
-H 'Authorization: Bearer <token>' const res = await fetch('https://app.shoutrrr.com/api/v1/posts/{id}/targets/{targetId}/retry', {
method: 'POST',
headers: {
'Authorization': 'Bearer <token>',
},
});
const data = await res.json(); import requests
res = requests.post(
'https://app.shoutrrr.com/api/v1/posts/{id}/targets/{targetId}/retry',
headers={'Authorization': 'Bearer <token>'},
)
data = res.json() <?php
$ch = curl_init('https://app.shoutrrr.com/api/v1/posts/{id}/targets/{targetId}/retry');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer <token>',
],
]);
$data = json_decode(curl_exec($ch), true); Responses
202
| Field | Type | Notes |
|---|---|---|
statusrequired | "queued" | — |
postrequired | object | — |
idrequired | string | — |
base_textrequired | string | — |
segmentsrequired | any[]nullable | — |
mentionsrequired | any[] | — |
statusrequired | string | — |
scheduled_atrequired | stringnullable | — |
published_atrequired | stringnullable | — |
updated_atrequired | string | — |
destinationrequired | "all" | "accounts" | "account" | "set" | — |
targetsrequired | object[] | — |
idrequired | string | — |
connected_account_idrequired | string | — |
platformrequired | string | — |
handlerequired | string | — |
display_namerequired | stringnullable | — |
avatar_urlrequired | stringnullable | — |
sectionsrequired | any[] | — |
content_overriderequired | any[]nullable | — |
auto_splitrequired | boolean | — |
statusrequired | string | — |
error_kindrequired | stringnullable | — |
error_messagerequired | stringnullable | — |
attemptsrequired | integer | — |
remote_idrequired | stringnullable | — |
issuesrequired | string | — |
mediarequired | object[] | — |
idrequired | string | — |
urlrequired | string | — |
mimerequired | string | — |
kindrequired | string | — |
duration_secondsrequired | integernullable | — |
alt_textrequired | stringnullable | — |
positionrequired | integer | — |
edit_settingsrequired | any[]nullable | — |
source_urlrequired | stringnullable | — |
401 Unauthenticated
| Field | Type | Notes |
|---|---|---|
messagerequiredError overview. | string | — |
403 Authorization error
| Field | Type | Notes |
|---|---|---|
messagerequiredError overview. | string | — |
404 Not found
| Field | Type | Notes |
|---|---|---|
messagerequiredError overview. | string | — |
422 An error
| Field | Type | Notes |
|---|---|---|
messagerequiredError overview. | string | — |