> **Shapeless capabilities index**
> Fetch https://shapelessai.com/llms.txt to discover every page before exploring further.
> Every page also answers Markdown: append `.md` to its path, or send `Accept: text/markdown`.

# Review the queue

*Verified 2026-10-07. Source: https://shapelessai.com/capabilities/review-queue*

Read everything proposed, scheduled and published on the account, then act on it: approve a proposal (proposed becomes scheduled), dismiss it, publish a queued post now, edit a still-scheduled post's time, text, media or target account, cancel it, or ask for a rework from feedback.

A batch resolves in one call. Every draft the agent team makes lands here first, so this is where a human, or the agent acting for one, says yes.

## Ask in plain words

- "what is waiting for my approval"
- "approve the two LinkedIn posts you would pick"
- "move Thursday's post to Friday 6pm"
- "publish the queued post now"
- "cancel the scheduled TikTok"

## From an agent host (MCP)

Server: `https://shapelessai.com/mcp` ([add it to your host](https://shapelessai.com/connect)).

- `posts_list`: The post queue: proposed drafts, scheduled posts, published history. Needs the read scope.
- `posts_get`: One post's live state. Needs the read scope.
- `posts_approve`: PUBLISHES CONTENT: approving moves proposals to the schedule, and they will go out. Needs the publish scope.
- `posts_dismiss`: Cancel posts: proposed, scheduled, failed or handed-off. Nothing already publishing or published is touched. Pass the user's reason when they gave one; it teaches the agent their taste. Needs the write scope.
- `posts_publish`: PUBLISHES CONTENT NOW: pushes a queued post to the platform immediately. Needs the publish scope.

## From code (REST)

Bearer API key with the scope each call names ([auth](https://shapelessai.com/docs/auth), [OpenAPI](https://shapelessai.com/api/openapi.json)).

- `GET /api/posts` (read scope): The queue: proposed, scheduled, published. ?status= and ?limit= narrow it.
- `GET /api/posts/{id}` (read scope): One post's live state.
- `PATCH /api/posts/{id}` (write scope): Edit a still-scheduled post: time, text, media, settings, first comment, or the target account (same platform).
- `DELETE /api/posts/{id}` (write scope): Cancel a scheduled or proposed post.
- `POST /api/posts/{id}/approve` (publish scope): Approve one proposal: proposed -> scheduled.
- `POST /api/posts/{id}/publish` (publish scope): Publish a queued post now.
- `POST /api/posts/{id}/mark-posted` (publish scope): Record that you posted it yourself.
- `POST /api/posts/{id}/revise` (write scope): Rework a draft from feedback.
- `POST /api/posts/resolve` (publish scope): Resolve posts: {ids, verb: approve|dismiss}. Approve takes proposed posts; dismiss cancels proposed, scheduled, failed or handed-off ones. Dismiss costs write.

## From a terminal (CLI)

- `shapeless posts list`
- `shapeless posts show`
- `shapeless posts approve`
- `shapeless posts dismiss`
- `shapeless posts publish`
- `shapeless posts mark-posted`

## Example

```bash
curl -s "https://shapelessai.com/api/posts?status=proposed" -H "Authorization: Bearer $SHAPELESS_API_KEY"
```
```jsonc
// MCP tool call
{ "tool": "posts_approve", "arguments": { "ids": ["<postId>"] } }
```
```bash
shapeless posts approve <id>
```

## Refusals

| Status | Meaning |
| --- | --- |
| 409 | Already publishing, or the new account is another platform. |
| 402 | Free plan day full (FreeDailyCap). |
| 409 | Needs a connected account: {needsConnection, connect: {platform, url, expiresAt}} - hand connect.url to the human. |

## Where else

- [Do it in the studio](https://shapelessai.com/studio/approvals)
- [The posts docs](https://shapelessai.com/docs/posts) ([markdown](https://shapelessai.com/docs/posts.md))
