> ## Documentation index
> Fetch the complete documentation index at: https://dash.robopost.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Social inbox

The inbox holds the comments on your published posts and your Google Business Profile reviews. Through the
API you can read them and answer them on the network.

**You need:** an [API key](https://dash.robopost.app/docs/api/authentication.md) and a plan that includes the
[social inbox](https://dash.robopost.app/docs/engage/social-inbox.md).

## Which networks

| Network | Read comments | Comment and reply | Delete comments |
| --- | --- | --- | --- |
| Facebook, Instagram, YouTube, Threads, Bluesky, LinkedIn | Yes | Yes | Yes |
| Google Business Profile | Reviews | Reply to reviews | No |
| TikTok, Pinterest, X and others | No | No | No |

## Read comments

```bash
curl "https://public-api.robopost.app/v1/social_inbox_items?post_id=<post id>&limit=50" \
  -H "Authorization: Bearer $ROBOPOST_API_KEY"
```

Filters: `post_id`, `channel_id`, `social_network`, `is_read`, `unread_only`, `search_text`, `external_id`,
`parent_social_inbox_item_id`, with `skip`, `limit`, `sort_by_field` and `sort_order`.
`GET /v1/social_inbox_items/threads` groups comments by post with their replies, `GET /v1/social_inbox_items/{id}`
returns one item, and `GET /v1/social_inbox_items/unread/count` and `/unread/by_channel` count unread items.

Each item has its `_id`, `text`, `comment_author`, `comment_created_at`, `post_id`, `channel_id`,
`social_network`, `external_id` (the comment's ID on the network), `parent_social_inbox_item_id` for
replies, and `is_read`. Comments are fetched from the networks regularly; new ones can take up to a couple
of hours to appear.

## Comment on a published post

```bash
curl -X POST https://public-api.robopost.app/v1/social_inbox_items/posts/<post id>/comments \
  -H "Authorization: Bearer $ROBOPOST_API_KEY" -H "Content-Type: application/json" \
  -d '{"text": "Thanks for watching!"}'
```

The comment is published on the network before the call returns. The `201` response is the new inbox
item; its `external_id` is the comment's ID on the network, your receipt that it exists there. If the
network refuses it, you get `502 NETWORK_REJECTED_COMMENT` and nothing is stored.

## Reply to a comment

```bash
curl -X POST https://public-api.robopost.app/v1/social_inbox_items/<inbox item id>/reply \
  -H "Authorization: Bearer $ROBOPOST_API_KEY" -H "Content-Type: application/json" \
  -d '{"text": "Glad you liked it"}'
```

Same as commenting with `parent_social_inbox_item_id` set to that item.

## Reply to a Google review

```bash
curl -X POST https://public-api.robopost.app/v1/social_inbox_items/channels/<channel id>/gmb/reviews/<review external_id>/reply \
  -H "Authorization: Bearer $ROBOPOST_API_KEY" -H "Content-Type: application/json" \
  -d '{"text": "Thank you for your review!"}'
```

## Delete a comment, mark as read

- `DELETE /v1/social_inbox_items/posts/{post id}/comments/{inbox item id}` deletes it on the network. Networks
  usually only let you delete your own comments, or comments on your own posts.
- `PATCH /v1/social_inbox_items/{id}` with `{"is_read": true}` (or `false`).

| Code | Meaning |
| --- | --- |
| `NETWORK_NOT_SUPPORTED` | The post's network doesn't allow comments through apps |
| `POST_NOT_PUBLISHED` | Only published posts can be commented |
| `NETWORK_REJECTED_COMMENT`, `NETWORK_REJECTED_DELETE` | The network said no; check the channel is connected |

## Next

[Analytics](https://dash.robopost.app/docs/api/analytics.md)
