# Send DMs now

> Send one message to up to 500 people found with dm.preview_recipients, paced safely from the user's X account. Write the message yourself; variables like [first] personalise it. Only pass confirmedConsent true after the user confirmed these people agreed to or expect the message. Call it only when the user asked for this in the conversation; never on your own initiative.

`dm.quick_send` · publish

- **MCP tool:** `send_dms`. Loaded by default in MCP clients.
- **REST:** `POST /v1/dm/quick-send`
- **CLI:** `xholic dm quick-send`
- **Scope:** `publish`
- **Plan:** Pro plan or higher
- **Cost:** Free.
- **Rate limit bucket:** `write`

## Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `name` | string ≤ 80 chars or null | No |  |
| `messageTemplate` | string ≤ 5000 chars | Yes | The message. Variables: [first], [name], [handle], [location], [followers], list fields such as [first_line], with optional fallbacks like [first\|there]; spintax like {Hi\|Hey}. Write it yourself in the user's voice. |
| `confirmedConsent` | true | Yes |  |
| `recipients` | array of object (min 1, max 500) | Yes | Recipients exactly as dm.preview_recipients returned them. |
| `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. |
