# Schedule an article

> Schedule an article to publish on X at a time. Pass the current version from articles.get. Call it only when the user asked for this in the conversation; never on your own initiative. Spends a post credit when it goes live.

`articles.schedule` · publish

- **MCP tool:** `schedule_article`. Loaded by default in MCP clients.
- **REST:** `POST /v1/articles/schedule`
- **CLI:** `xholic articles schedule`
- **Scope:** `publish`
- **Plan:** Pro plan or higher
- **Cost:** Spends a post credit when the post goes live.
- **Rate limit bucket:** `write`
- **Undo:** from the activity log, which runs `articles.cancel_schedule`

## Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `id` | string (uuid) | Yes | Article id from articles.list. |
| `scheduledAt` | string ≤ 40 chars | Yes | When to publish, as an ISO time with offset such as 2026-10-25T10:00:00-04:00. |
| `timezone` | string ≤ 100 chars | Yes | IANA timezone such as America/New_York. Use the user's timezone. |
| `version` | integer 1–9007199254740991 | Yes | The article's current version, from articles.get. A stale version is refused so edits never overwrite each other. |
| `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. |
