> ## Documentation Index
> Fetch the complete documentation index at: https://docs.postqueen.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Limits and Gaps

> What the CLI cannot do, and which surface covers each gap

You script a week of posts, it works beautifully, and then you try to disconnect a channel from
the same script and there is no command for it. Nothing is broken. The CLI covers writing to your
calendar and reading it back; connections and a few newer endpoints live on the
[Public API](/public-api/introduction) instead.

Read this before you build a pipeline on the CLI, not halfway through.

## What has no command

The CLI reaches thirteen of the API's twenty-two endpoints. Here is everything it does not, and
where each one lives.

| What you want                        | In the CLI                                                            | Where it lives instead                                                                                                   |
| ------------------------------------ | --------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------ |
| Connect a new channel                | No command                                                            | [`GET /social/{integration}`](/public-api/integrations/connect) returns the OAuth URL, or use **Add Channel** in the app |
| Remove a channel                     | No command                                                            | [`DELETE /integrations/{id}`](/public-api/integrations/delete), or the app                                               |
| Confirm your key still reaches her   | `auth:status` reads local credentials only and never calls the server | [`GET /is-connected`](/public-api/integrations/is-connected), or just run `postqueen integrations:list`                  |
| Find the next open slot on a channel | No command                                                            | [`GET /find-slot/{id}`](/public-api/integrations/find-slot)                                                              |
| See what published and what failed   | No command                                                            | [`GET /notifications`](/public-api/notifications/list), 100 per page, newest first                                       |
| Delete every post in a group         | `posts:delete` takes one id at a time                                 | [`DELETE /posts/group/{group}`](/public-api/posts/delete-by-group)                                                       |
| Upload media from a URL              | `upload` takes a local file                                           | [`POST /upload-from-url`](/public-api/uploads/upload-from-url)                                                           |
| Generate a video                     | No command                                                            | [`POST /generate-video`](/public-api/video/generate)                                                                     |
| Read a video generator's options     | No command                                                            | [`POST /video/function`](/public-api/video/function)                                                                     |

Three of these are worth a longer sentence.

### Connecting a channel is deliberately not scriptable

Connecting means an OAuth round trip: the network shows a consent screen to a human, then
redirects back. `GET /social/{integration}` hands you the URL to send someone to, but somebody
still has to click it. There is no headless path, and that is the network's rule rather than ours.

### `auth:status` is not a health check

It prints which credentials the CLI found, which method it will use and which API URL it will
call. It makes no request, so a revoked key still looks fine. If you want a real check in a
script, `postqueen integrations:list` fails loudly when the key is bad.

### Analytics reach further here than anywhere else

`analytics:platform` and `analytics:post` have no equivalent over
[MCP](/mcp/limits-and-troubleshooting), and no n8n operation either. If reading your numbers is
part of the job, the CLI or the API are the two surfaces that can do it.

## What no surface does yet

Not a CLI gap, but worth knowing before you plan around it:

* **Reading or replying to comments.** No interface exposes this today.
* **Editing a published post.** Posts can move between draft and scheduled with
  `posts:status`, but once a network has published something, PostQueen does not reach back in.
* **Hiding a channel from the interface.** There is no setting for it. The only route is the
  `disabled` field on the integration row in the database, which is tracked as an enhancement.

## Where to go instead

<CardGroup cols={2}>
  <Card title="Public API" icon="code" href="/public-api/introduction">
    Every endpoint, including the nine with no command
  </Card>

  <Card title="Command reference" icon="terminal" href="/cli/command-reference">
    The sixteen commands that do exist, with their flags
  </Card>

  <Card title="MCP limits" icon="plug" href="/mcp/limits-and-troubleshooting">
    The same question answered for the MCP surface
  </Card>

  <Card title="Which interface" icon="signs-post" href="/which-interface">
    CLI, MCP, API and automation side by side
  </Card>
</CardGroup>
