# Post a queued post now

> Publish an existing draft or scheduled post to X right away. Send its text (the current text from queue.get_post, or the edited one). Call it only when the user asked for this in the conversation; never on your own initiative. Spends a post credit.

`queue.post_now` · publish

- **MCP tool:** `queue_post_now`. Catalog: reach it with `find_actions` and `run_write_action`, or turn on the full toolset.
- **REST:** `POST /v1/queue/post-now`
- **CLI:** `xholic queue post-now`
- **Scope:** `publish`. Destructive: it can't be taken back
- **Plan:** Every plan, including the trial
- **Cost:** Spends a post credit when the post goes live.
- **Rate limit bucket:** `write`

## Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `postId` | string ≤ 120 chars | Yes | Xholic scheduled post id, from get_queue. |
| `text` | string ≤ 100000 chars | Yes |  |
| `threadParts` | array of string ≤ 100000 chars (max 100) | No | For a thread: every part in order, starting with the same first post as text. |
| `media` | array of object (max 400) | No | Media by mediaId, placed by thread part and position (0-3). |
| `automation` | object | No | Post automations (auto-repost, auto-plug reply, auto-delete, auto-DM). Shape as in the docs: docs.xholic.ai/api/automations. |
| `expectedUpdatedAt` | string (date-time) | No | The post's updatedAt from queue.get_post; refuses if it changed since. |
| `account` | string ≤ 64 chars | No | X account to act on, as @handle. Leave it out to use the connection's default account. |
| `dryRun` | boolean | No | Return exactly what would happen without doing it. |
| `idempotencyKey` | string ≤ 200 chars | No | A unique key for this write. Repeating a call with the same key returns the first result instead of acting twice. |
