Inbox summary
See unread comments, mentions, messages and reviews across your accounts, which inbox channels each account can use, and ask for a fresh read.
The inbox gathers four channels from the connected accounts: comments on your posts, mentions of your accounts in other people's posts, direct messages, and Google Business Profile reviews. TikTok and X have no inbox.
https://post.adaptlypost.com/post/api/v1/inbox/summaryReturns the unread count of each channel and, per connected account, which channels it can use and when it was last read.
Every role holds inbox.read, so any valid key can read the inbox.
About 10 minutes, not real time
AdaptlyPost reads each connected account every 10 minutes and keeps what it finds. The lists answer from that copy, so a new comment, mention, message or review shows up within about 10 minutes. POST /api/v1/inbox/refresh asks for a read now. Webhook events come from the same reads.Channels that need a reconnect
Every channel is open to the API. When a connection lacks the platform permission for a channel or action, including permissions the platform is still reviewing for AdaptlyPost, GET /api/v1/inbox/summary shows the channel as RECONNECT_REQUIRED and every write on it answers 403 inbox_reconnect_required. An expired token answers the same. Ask the user to reconnect the account in AdaptlyPost; retrying does not help.Supported platforms
Which channel each platform has. An account only gets a channel its connection has the permission for; the summary tells you per account.
| Platform | Comments | Mentions | Messages | Reviews |
|---|---|---|---|---|
FACEBOOK | Yes | Yes | Yes | No |
INSTAGRAM | Yes | Read only, for accounts connected through Facebook | Yes | No |
THREADS | Yes | Yes | No | No |
YOUTUBE | Yes | No | No | No |
LINKEDIN | Organization pages only | No | No | No |
BLUESKY | Yes | Yes | Yes | No |
MASTODON | Yes | Yes | Yes | No |
GOOGLE_BUSINESS | No | No | No | Yes |
Summary fields
| Field | Description |
|---|---|
unread | UNREAD items per channel: comments, mentions, conversations and reviews |
accounts[].accountId | The account's id from GET /social-accounts, with its platform, accountName and avatarUrl |
accounts[].needsReconnect | True when the account must be reconnected before its comments can be read |
accounts[].lastSyncedAt | When AdaptlyPost last read the account, or null before the first read |
accounts[].lastErrorCode | Why the last read failed, or null |
accounts[].comments | AVAILABLE, RECONNECT_REQUIRED or UNSUPPORTED for that channel. See below |
accounts[].mentions | AVAILABLE, RECONNECT_REQUIRED or UNSUPPORTED for that channel. See below |
accounts[].messages | AVAILABLE, RECONNECT_REQUIRED or UNSUPPORTED for that channel. See below |
accounts[].reviews | AVAILABLE, RECONNECT_REQUIRED or UNSUPPORTED for that channel. See below |
Channel access
| Value | Description |
|---|---|
AVAILABLE | The account can use this channel |
RECONNECT_REQUIRED | The platform has the channel, but this connection lacks the permission for it, or its token expired. Writes answer 403 inbox_reconnect_required until the user reconnects the account in AdaptlyPost |
UNSUPPORTED | The platform has no such channel |
Read the accounts now
https://post.adaptlypost.com/post/api/v1/inbox/refreshQueues a read of every connected account instead of waiting for the next 10-minute run, and answers 202 { "queued": true }. The lists change once the read finishes.
Refusals
A refused call answers { statusCode, error, code, message }. Branch on code. message explains the refusal in words.
| Code | Status | When, and what to do |
|---|---|---|
inbox_item_not_found | 404 | The id does not exist or belongs to another workspace. Stop |
inbox_action_unsupported | 400 | The platform, or this item, does not allow this hide, delete or like. capabilities says what applies. Stop |
inbox_reconnect_required | 403 | The connection lacks the permission for this channel or action, including one still in platform review, or its token expired. Ask the user to reconnect the account in AdaptlyPost. Do not retry |
inbox_reply_invalid | 400 | The text is empty or over the limit. The message names the limit. Fix the text |
inbox_messaging_window_closed | 400 | Facebook or Instagram: the 24-hour reply window has passed. Stop |
inbox_rate_limited | 429 | The platform rate limited AdaptlyPost. Retry after a while |
inbox_platform_error | 503 | The platform failed. Retry later |
permission_denied | 403 | The key's role lacks inbox.read or inbox.reply. Do not retry |
subscription_required | 403 | A write without an active AdaptlyPost plan. Do not retry |
curl --request GET \
--url https://post.adaptlypost.com/post/api/v1/inbox/summary \
--header 'Authorization: Bearer <api-key>'curl --request POST \
--url https://post.adaptlypost.com/post/api/v1/inbox/refresh \
--header 'Authorization: Bearer <api-key>'
202
{ "queued": true }{
"unread": {
"comments": 12,
"mentions": 3,
"conversations": 2,
"reviews": 1
},
"accounts": [
{
"accountId": "conn_ig_001",
"platform": "INSTAGRAM",
"accountName": "adaptlypost",
"avatarUrl": "https://cdn.adaptlypost.com/avatars/ig_001.jpg",
"needsReconnect": false,
"lastSyncedAt": "2026-11-08T09:40:12.000Z",
"lastErrorCode": null,
"comments": "AVAILABLE",
"mentions": "AVAILABLE",
"messages": "RECONNECT_REQUIRED",
"reviews": "UNSUPPORTED"
},
{
"accountId": "conn_gbp_001",
"platform": "GOOGLE_BUSINESS",
"accountName": "AdaptlyPost Kraków",
"avatarUrl": null,
"needsReconnect": false,
"lastSyncedAt": "2026-11-08T09:38:55.000Z",
"lastErrorCode": null,
"comments": "UNSUPPORTED",
"mentions": "UNSUPPORTED",
"messages": "UNSUPPORTED",
"reviews": "AVAILABLE"
}
]
}