Documentation menu

Posts

Create, read, update, and delete posts and their per-platform targets.

GET /posts

Requires Authorization: Bearer <token>.

Query parameters

FieldTypeNotes
statusdraft | scheduled | publishing | published | partial | failed | deleted | nullnullable—
qstringnullablemax 200
per_pageintegernullable1–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

FieldTypeNotes
datarequiredobject—
paginationrequiredobject—
per_pagerequiredinteger—
next_cursorrequiredstringnullable—
prev_cursorrequiredstringnullable—
has_morerequiredboolean—

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

Requires Authorization: Bearer <token>.

Request body

FieldTypeNotes
base_textrequiredstringnullable—
segmentsstring[]—
destinationrequiredobject—
kindrequiredall | set | account—
idstringnullable—
mentionsobject[]—
idrequiredstring—
labelrequiredstring—
handlesobject—
xstringnullable—
blueskystringnullable—
linkedinstringnullable—

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

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—

403 Authorization error

FieldTypeNotes
messagerequiredError overview.string—

422 Validation error

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

GET /posts/{id}

Requires Authorization: Bearer <token>.

Path parameters

FieldTypeNotes
idrequiredstring—

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

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—

PATCH /posts/{id}

Requires Authorization: Bearer <token>.

Path parameters

FieldTypeNotes
idrequiredstring—

Request body

FieldTypeNotes
base_textrequiredstringnullable—
expected_updated_atstringnullable—
segmentsstring[]—
destinationrequiredobject—
kindrequiredall | set | account—
idstringnullable—
media_idsstring[]—
mentionsobject[]—
idrequiredstring—
labelrequiredstring—
handlesobject—
xstringnullable—
blueskystringnullable—
linkedinstringnullable—
targetsobject[]—
connected_account_idrequiredstring—
auto_splitboolean—
content_overrideobjectnullable—
textstringnullable—
media_idsstring[]—

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

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—

409 An error

FieldTypeNotes
messagerequiredError overview.string—

422 Validation error

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

DELETE /posts/{id}

Requires Authorization: Bearer <token>.

Path parameters

FieldTypeNotes
idrequiredstring—

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

FieldTypeNotes
deletedrequiredboolean—
remoterequiredboolean—
messagerequired"Remote deletion queued for published targets."—
FieldTypeNotes
deletedrequiredboolean—
remoterequiredboolean—

401 Unauthenticated

FieldTypeNotes
messagerequiredError overview.string—

403 Authorization error

FieldTypeNotes
messagerequiredError overview.string—