# Import leads for DMs

> Queue an import of X profiles into a contact list for DM campaigns. Runs in the background and uses the plan's import pool; estimate it first with dm.estimate_import. Call it only when the user asked for this in the conversation; never on your own initiative.

`dm.queue_import` · write

- **MCP tool:** `dm_queue_import`. Catalog: reach it with `find_actions` and `run_write_action`, or turn on the full toolset.
- **REST:** `POST /v1/dm/queue-import`
- **CLI:** `xholic dm queue-import`
- **Scope:** `write`
- **Plan:** Pro plan or higher
- **Cost:** Free.
- **Rate limit bucket:** `write`

## Input

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `source` | object | Yes | Who to import. FOLLOWERS/FOLLOWING {handle}; KEYWORD_POSTERS {query, days?, language?, excludeHandles?}; X_LIST/LIST_FOLLOWERS {listUrl}; POST_ENGAGERS {tweetUrl, includeReplies?, includeReposts?, keyword?}; HANDLES {handles}. |
| `source.kind` | "FOLLOWERS" \\| "FOLLOWING" \\| "KEYWORD_POSTERS" \\| "X_LIST" \\| "LIST_FOLLOWERS" \\| "POST_ENGAGERS" \\| "HANDLES" | Yes |  |
| `filters` | object | No | Optional filters: followersMin, followersMax, bioIncludes, bioExcludes, locationIncludes, verified (any\|only\|exclude), dmsOpenOnly, excludeProtected, excludeAutomated, minAccountAgeDays. |
| `maxProfiles` | integer 1–15000 | Yes |  |
| `listId` | string (uuid) or null | No | Contact list to import into. |
| `newListName` | string ≤ 80 chars or null | No | Name for a new list instead. Pass exactly one of listId or newListName. |
| `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. |
