Documentation menu

Post actions

Schedule, queue, publish, and retry posts.

POST /posts/{id}/schedule

Requires Authorization: Bearer <token>.

Path parameters

FieldTypeNotes
idrequiredstring—

Request body

FieldTypeNotes
scheduled_atstringnullableformat: 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

FieldTypeNotes
postrequiredobject—
idrequiredstring—
base_textrequiredstring—
segmentsrequiredany[]nullable—
mentionsrequiredany[]—
statusrequiredstring—
scheduled_atrequiredstringnullable—
published_atrequiredstringnullable—
updated_atrequiredstring—
destinationrequired"all" | "accounts" | "account" | "set"—
targetsrequiredobject[]—
idrequiredstring—
connected_account_idrequiredstring—
platformrequiredstring—
handlerequiredstring—
display_namerequiredstringnullable—
avatar_urlrequiredstringnullable—
sectionsrequiredany[]—
content_overriderequiredany[]nullable—
auto_splitrequiredboolean—
statusrequiredstring—
error_kindrequiredstringnullable—
error_messagerequiredstringnullable—
attemptsrequiredinteger—
remote_idrequiredstringnullable—
issuesrequiredstring—
mediarequiredobject[]—
idrequiredstring—
urlrequiredstring—
mimerequiredstring—
kindrequiredstring—
duration_secondsrequiredintegernullable—
alt_textrequiredstringnullable—
positionrequiredinteger—
edit_settingsrequiredany[]nullable—
source_urlrequiredstringnullable—

401 Unauthenticated

FieldTypeNotes
messagerequiredError overview.string—

422 Validation error

FieldTypeNotes
messagerequiredErrors overview.string—
errorsrequiredA detailed description of each field that failed validation.object—

POST /posts/{id}/queue

Requires Authorization: Bearer <token>.

Path parameters

FieldTypeNotes
idrequiredstring—

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

FieldTypeNotes
postrequiredobject—
idrequiredstring—
base_textrequiredstring—
segmentsrequiredany[]nullable—
mentionsrequiredany[]—
statusrequiredstring—
scheduled_atrequiredstringnullable—
published_atrequiredstringnullable—
updated_atrequiredstring—
destinationrequired"all" | "accounts" | "account" | "set"—
targetsrequiredobject[]—
idrequiredstring—
connected_account_idrequiredstring—
platformrequiredstring—
handlerequiredstring—
display_namerequiredstringnullable—
avatar_urlrequiredstringnullable—
sectionsrequiredany[]—
content_overriderequiredany[]nullable—
auto_splitrequiredboolean—
statusrequiredstring—
error_kindrequiredstringnullable—
error_messagerequiredstringnullable—
attemptsrequiredinteger—
remote_idrequiredstringnullable—
issuesrequiredstring—
mediarequiredobject[]—
idrequiredstring—
urlrequiredstring—
mimerequiredstring—
kindrequiredstring—
duration_secondsrequiredintegernullable—
alt_textrequiredstringnullable—
positionrequiredinteger—
edit_settingsrequiredany[]nullable—
source_urlrequiredstringnullable—

401 Unauthenticated

FieldTypeNotes
messagerequiredError overview.string—

422 An error

FieldTypeNotes
messagerequiredError overview.string—

POST /posts/{id}/publish

Requires Authorization: Bearer <token>.

Path parameters

FieldTypeNotes
idrequiredstring—

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

FieldTypeNotes
statusrequired"queued"—
messagerequired"Publishing started. Poll GET /posts/{id} for per-target status."—
postrequiredobject—
idrequiredstring—
base_textrequiredstring—
segmentsrequiredany[]nullable—
mentionsrequiredany[]—
statusrequiredstring—
scheduled_atrequiredstringnullable—
published_atrequiredstringnullable—
updated_atrequiredstring—
destinationrequired"all" | "accounts" | "account" | "set"—
targetsrequiredobject[]—
idrequiredstring—
connected_account_idrequiredstring—
platformrequiredstring—
handlerequiredstring—
display_namerequiredstringnullable—
avatar_urlrequiredstringnullable—
sectionsrequiredany[]—
content_overriderequiredany[]nullable—
auto_splitrequiredboolean—
statusrequiredstring—
error_kindrequiredstringnullable—
error_messagerequiredstringnullable—
attemptsrequiredinteger—
remote_idrequiredstringnullable—
issuesrequiredstring—
mediarequiredobject[]—
idrequiredstring—
urlrequiredstring—
mimerequiredstring—
kindrequiredstring—
duration_secondsrequiredintegernullable—
alt_textrequiredstringnullable—
positionrequiredinteger—
edit_settingsrequiredany[]nullable—
source_urlrequiredstringnullable—

401 Unauthenticated

FieldTypeNotes
messagerequiredError overview.string—

403 Authorization error

FieldTypeNotes
messagerequiredError overview.string—

POST /posts/{id}/targets/{targetId}/retry

Requires Authorization: Bearer <token>.

Path parameters

FieldTypeNotes
idrequiredstring—
targetIdrequiredstring—

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

FieldTypeNotes
statusrequired"queued"—
postrequiredobject—
idrequiredstring—
base_textrequiredstring—
segmentsrequiredany[]nullable—
mentionsrequiredany[]—
statusrequiredstring—
scheduled_atrequiredstringnullable—
published_atrequiredstringnullable—
updated_atrequiredstring—
destinationrequired"all" | "accounts" | "account" | "set"—
targetsrequiredobject[]—
idrequiredstring—
connected_account_idrequiredstring—
platformrequiredstring—
handlerequiredstring—
display_namerequiredstringnullable—
avatar_urlrequiredstringnullable—
sectionsrequiredany[]—
content_overriderequiredany[]nullable—
auto_splitrequiredboolean—
statusrequiredstring—
error_kindrequiredstringnullable—
error_messagerequiredstringnullable—
attemptsrequiredinteger—
remote_idrequiredstringnullable—
issuesrequiredstring—
mediarequiredobject[]—
idrequiredstring—
urlrequiredstring—
mimerequiredstring—
kindrequiredstring—
duration_secondsrequiredintegernullable—
alt_textrequiredstringnullable—
positionrequiredinteger—
edit_settingsrequiredany[]nullable—
source_urlrequiredstringnullable—

401 Unauthenticated

FieldTypeNotes
messagerequiredError overview.string—

403 Authorization error

FieldTypeNotes
messagerequiredError overview.string—

404 Not found

FieldTypeNotes
messagerequiredError overview.string—

422 An error

FieldTypeNotes
messagerequiredError overview.string—