Documentation menu
Posts
Create, read, update, and delete posts and their per-platform targets.
GET /posts
Requires Authorization: Bearer <token>.
Query parameters
| Field | Type | Notes |
|---|---|---|
status | draft | scheduled | publishing | published | partial | failed | deleted | nullnullable | — |
q | stringnullable | max 200 |
per_page | integernullable | 1–100 |
Example request
curl 'https://app.shoutrrr.com/api/v1/posts' \
-H 'Authorization: Bearer <token>' const res = await fetch('https://app.shoutrrr.com/api/v1/posts', {
method: 'GET',
headers: {
'Authorization': 'Bearer <token>',
},
});
const data = await res.json(); import requests
res = requests.get(
'https://app.shoutrrr.com/api/v1/posts',
headers={'Authorization': 'Bearer <token>'},
)
data = res.json() <?php
$ch = curl_init('https://app.shoutrrr.com/api/v1/posts');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer <token>',
],
]);
$data = json_decode(curl_exec($ch), true); Responses
200
| Field | Type | Notes |
|---|---|---|
datarequired | object | — |
paginationrequired | object | — |
per_pagerequired | integer | — |
next_cursorrequired | stringnullable | — |
prev_cursorrequired | stringnullable | — |
has_morerequired | boolean | — |
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
Requires Authorization: Bearer <token>.
Request body
| Field | Type | Notes |
|---|---|---|
base_textrequired | stringnullable | — |
segments | string[] | — |
destinationrequired | object | — |
kindrequired | all | set | account | — |
id | stringnullable | — |
mentions | object[] | — |
idrequired | string | — |
labelrequired | string | — |
handles | object | — |
x | stringnullable | — |
bluesky | stringnullable | — |
linkedin | stringnullable | — |
Example request
curl -X POST 'https://app.shoutrrr.com/api/v1/posts' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"base_text": "string",
"destination": {
"kind": "all"
}
}' const res = await fetch('https://app.shoutrrr.com/api/v1/posts', {
method: 'POST',
headers: {
'Authorization': 'Bearer <token>',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"base_text": "string",
"destination": {
"kind": "all"
}
}),
});
const data = await res.json(); import requests
res = requests.post(
'https://app.shoutrrr.com/api/v1/posts',
headers={'Authorization': 'Bearer <token>'},
json={
'base_text': 'string',
'destination': {
'kind': 'all'
}
},
)
data = res.json() <?php
$ch = curl_init('https://app.shoutrrr.com/api/v1/posts');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => '{
"base_text": "string",
"destination": {
"kind": "all"
}
}',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer <token>',
'Content-Type: application/json',
],
]);
$data = json_decode(curl_exec($ch), true); Responses
201
| 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 | — |
403 Authorization error
| 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 | — |
GET /posts/{id}
Requires Authorization: Bearer <token>.
Path parameters
| Field | Type | Notes |
|---|---|---|
idrequired | string | — |
Example request
curl 'https://app.shoutrrr.com/api/v1/posts/{id}' \
-H 'Authorization: Bearer <token>' const res = await fetch('https://app.shoutrrr.com/api/v1/posts/{id}', {
method: 'GET',
headers: {
'Authorization': 'Bearer <token>',
},
});
const data = await res.json(); import requests
res = requests.get(
'https://app.shoutrrr.com/api/v1/posts/{id}',
headers={'Authorization': 'Bearer <token>'},
)
data = res.json() <?php
$ch = curl_init('https://app.shoutrrr.com/api/v1/posts/{id}');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
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 | — |
PATCH /posts/{id}
Requires Authorization: Bearer <token>.
Path parameters
| Field | Type | Notes |
|---|---|---|
idrequired | string | — |
Request body
| Field | Type | Notes |
|---|---|---|
base_textrequired | stringnullable | — |
expected_updated_at | stringnullable | — |
segments | string[] | — |
destinationrequired | object | — |
kindrequired | all | set | account | — |
id | stringnullable | — |
media_ids | string[] | — |
mentions | object[] | — |
idrequired | string | — |
labelrequired | string | — |
handles | object | — |
x | stringnullable | — |
bluesky | stringnullable | — |
linkedin | stringnullable | — |
targets | object[] | — |
connected_account_idrequired | string | — |
auto_split | boolean | — |
content_override | objectnullable | — |
text | stringnullable | — |
media_ids | string[] | — |
Example request
curl -X PATCH 'https://app.shoutrrr.com/api/v1/posts/{id}' \
-H 'Authorization: Bearer <token>' \
-H 'Content-Type: application/json' \
-d '{
"base_text": "string",
"destination": {
"kind": "all"
}
}' const res = await fetch('https://app.shoutrrr.com/api/v1/posts/{id}', {
method: 'PATCH',
headers: {
'Authorization': 'Bearer <token>',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"base_text": "string",
"destination": {
"kind": "all"
}
}),
});
const data = await res.json(); import requests
res = requests.patch(
'https://app.shoutrrr.com/api/v1/posts/{id}',
headers={'Authorization': 'Bearer <token>'},
json={
'base_text': 'string',
'destination': {
'kind': 'all'
}
},
)
data = res.json() <?php
$ch = curl_init('https://app.shoutrrr.com/api/v1/posts/{id}');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_POSTFIELDS => '{
"base_text": "string",
"destination": {
"kind": "all"
}
}',
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 | — |
409 An error
| 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 | — |
DELETE /posts/{id}
Requires Authorization: Bearer <token>.
Path parameters
| Field | Type | Notes |
|---|---|---|
idrequired | string | — |
Example request
curl -X DELETE 'https://app.shoutrrr.com/api/v1/posts/{id}' \
-H 'Authorization: Bearer <token>' const res = await fetch('https://app.shoutrrr.com/api/v1/posts/{id}', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer <token>',
},
});
const data = await res.json(); import requests
res = requests.delete(
'https://app.shoutrrr.com/api/v1/posts/{id}',
headers={'Authorization': 'Bearer <token>'},
)
data = res.json() <?php
$ch = curl_init('https://app.shoutrrr.com/api/v1/posts/{id}');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer <token>',
],
]);
$data = json_decode(curl_exec($ch), true); Responses
200
| Field | Type | Notes |
|---|---|---|
deletedrequired | boolean | — |
remoterequired | boolean | — |
messagerequired | "Remote deletion queued for published targets." | — |
| Field | Type | Notes |
|---|---|---|
deletedrequired | boolean | — |
remoterequired | boolean | — |
401 Unauthenticated
| Field | Type | Notes |
|---|---|---|
messagerequiredError overview. | string | — |
403 Authorization error
| Field | Type | Notes |
|---|---|---|
messagerequiredError overview. | string | — |