{ "data": { "id": null, "queued": 0, "queued_now": 0, "scheduled": [], "scheduled_total": 0, "skipped": 2, "duplicates": 2, "remaining_this_month": 450 }, "note": "Every recipient was skipped (already queued in the last 24 hours, over quota, or the sender); nothing was queued."}
{
"data": {
"id": "V1StGXR8_Z5jdHi6B-myT",
"queued": 2,
"queued_now": 2,
"scheduled": [],
"scheduled_total": 0,
"skipped": 0,
"duplicates": 0,
"remaining_this_month": 448
},
"note": "Queued into your DM pipeline. Nothing is sent by this call; the scheduler sends within your daily and monthly limits. You are responsible for these messages under X's automation rules."
}
{
"error": {
"code": "account_not_linked",
"message": "This account has no X account connected, so it cannot send DMs."
}
}
{
"error": {
"code": "invalid_api_key",
"message": "Unknown or revoked API key"
}
}
{
"error": {
"code": "dm_not_in_plan",
"message": "This account's plan does not include DM sending."
}
}
{
"error": {
"code": "account_not_found",
"message": "No account with that id belongs to this key"
}
}
{
"error": {
"code": "idempotency_key_reuse",
"message": "This Idempotency-Key was already used with a different request body."
}
}
{
"error": {
"code": "upstream_error",
"message": "Failed to fetch scheduled posts. Try again shortly."
}
}
{
"error": {
"code": "upstream_unavailable",
"message": "The scheduling service is temporarily unavailable. Retry with the same Idempotency-Key."
}
}
DMs
Queue a DM campaign
Queues direct messages to up to 100 X users.
NOTHING IS SENT BY THIS CALL. The messages go into the account’s own
DM queue, the same one the SuperX app fills, and the app’s scheduler
sends them within the account’s daily and monthly DM limits. The 201
is therefore COUNTS, not deliveries: read
GET /v1/dm/campaigns/{id} to see what has actually gone out.
[name], [first] and [handle] in the message are filled in per
recipient. A recipient may carry its own message, which wins over
the shared one; when every recipient has one, the top-level message
may be omitted.
People this account already messaged in the last 24 hours are skipped
and counted in duplicates, and the sending account is never
messaged. spread: false (the default) queues only what today’s
remaining daily allowance holds and skips the rest; spread: true
places the rest over the coming days, up to 30 days ahead.
When EVERY recipient is skipped, nothing is queued: the answer is
200 with data.id: null and a note saying so, rather than a 201
carrying an id that would resolve to nothing.
Costs no AI credits. It counts against the writes rate-limit bucket
and against the account’s own DM allowances
(GET /v1/dm/limits). Takes up to 30 seconds.
With an Idempotency-Key, the campaign id IS the reservation id, so a
retry after a timeout converges on the same campaign instead of
orphaning the rows the first attempt queued.
You are responsible for these messages under X’s rules on automation
and unsolicited contact.
{ "data": { "id": null, "queued": 0, "queued_now": 0, "scheduled": [], "scheduled_total": 0, "skipped": 2, "duplicates": 2, "remaining_this_month": 450 }, "note": "Every recipient was skipped (already queued in the last 24 hours, over quota, or the sender); nothing was queued."}
{
"data": {
"id": "V1StGXR8_Z5jdHi6B-myT",
"queued": 2,
"queued_now": 2,
"scheduled": [],
"scheduled_total": 0,
"skipped": 0,
"duplicates": 0,
"remaining_this_month": 448
},
"note": "Queued into your DM pipeline. Nothing is sent by this call; the scheduler sends within your daily and monthly limits. You are responsible for these messages under X's automation rules."
}
{
"error": {
"code": "account_not_linked",
"message": "This account has no X account connected, so it cannot send DMs."
}
}
{
"error": {
"code": "invalid_api_key",
"message": "Unknown or revoked API key"
}
}
{
"error": {
"code": "dm_not_in_plan",
"message": "This account's plan does not include DM sending."
}
}
{
"error": {
"code": "account_not_found",
"message": "No account with that id belongs to this key"
}
}
{
"error": {
"code": "idempotency_key_reuse",
"message": "This Idempotency-Key was already used with a different request body."
}
}
Unique key (max 64 characters) for safe retries. Replays carry the "Idempotency-Replayed" response header set to "true". Keys are retained for 24 hours.
Spread what today's daily allowance cannot hold over the coming days instead of skipping it. Ignored when GET /v1/dm/limits reports scheduling_enabled: false; the overflow is then counted in skipped.
Any account you own, meaning your main account (the default when omitted) or one linked to it. An account shared with you returns 403 writes_main_account_only.
Response
Nothing was queued because every recipient was skipped. data.id is null.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"SuperX","colors":{"primary":"#F4503B","light":"#FB7359","dark":"#D93820"},"logo":{"light":"https://mintcdn.com/superx/ZOrKRYsYXbBhitoI/logo/light.svg?fit=max\u0026auto=format\u0026n=ZOrKRYsYXbBhitoI\u0026q=85\u0026s=d465c38938c34f6ab75cfc50d0039be2","dark":"https://mintcdn.com/superx/ZOrKRYsYXbBhitoI/logo/dark.svg?fit=max\u0026auto=format\u0026n=ZOrKRYsYXbBhitoI\u0026q=85\u0026s=b717e05282be47857b4c42e3c9f28b15"},"favicon":"https://mintcdn.com/superx/ZOrKRYsYXbBhitoI/favicon.png?fit=max\u0026auto=format\u0026n=ZOrKRYsYXbBhitoI\u0026q=85\u0026s=05aaa6612cdd959e0edb14d963806660","appearance":{"default":"system"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"superx","hasAudioNarration":false,"actualSubdomain":"superx","customDomains":["docs.superx.so"],"gitSource":{"type":"github","owner":"superx-so","repo":"superx-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ac68ff611e54a617d7548d2","collectionId":"371386e6-3679-44e4-aa28-f1b7adee5865","liveDeploymentHistoryId":"6ac68ff611e54a617d7548d2","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ac68ff611e54a617d7548d2","clientVersion":"0.0.4067","searchFilterCounts":[{"language":"default","tag":"API Reference","count":106},{"language":"default","tag":"Signals","count":12},{"language":"default","tag":"Documentation","count":10},{"language":"default","tag":"Articles","count":10},{"language":"default","tag":"Scheduling","count":10},{"language":"default","tag":"Audience","count":9},{"language":"default","tag":"Contact Lists","count":9},{"language":"default","tag":"Datasets","count":8},{"language":"default","tag":"Context","count":7},{"language":"default","tag":"Engage","count":7}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/dms/queue-a-dm-campaign","slug":"/api-reference/dms/queue-a-dm-campaign","pageMetadata":{"title":"Queue a DM campaign","description":"Queues direct messages to up to 100 X users.\n\nNOTHING IS SENT BY THIS CALL. The messages go into the account's own\nDM queue, the same one the SuperX app fills, and the app's scheduler\nsends them within the account's daily and monthly DM limits. The 201\nis therefore COUNTS, not deliveries: read\n`GET /v1/dm/campaigns/{id}` to see what has actually gone out.\n\n`[name]`, `[first]` and `[handle]` in the message are filled in per\nrecipient. A recipient may carry its own `message`, which wins over\nthe shared one; when every recipient has one, the top-level `message`\nmay be omitted.\n\nPeople this account already messaged in the last 24 hours are skipped\nand counted in `duplicates`, and the sending account is never\nmessaged. `spread: false` (the default) queues only what today's\nremaining daily allowance holds and skips the rest; `spread: true`\nplaces the rest over the coming days, up to 30 days ahead.\n\nWhen EVERY recipient is skipped, nothing is queued: the answer is\n`200` with `data.id: null` and a note saying so, rather than a `201`\ncarrying an id that would resolve to nothing.\n\nCosts no AI credits. It counts against the writes rate-limit bucket\nand against the account's own DM allowances\n(`GET /v1/dm/limits`). Takes up to 30 seconds.\n\nWith an `Idempotency-Key`, the campaign id IS the reservation id, so a\nretry after a timeout converges on the same campaign instead of\norphaning the rows the first attempt queued.\n\nYou are responsible for these messages under X's rules on automation\nand unsolicited contact.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/dm/campaigns","href":"/api-reference/dms/queue-a-dm-campaign","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Queues direct messages to up to 100 X users.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"NOTHING IS SENT BY THIS CALL. The messages go into the account’s own\\nDM queue, the same one the SuperX app fills, and the app’s scheduler\\nsends them within the account’s daily and monthly DM limits. The 201\\nis therefore COUNTS, not deliveries: read\\n\", _jsx(_components.code, {\n children: \"GET /v1/dm/campaigns/{id}\"\n }), \" to see what has actually gone out.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"[name]\"\n }), \", \", _jsx(_components.code, {\n children: \"[first]\"\n }), \" and \", _jsx(_components.code, {\n children: \"[handle]\"\n }), \" in the message are filled in per\\nrecipient. A recipient may carry its own \", _jsx(_components.code, {\n children: \"message\"\n }), \", which wins over\\nthe shared one; when every recipient has one, the top-level \", _jsx(_components.code, {\n children: \"message\"\n }), \"\\nmay be omitted.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"People this account already messaged in the last 24 hours are skipped\\nand counted in \", _jsx(_components.code, {\n children: \"duplicates\"\n }), \", and the sending account is never\\nmessaged. \", _jsx(_components.code, {\n children: \"spread: false\"\n }), \" (the default) queues only what today’s\\nremaining daily allowance holds and skips the rest; \", _jsx(_components.code, {\n children: \"spread: true\"\n }), \"\\nplaces the rest over the coming days, up to 30 days ahead.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"When EVERY recipient is skipped, nothing is queued: the answer is\\n\", _jsx(_components.code, {\n children: \"200\"\n }), \" with \", _jsx(_components.code, {\n children: \"data.id: null\"\n }), \" and a note saying so, rather than a \", _jsx(_components.code, {\n children: \"201\"\n }), \"\\ncarrying an id that would resolve to nothing.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Costs no AI credits. It counts against the writes rate-limit bucket\\nand against the account’s own DM allowances\\n(\", _jsx(_components.code, {\n children: \"GET /v1/dm/limits\"\n }), \"). Takes up to 30 seconds.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"With an \", _jsx(_components.code, {\n children: \"Idempotency-Key\"\n }), \", the campaign id IS the reservation id, so a\\nretry after a timeout converges on the same campaign instead of\\norphaning the rows the first attempt queued.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"You are responsible for these messages under X’s rules on automation\\nand unsolicited contact.\"\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Queue a DM campaign","description":"Queues direct messages to up to 100 X users.\n\nNOTHING IS SENT BY THIS CALL. The messages go into the account's own\nDM queue, the same one the SuperX app fills, and the app's scheduler\nsends them within the account's daily and monthly DM limits. The 201\nis therefore COUNTS, not deliveries: read\n`GET /v1/dm/campaigns/{id}` to see what has actually gone out.\n\n`[name]`, `[first]` and `[handle]` in the message are filled in per\nrecipient. A recipient may carry its own `message`, which wins over\nthe shared one; when every recipient has one, the top-level `message`\nmay be omitted.\n\nPeople this account already messaged in the last 24 hours are skipped\nand counted in `duplicates`, and the sending account is never\nmessaged. `spread: false` (the default) queues only what today's\nremaining daily allowance holds and skips the rest; `spread: true`\nplaces the rest over the coming days, up to 30 days ahead.\n\nWhen EVERY recipient is skipped, nothing is queued: the answer is\n`200` with `data.id: null` and a note saying so, rather than a `201`\ncarrying an id that would resolve to nothing.\n\nCosts no AI credits. It counts against the writes rate-limit bucket\nand against the account's own DM allowances\n(`GET /v1/dm/limits`). Takes up to 30 seconds.\n\nWith an `Idempotency-Key`, the campaign id IS the reservation id, so a\nretry after a timeout converges on the same campaign instead of\norphaning the rows the first attempt queued.\n\nYou are responsible for these messages under X's rules on automation\nand unsolicited contact.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/dm/campaigns","href":"/api-reference/dms/queue-a-dm-campaign","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["DMs"],"operationId":"queueDmCampaign","summary":"Queue a DM campaign","description":"Queues direct messages to up to 100 X users.\n\nNOTHING IS SENT BY THIS CALL. The messages go into the account's own\nDM queue, the same one the SuperX app fills, and the app's scheduler\nsends them within the account's daily and monthly DM limits. The 201\nis therefore COUNTS, not deliveries: read\n`GET /v1/dm/campaigns/{id}` to see what has actually gone out.\n\n`[name]`, `[first]` and `[handle]` in the message are filled in per\nrecipient. A recipient may carry its own `message`, which wins over\nthe shared one; when every recipient has one, the top-level `message`\nmay be omitted.\n\nPeople this account already messaged in the last 24 hours are skipped\nand counted in `duplicates`, and the sending account is never\nmessaged. `spread: false` (the default) queues only what today's\nremaining daily allowance holds and skips the rest; `spread: true`\nplaces the rest over the coming days, up to 30 days ahead.\n\nWhen EVERY recipient is skipped, nothing is queued: the answer is\n`200` with `data.id: null` and a note saying so, rather than a `201`\ncarrying an id that would resolve to nothing.\n\nCosts no AI credits. It counts against the writes rate-limit bucket\nand against the account's own DM allowances\n(`GET /v1/dm/limits`). Takes up to 30 seconds.\n\nWith an `Idempotency-Key`, the campaign id IS the reservation id, so a\nretry after a timeout converges on the same campaign instead of\norphaning the rows the first attempt queued.\n\nYou are responsible for these messages under X's rules on automation\nand unsolicited contact.\n","parameters":["471eda85-3c6e-462d-9007-18a2e9e7f2d6"],"requestBody":"c1fe47c4-86e2-4922-8765-b2da5b7e8f16","responses":{"200":"15a0e904-166e-4534-9ff1-18069094d0bf","201":"f8955574-ae8e-4625-8d04-633c625f9ebc","400":"d0243221-f14f-44b3-9bd9-699596d23dee","401":"301f765d-317a-4ea9-b9a6-673638f85bc3","403":"2eb8ef46-ce17-4732-836b-1dc910c52c25","404":"e11e6ea4-4a94-4da1-83e7-f2ddd08f189e","409":"2174413e-791a-41a8-b893-7d448dcd46c2","429":"603f39b3-50bf-4a7a-ad1f-027b4d089b35","500":"56952121-7ccb-44f4-968f-bdedf1178193","502":"efd51434-9227-40a2-a9ee-4913ec24a466","503":"b475716f-99cd-4111-bb42-c9495bf93bf9"},"method":"post","type":"path","servers":["3d538a38-214d-4480-97a3-9a44d5c3102b"],"security":["d3f7d345-7007-489f-b114-dac4df3cb92f"],"path":"/v1/dm/campaigns","baseUrlOptions":["https://api.superx.so"],"title":"Queue a DM campaign","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"471eda85-3c6e-462d-9007-18a2e9e7f2d6":{"name":"Idempotency-Key","in":"header","required":false,"description":"Unique key (max 64 characters) for safe retries. Replays carry the \"Idempotency-Replayed\" response header set to \"true\". Keys are retained for 24 hours.","schema":{"type":"string","maxLength":64,"isRequired":false,"description":"Unique key (max 64 characters) for safe retries. Replays carry the \"Idempotency-Replayed\" response header set to \"true\". Keys are retained for 24 hours.","uniqueKey":"","typeLabel":"string"}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["recipients"],"properties":{"recipients":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"object","required":["x_user_id"],"properties":{"x_user_id":{"type":"string","pattern":"^[0-9]{1,25}$","description":"The recipient's X user id (digits).","isRequired":true,"uniqueKey":"recipients.items.[INDEX].x_user_id","typeLabel":"string"},"handle":{"type":"string","maxLength":15,"description":"The recipient's @handle, used to fill `[handle]`.","uniqueKey":"recipients.items.[INDEX].handle","typeLabel":"string"},"name":{"type":"string","maxLength":100,"description":"The recipient's display name, used to fill `[name]` and `[first]`.","uniqueKey":"recipients.items.[INDEX].name","typeLabel":"string"},"message":{"type":"string","minLength":1,"maxLength":1000,"description":"This recipient's own message, instead of the shared one.","uniqueKey":"recipients.items.[INDEX].message","typeLabel":"string"},"source_post_id":{"type":"string","pattern":"^[0-9]{1,25}$","description":"The post this person was found on, so later imports of it can skip them.","uniqueKey":"recipients.items.[INDEX].source_post_id","typeLabel":"string"}},"uniqueKey":"recipients.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"recipients","typeLabel":"object[]"},"message":{"type":"string","minLength":1,"maxLength":1000,"description":"The shared message. Required unless every recipient carries its own.","uniqueKey":"message","typeLabel":"string"},"spread":{"type":"boolean","default":false,"description":"Spread what today's daily allowance cannot hold over the coming days instead of skipping it. Ignored when `GET /v1/dm/limits` reports `scheduling_enabled: false`; the overflow is then counted in `skipped`.","uniqueKey":"spread","typeLabel":"boolean"},"account_id":{"type":"string","description":"Any account you own, meaning your main account (the default when omitted) or one linked to it. An account shared with you returns `403 writes_main_account_only`.","uniqueKey":"account_id","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"recipients":[{"x_user_id":"44196397","handle":"levelsio","name":"Pieter Levels"}],"message":"Hey [first], loved your thread on shipping fast."},"examples":{"Example":{"title":"Example","value":{"recipients":[{"x_user_id":"44196397","handle":"levelsio","name":"Pieter Levels"}],"message":"Hey [first], loved your thread on shipping fast."}}},"exampleType":"examples"}},"exampleType":"examples"},"responses":{"15a0e904-166e-4534-9ff1-18069094d0bf":{"description":"Nothing was queued because every recipient was skipped. `data.id` is null.","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"The result of queueing a campaign. Counts, not deliveries.","properties":{"id":{"oneOf":[{"type":"string","description":"Campaign id. Use it with `GET`/`DELETE /v1/dm/campaigns/{id}` and as `campaign_id` on `GET /v1/dm/queue`. **null when nothing was queued** (every recipient skipped): no row carries an id, so there is none to hand back.","uniqueKey":"data.id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Campaign id. Use it with `GET`/`DELETE /v1/dm/campaigns/{id}` and as `campaign_id` on `GET /v1/dm/queue`. **null when nothing was queued** (every recipient skipped): no row carries an id, so there is none to hand back.","uniqueKey":"data.id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.id","typeLabel":"string | null"},"queued":{"type":"integer","description":"Messages placed in the queue by this call.","uniqueKey":"data.queued","typeLabel":"integer"},"queued_now":{"type":"integer","description":"How many of those are due to go out in the current daily window.","uniqueKey":"data.queued_now","typeLabel":"integer"},"scheduled":{"type":"array","description":"Per-day placement of the rest, when `spread` was true.","items":{"type":"object","properties":{"day":{"type":"string","format":"date","uniqueKey":"data.scheduled.items.[INDEX].day","typeLabel":"string\u003cdate>"},"count":{"type":"integer","uniqueKey":"data.scheduled.items.[INDEX].count","typeLabel":"integer"}},"uniqueKey":"data.scheduled.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.scheduled","typeLabel":"object[]"},"scheduled_total":{"type":"integer","uniqueKey":"data.scheduled_total","typeLabel":"integer"},"skipped":{"type":"integer","description":"Recipients not queued (duplicates, the monthly cap, or the daily cap without `spread`).","uniqueKey":"data.skipped","typeLabel":"integer"},"duplicates":{"type":"integer","description":"Recipients skipped because this account messaged them in the last 24 hours, or because they are the sending account.","uniqueKey":"data.duplicates","typeLabel":"integer"},"remaining_this_month":{"type":"integer","description":"Messages left in the monthly allowance after this campaign.","uniqueKey":"data.remaining_this_month","typeLabel":"integer"}},"uniqueKey":"data","typeLabel":"object"},"note":{"type":"string","uniqueKey":"note","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"data":{"id":null,"queued":0,"queued_now":0,"scheduled":[],"scheduled_total":0,"skipped":2,"duplicates":2,"remaining_this_month":450},"note":"Every recipient was skipped (already queued in the last 24 hours, over quota, or the sender); nothing was queued."},"examples":{"Example":{"title":"Example","value":{"data":{"id":null,"queued":0,"queued_now":0,"scheduled":[],"scheduled_total":0,"skipped":2,"duplicates":2,"remaining_this_month":450},"note":"Every recipient was skipped (already queued in the last 24 hours, over quota, or the sender); nothing was queued."}}},"exampleType":"examples"}},"exampleType":"examples"},"f8955574-ae8e-4625-8d04-633c625f9ebc":{"description":"The campaign was queued. Nothing has been sent.","headers":{"X-RateLimit-Limit":{"description":"The limit of the rate window closest to exhaustion.","schema":{"type":"integer"}},"X-RateLimit-Remaining":{"description":"Requests remaining in that window.","schema":{"type":"integer"}},"X-RateLimit-Reset":{"description":"Unix timestamp (seconds) when that window resets.","schema":{"type":"integer"}},"Idempotency-Replayed":{"description":"Present and \"true\" when this response was replayed from a previous request with the same Idempotency-Key.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","description":"The result of queueing a campaign. Counts, not deliveries.","properties":{"id":{"oneOf":[{"type":"string","description":"Campaign id. Use it with `GET`/`DELETE /v1/dm/campaigns/{id}` and as `campaign_id` on `GET /v1/dm/queue`. **null when nothing was queued** (every recipient skipped): no row carries an id, so there is none to hand back.","uniqueKey":"data.id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Campaign id. Use it with `GET`/`DELETE /v1/dm/campaigns/{id}` and as `campaign_id` on `GET /v1/dm/queue`. **null when nothing was queued** (every recipient skipped): no row carries an id, so there is none to hand back.","uniqueKey":"data.id.oneOf.1","typeLabel":"null"}],"uniqueKey":"data.id","typeLabel":"string | null"},"queued":{"type":"integer","description":"Messages placed in the queue by this call.","uniqueKey":"data.queued","typeLabel":"integer"},"queued_now":{"type":"integer","description":"How many of those are due to go out in the current daily window.","uniqueKey":"data.queued_now","typeLabel":"integer"},"scheduled":{"type":"array","description":"Per-day placement of the rest, when `spread` was true.","items":{"type":"object","properties":{"day":{"type":"string","format":"date","uniqueKey":"data.scheduled.items.[INDEX].day","typeLabel":"string\u003cdate>"},"count":{"type":"integer","uniqueKey":"data.scheduled.items.[INDEX].count","typeLabel":"integer"}},"uniqueKey":"data.scheduled.items.[INDEX]","typeLabel":"object"},"uniqueKey":"data.scheduled","typeLabel":"object[]"},"scheduled_total":{"type":"integer","uniqueKey":"data.scheduled_total","typeLabel":"integer"},"skipped":{"type":"integer","description":"Recipients not queued (duplicates, the monthly cap, or the daily cap without `spread`).","uniqueKey":"data.skipped","typeLabel":"integer"},"duplicates":{"type":"integer","description":"Recipients skipped because this account messaged them in the last 24 hours, or because they are the sending account.","uniqueKey":"data.duplicates","typeLabel":"integer"},"remaining_this_month":{"type":"integer","description":"Messages left in the monthly allowance after this campaign.","uniqueKey":"data.remaining_this_month","typeLabel":"integer"}},"uniqueKey":"data","typeLabel":"object"},"note":{"type":"string","description":"A reminder that nothing was sent by this call.","uniqueKey":"note","typeLabel":"string"}},"uniqueKey":"","typeLabel":"object"},"example":{"data":{"id":"V1StGXR8_Z5jdHi6B-myT","queued":2,"queued_now":2,"scheduled":[],"scheduled_total":0,"skipped":0,"duplicates":0,"remaining_this_month":448},"note":"Queued into your DM pipeline. Nothing is sent by this call; the scheduler sends within your daily and monthly limits. You are responsible for these messages under X's automation rules."},"examples":{"Example":{"title":"Example","value":{"data":{"id":"V1StGXR8_Z5jdHi6B-myT","queued":2,"queued_now":2,"scheduled":[],"scheduled_total":0,"skipped":0,"duplicates":0,"remaining_this_month":448},"note":"Queued into your DM pipeline. Nothing is sent by this call; the scheduler sends within your daily and monthly limits. You are responsible for these messages under X's automation rules."}}},"exampleType":"examples"}},"exampleType":"examples"},"d0243221-f14f-44b3-9bd9-699596d23dee":{"description":"A parameter is invalid (`invalid_parameter`), or the account has no X account connected (`account_not_linked`).","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retry_after":{"type":"integer","description":"Seconds to wait before retrying (rate-limit errors only).","uniqueKey":"error.retry_after","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"account_not_linked","message":"This account has no X account connected, so it cannot send DMs."}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"account_not_linked","message":"This account has no X account connected, so it cannot send DMs."}}}},"exampleType":"examples"}},"exampleType":"examples"},"301f765d-317a-4ea9-b9a6-673638f85bc3":{"description":"Missing/malformed Authorization header (`unauthorized`) or an unknown/revoked key (`invalid_api_key`).","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retry_after":{"type":"integer","description":"Seconds to wait before retrying (rate-limit errors only).","uniqueKey":"error.retry_after","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"invalid_api_key","message":"Unknown or revoked API key"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"invalid_api_key","message":"Unknown or revoked API key"}}}},"exampleType":"examples"}},"exampleType":"examples"},"2eb8ef46-ce17-4732-836b-1dc910c52c25":{"description":"The key is read-only (`insufficient_scope`), the account is shared with you (`writes_main_account_only`), the plan has no DM allowance (`dm_not_in_plan`), or the X account must be reconnected in the app (`reauth_required`).","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retry_after":{"type":"integer","description":"Seconds to wait before retrying (rate-limit errors only).","uniqueKey":"error.retry_after","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"dm_not_in_plan","message":"This account's plan does not include DM sending."}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"dm_not_in_plan","message":"This account's plan does not include DM sending."}}}},"exampleType":"examples"}},"exampleType":"examples"},"e11e6ea4-4a94-4da1-83e7-f2ddd08f189e":{"description":"account_id is not one of your accounts.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retry_after":{"type":"integer","description":"Seconds to wait before retrying (rate-limit errors only).","uniqueKey":"error.retry_after","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"account_not_found","message":"No account with that id belongs to this key"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"account_not_found","message":"No account with that id belongs to this key"}}}},"exampleType":"examples"}},"exampleType":"examples"},"2174413e-791a-41a8-b893-7d448dcd46c2":{"description":"The Idempotency-Key was already used with a different request body.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retry_after":{"type":"integer","description":"Seconds to wait before retrying (rate-limit errors only).","uniqueKey":"error.retry_after","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"idempotency_key_reuse","message":"This Idempotency-Key was already used with a different request body."}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"idempotency_key_reuse","message":"This Idempotency-Key was already used with a different request body."}}}},"exampleType":"examples"}},"exampleType":"examples"},"603f39b3-50bf-4a7a-ad1f-027b4d089b35":{"description":"The account's DM allowance is used up (`dm_limit_reached`). `scope` is `month` or `day`; the monthly refusal also carries `reset_at`. These are plan limits, not AI credits.","headers":{"Retry-After":{"description":"Seconds to wait before retrying.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retry_after":{"type":"integer","description":"Seconds to wait before retrying (rate-limit errors only).","uniqueKey":"error.retry_after","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"dm_limit_reached","message":"This account's monthly DM allowance is used up.","scope":"month","retry_after":86400,"reset_at":"2026-10-01T00:00:00.000Z"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"dm_limit_reached","message":"This account's monthly DM allowance is used up.","scope":"month","retry_after":86400,"reset_at":"2026-10-01T00:00:00.000Z"}}}},"exampleType":"examples"}},"exampleType":"examples"},"56952121-7ccb-44f4-968f-bdedf1178193":{"description":"Unexpected server error. May also use the legacy string envelope when subscription verification fails.","content":{"application/json":{"schema":{"oneOf":[{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code.","isRequired":true,"uniqueKey":"oneOf.0.error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"oneOf.0.error.message","typeLabel":"string"},"retry_after":{"type":"integer","description":"Seconds to wait before retrying (rate-limit errors only).","uniqueKey":"oneOf.0.error.retry_after","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"oneOf.0.error","typeLabel":"object"}},"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","description":"Legacy shape used ONLY by the shared subscription middleware: a plain\nstring `error` field. Seen on `403` when the subscription has lapsed\n(string starts with \"subscription_required:\") and on `500` when\nsubscription verification fails (string starts with \"internal_error:\").\n","required":["error"],"properties":{"error":{"type":"string","example":"subscription_required: The SuperX API requires an active subscription","isRequired":true,"uniqueKey":"oneOf.1.error","typeLabel":"string"}},"uniqueKey":"oneOf.1","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"internal_error","message":"Failed to fetch posts"}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"internal_error","message":"Failed to fetch posts"}}}},"exampleType":"examples"}},"exampleType":"examples"},"efd51434-9227-40a2-a9ee-4913ec24a466":{"description":"A dependent SuperX service returned an unexpected response.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retry_after":{"type":"integer","description":"Seconds to wait before retrying (rate-limit errors only).","uniqueKey":"error.retry_after","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"upstream_error","message":"Failed to fetch scheduled posts. Try again shortly."}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"upstream_error","message":"Failed to fetch scheduled posts. Try again shortly."}}}},"exampleType":"examples"}},"exampleType":"examples"},"b475716f-99cd-4111-bb42-c9495bf93bf9":{"description":"The scheduling service is temporarily unreachable. Safe to retry; reuse your Idempotency-Key on POST.","content":{"application/json":{"schema":{"type":"object","required":["error"],"properties":{"error":{"type":"object","required":["code","message"],"properties":{"code":{"type":"string","description":"Stable machine-readable error code.","isRequired":true,"uniqueKey":"error.code","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"retry_after":{"type":"integer","description":"Seconds to wait before retrying (rate-limit errors only).","uniqueKey":"error.retry_after","typeLabel":"integer"}},"isRequired":true,"uniqueKey":"error","typeLabel":"object"}},"uniqueKey":"","typeLabel":"object"},"example":{"error":{"code":"upstream_unavailable","message":"The scheduling service is temporarily unavailable. Retry with the same Idempotency-Key."}},"examples":{"Example":{"title":"Example","value":{"error":{"code":"upstream_unavailable","message":"The scheduling service is temporarily unavailable. Retry with the same Idempotency-Key."}}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"d3f7d345-7007-489f-b114-dac4df3cb92f":{"apiKey":{"type":"http","scheme":"bearer","description":"A SuperX API key (\"sxk_...\"), created in the SuperX app under Account > API / MCP / CLI. Keys are server-side secrets.","scopes":[],"schemeName":"apiKey"}}},"servers":{"3d538a38-214d-4480-97a3-9a44d5c3102b":{"url":"https://api.superx.so"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"A SuperX API key (\"sxk_...\"), created in the SuperX app under Account > API / MCP / CLI. Keys are server-side secrets.","scopes":[],"schemeName":"apiKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"A SuperX API key (\"sxk_...\"), created in the SuperX app under Account > API / MCP / CLI. Keys are server-side secrets.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"apiKey","name":"Authorization"}],"title":"apiKey"}]},"originalFileLocation":"api-reference/openapi.yaml"},"subdomain":"superx","siteName":"SuperX","title":"Queue a DM campaign - SuperX","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-07T18:31:25.429Z","originalFileLocation":"api-reference/dms/queue-a-dm-campaign.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Queues direct messages to up to 100 X users. NOTHING IS SENT BY THIS CALL. The messages go into the account\u0026#x27;s own DM queue, the same one the SuperX app fills, and the app\u0026#x27;s scheduler sends them within the account\u0026#x27;s daily and monthly DM limits. The 201 is therefore COUNTS, not deliveries: read GET /v1/dm/campaigns/{id} to see what has actually gone out. [name], [first] and [handle] in the message are filled in per recipient. A recipient may carry its own message, which wins over the shared one; when every recipient has one, the top-level message may be omitted. People this account already messaged in the last 24 hours are skipped and counted in duplicates, and the sending account is never messaged. spread: false (the default) queues only what today\u0026#x27;s remaining daily allowance holds and skips the rest; spread: true places the rest over the coming days, up to 30 days ahead. When EVERY recipient is skipped, nothing is queued: the answer is 200 with data.id: null and a note saying so, rather than a 201 carrying an id that would resolve to nothing. Costs no AI credits. It counts against the writes rate-limit bucket and against the account\u0026#x27;s own DM allowances (GET /v1/dm/limits). Takes up to 30 seconds. With an Idempotency-Key, the campaign id IS the reservation id, so a retry after a timeout converges on the same campaign instead of orphaning the rows the first attempt queued. You are responsible for these messages under X\u0026#x27;s rules on automation and unsolicited contact.\">\u003cmeta data-mint-head name=\"application-name\" content=\"SuperX\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/superx/Ohz_C_TMxE84ikvK/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/superx/Ohz_C_TMxE84ikvK/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/superx/Ohz_C_TMxE84ikvK/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/superx/Ohz_C_TMxE84ikvK/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/superx/Ohz_C_TMxE84ikvK/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/superx/Ohz_C_TMxE84ikvK/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/superx/Ohz_C_TMxE84ikvK/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/superx/Ohz_C_TMxE84ikvK/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/superx/Ohz_C_TMxE84ikvK/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Queue a DM campaign - SuperX\">\u003cmeta data-mint-head property=\"og:description\" content=\"Queues direct messages to up to 100 X users. NOTHING IS SENT BY THIS CALL. The messages go into the account\u0026#x27;s own DM queue, the same one the SuperX app fills, and the app\u0026#x27;s scheduler sends them within the account\u0026#x27;s daily and monthly DM limits. The 201 is therefore COUNTS, not deliveries: read GET /v1/dm/campaigns/{id} to see what has actually gone out. [name], [first] and [handle] in the message are filled in per recipient. A recipient may carry its own message, which wins over the shared one; when every recipient has one, the top-level message may be omitted. People this account already messaged in the last 24 hours are skipped and counted in duplicates, and the sending account is never messaged. spread: false (the default) queues only what today\u0026#x27;s remaining daily allowance holds and skips the rest; spread: true places the rest over the coming days, up to 30 days ahead. When EVERY recipient is skipped, nothing is queued: the answer is 200 with data.id: null and a note saying so, rather than a 201 carrying an id that would resolve to nothing. Costs no AI credits. It counts against the writes rate-limit bucket and against the account\u0026#x27;s own DM allowances (GET /v1/dm/limits). Takes up to 30 seconds. With an Idempotency-Key, the campaign id IS the reservation id, so a retry after a timeout converges on the same campaign instead of orphaning the rows the first attempt queued. You are responsible for these messages under X\u0026#x27;s rules on automation and unsolicited contact.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"SuperX\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.superx.so/api-reference/dms/queue-a-dm-campaign\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://superx.mintlify.app/_mintlify/api/og/v2?division=DMs\u0026amp;title=Queue+a+DM+campaign\u0026amp;description=Queues+direct+messages+to+up+to+100+X+users.%0A%0ANOTHING+IS+SENT+BY+THIS+CALL.+The+messages+go+into+the+account%27s+own%0ADM+queue%2C+the+same+one+the+SuperX+app+fills%2C+\u0026amp;theme=4e9a0bdaa172d4dfc537fe9f\u0026amp;signature=8f9edb4042f5bb805a14daf23100433117c1ba6154d804b67dca65113cb69c13\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Queue a DM campaign - SuperX\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Queues direct messages to up to 100 X users. NOTHING IS SENT BY THIS CALL. The messages go into the account\u0026#x27;s own DM queue, the same one the SuperX app fills, and the app\u0026#x27;s scheduler sends them within the account\u0026#x27;s daily and monthly DM limits. The 201 is therefore COUNTS, not deliveries: read GET /v1/dm/campaigns/{id} to see what has actually gone out. [name], [first] and [handle] in the message are filled in per recipient. A recipient may carry its own message, which wins over the shared one; when every recipient has one, the top-level message may be omitted. People this account already messaged in the last 24 hours are skipped and counted in duplicates, and the sending account is never messaged. spread: false (the default) queues only what today\u0026#x27;s remaining daily allowance holds and skips the rest; spread: true places the rest over the coming days, up to 30 days ahead. When EVERY recipient is skipped, nothing is queued: the answer is 200 with data.id: null and a note saying so, rather than a 201 carrying an id that would resolve to nothing. Costs no AI credits. It counts against the writes rate-limit bucket and against the account\u0026#x27;s own DM allowances (GET /v1/dm/limits). Takes up to 30 seconds. With an Idempotency-Key, the campaign id IS the reservation id, so a retry after a timeout converges on the same campaign instead of orphaning the rows the first attempt queued. You are responsible for these messages under X\u0026#x27;s rules on automation and unsolicited contact.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://superx.mintlify.app/_mintlify/api/og/v2?division=DMs\u0026amp;title=Queue+a+DM+campaign\u0026amp;description=Queues+direct+messages+to+up+to+100+X+users.%0A%0ANOTHING+IS+SENT+BY+THIS+CALL.+The+messages+go+into+the+account%27s+own%0ADM+queue%2C+the+same+one+the+SuperX+app+fills%2C+\u0026amp;theme=4e9a0bdaa172d4dfc537fe9f\u0026amp;signature=8f9edb4042f5bb805a14daf23100433117c1ba6154d804b67dca65113cb69c13\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/superx/Ohz_C_TMxE84ikvK/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"SuperX\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#F4503B\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.superx.so/api-reference/dms/queue-a-dm-campaign\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/dms/queue-a-dm-campaign.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.superx.so/#organization\",\"name\":\"SuperX\",\"url\":\"https://docs.superx.so\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/superx/ZOrKRYsYXbBhitoI/logo/light.svg?fit=max\u0026auto=format\u0026n=ZOrKRYsYXbBhitoI\u0026q=85\u0026s=d465c38938c34f6ab75cfc50d0039be2\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.superx.so#website\",\"name\":\"SuperX\",\"url\":\"https://docs.superx.so\",\"publisher\":{\"@id\":\"https://docs.superx.so/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.superx.so/api-reference/dms/queue-a-dm-campaign#webpage\",\"url\":\"https://docs.superx.so/api-reference/dms/queue-a-dm-campaign\",\"name\":\"Queue a DM campaign\",\"description\":\"Queues direct messages to up to 100 X users. NOTHING IS SENT BY THIS CALL. The messages go into the account's own DM queue, the same one the SuperX app fills, and the app's scheduler sends them within the account's daily and monthly DM limits. The 201 is therefore COUNTS, not deliveries: read GET /v1/dm/campaigns/{id} to see what has actually gone out. [name], [first] and [handle] in the message are filled in per recipient. A recipient may carry its own message, which wins over the shared one; when every recipient has one, the top-level message may be omitted. People this account already messaged in the last 24 hours are skipped and counted in duplicates, and the sending account is never messaged. spread: false (the default) queues only what today's remaining daily allowance holds and skips the rest; spread: true places the rest over the coming days, up to 30 days ahead. When EVERY recipient is skipped, nothing is queued: the answer is 200 with data.id: null and a note saying so, rather than a 201 carrying an id that would resolve to nothing. Costs no AI credits. It counts against the writes rate-limit bucket and against the account's own DM allowances (GET /v1/dm/limits). Takes up to 30 seconds. With an Idempotency-Key, the campaign id IS the reservation id, so a retry after a timeout converges on the same campaign instead of orphaning the rows the first attempt queued. You are responsible for these messages under X's rules on automation and unsolicited contact.\",\"dateModified\":\"2026-10-07T18:31:25.429Z\",\"isPartOf\":{\"@id\":\"https://docs.superx.so#website\"},\"breadcrumb\":{\"@id\":\"https://docs.superx.so/api-reference/dms/queue-a-dm-campaign#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.superx.so/api-reference/dms/queue-a-dm-campaign#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"SuperX\",\"item\":\"https://docs.superx.so\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Queue a DM campaign\",\"item\":\"https://docs.superx.so/api-reference/dms/queue-a-dm-campaign\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.superx.so/api-reference/dms/queue-a-dm-campaign#apireference\",\"headline\":\"Queue a DM campaign\",\"name\":\"Queue a DM campaign\",\"description\":\"Queues direct messages to up to 100 X users. NOTHING IS SENT BY THIS CALL. The messages go into the account's own DM queue, the same one the SuperX app fills, and the app's scheduler sends them within the account's daily and monthly DM limits. The 201 is therefore COUNTS, not deliveries: read GET /v1/dm/campaigns/{id} to see what has actually gone out. [name], [first] and [handle] in the message are filled in per recipient. A recipient may carry its own message, which wins over the shared one; when every recipient has one, the top-level message may be omitted. People this account already messaged in the last 24 hours are skipped and counted in duplicates, and the sending account is never messaged. spread: false (the default) queues only what today's remaining daily allowance holds and skips the rest; spread: true places the rest over the coming days, up to 30 days ahead. When EVERY recipient is skipped, nothing is queued: the answer is 200 with data.id: null and a note saying so, rather than a 201 carrying an id that would resolve to nothing. Costs no AI credits. It counts against the writes rate-limit bucket and against the account's own DM allowances (GET /v1/dm/limits). Takes up to 30 seconds. With an Idempotency-Key, the campaign id IS the reservation id, so a retry after a timeout converges on the same campaign instead of orphaning the rows the first attempt queued. You are responsible for these messages under X's rules on automation and unsolicited contact.\",\"url\":\"https://docs.superx.so/api-reference/dms/queue-a-dm-campaign\",\"mainEntityOfPage\":{\"@id\":\"https://docs.superx.so/api-reference/dms/queue-a-dm-campaign#webpage\"},\"dateModified\":\"2026-10-07T18:31:25.429Z\",\"publisher\":{\"@id\":\"https://docs.superx.so/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.superx.so#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"SuperX\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"SuperX","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":"/introduction"}]},{"tab":"API Reference","groups":[{"group":"Identity","pages":[{"title":"Get the key owner","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/me","href":"/api-reference/identity/get-the-key-owner"},{"title":"List your accounts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/accounts","href":"/api-reference/identity/list-your-accounts"}]},{"group":"Content","pages":[{"title":"List published posts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/posts","href":"/api-reference/content/list-published-posts"},{"title":"List replies you sent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/replies","href":"/api-reference/content/list-replies-you-sent"}]},{"group":"Analytics","pages":[{"title":"Get analytics","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/posts/analytics","href":"/api-reference/analytics/get-analytics"}]},{"group":"Scheduling","pages":[{"title":"Write post drafts in your voice","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/posts/draft","href":"/api-reference/scheduling/write-post-drafts-in-your-voice"},{"title":"Rewrite a post in your voice","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/posts/remix","href":"/api-reference/scheduling/rewrite-a-post-in-your-voice"},{"title":"List drafts and scheduled posts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/scheduled-posts","href":"/api-reference/scheduling/list-drafts-and-scheduled-posts"},{"title":"Create a draft or scheduled post, or publish now","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/scheduled-posts","href":"/api-reference/scheduling/create-a-draft-or-scheduled-post-or-publish-now"},{"title":"Retime queued posts in bulk","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/scheduled-posts/bulk/retime","href":"/api-reference/scheduling/retime-queued-posts-in-bulk"},{"title":"Enable auto retweet on queued posts in bulk","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/scheduled-posts/bulk/auto-retweet","href":"/api-reference/scheduling/enable-auto-retweet-on-queued-posts-in-bulk"},{"title":"Delete queued posts in bulk","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/scheduled-posts/bulk/delete","href":"/api-reference/scheduling/delete-queued-posts-in-bulk"},{"title":"Delete a draft or scheduled post","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/scheduled-posts/{id}","href":"/api-reference/scheduling/delete-a-draft-or-scheduled-post"},{"title":"Edit a draft or scheduled post","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/scheduled-posts/{id}","href":"/api-reference/scheduling/edit-a-draft-or-scheduled-post"},{"title":"List plug templates","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/plug-templates","href":"/api-reference/scheduling/list-plug-templates"}]},{"group":"Tools","pages":[{"title":"Edit one selected piece of a post","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/tools/inline-edit","href":"/api-reference/tools/edit-one-selected-piece-of-a-post"},{"title":"Rewrite a post one preset way","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/tools/rephrase","href":"/api-reference/tools/rewrite-a-post-one-preset-way"},{"title":"Check a statement against a web search","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/tools/factcheck","href":"/api-reference/tools/check-a-statement-against-a-web-search"},{"title":"Score a draft against this account's own posts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/posts/viral-score","href":"/api-reference/tools/score-a-draft-against-this-accounts-own-posts"},{"title":"Sort recent posts on a topic into Read, Pass or Not sure","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/posts/triage","href":"/api-reference/tools/sort-recent-posts-on-a-topic-into-read-pass-or-not-sure"}]},{"group":"Audience","pages":[{"title":"List replies you received","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/replies/received","href":"/api-reference/audience/list-replies-you-received"},{"title":"Read an audience list","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/audience/{kind}","href":"/api-reference/audience/read-an-audience-list"},{"title":"List engaged contacts","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/contacts","href":"/api-reference/audience/list-engaged-contacts"},{"title":"Get one contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/contacts/{id}","href":"/api-reference/audience/get-one-contact"},{"title":"List one contact's replies to you","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/contacts/{id}/replies","href":"/api-reference/audience/list-one-contacts-replies-to-you"},{"title":"List notes on a contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/contacts/{id}/notes","href":"/api-reference/audience/list-notes-on-a-contact"},{"title":"Add a note to a contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/contacts/{id}/notes","href":"/api-reference/audience/add-a-note-to-a-contact"},{"title":"Delete a note on a contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/contacts/{id}/notes/{noteId}","href":"/api-reference/audience/delete-a-note-on-a-contact"},{"title":"Edit a note on a contact","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/contacts/{id}/notes/{noteId}","href":"/api-reference/audience/edit-a-note-on-a-contact"}]},{"group":"Inspiration","pages":[{"title":"Search the inspiration library","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/inspiration","href":"/api-reference/inspiration/search-the-inspiration-library"},{"title":"Search the inspiration media index","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/inspiration/media","href":"/api-reference/inspiration/search-the-inspiration-media-index"}]},{"group":"Contact Lists","pages":[{"title":"List contact lists","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/contact-lists","href":"/api-reference/contact-lists/list-contact-lists"},{"title":"Create a contact list","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/contact-lists","href":"/api-reference/contact-lists/create-a-contact-list"},{"title":"Delete a contact list","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/contact-lists/{id}","href":"/api-reference/contact-lists/delete-a-contact-list"},{"title":"Rename a contact list","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/contact-lists/{id}","href":"/api-reference/contact-lists/rename-a-contact-list"},{"title":"List contact list members","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/contact-lists/{id}/members","href":"/api-reference/contact-lists/list-contact-list-members"},{"title":"Add a contact list member","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/contact-lists/{id}/members","href":"/api-reference/contact-lists/add-a-contact-list-member"},{"title":"Remove a contact list member","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/contact-lists/{id}/members/{memberId}","href":"/api-reference/contact-lists/remove-a-contact-list-member"},{"title":"Add contact list members in bulk","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/contact-lists/{id}/members/bulk","href":"/api-reference/contact-lists/add-contact-list-members-in-bulk"},{"title":"Remove contact list members in bulk","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/contact-lists/{id}/members/bulk-delete","href":"/api-reference/contact-lists/remove-contact-list-members-in-bulk"}]},{"group":"Signals","pages":[{"title":"List signal agents","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/signals/agents","href":"/api-reference/signals/list-signal-agents"},{"title":"Create a signal agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/signals/agents","href":"/api-reference/signals/create-a-signal-agent"},{"title":"Delete a signal agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/signals/agents/{id}","href":"/api-reference/signals/delete-a-signal-agent"},{"title":"Update a signal agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/signals/agents/{id}","href":"/api-reference/signals/update-a-signal-agent"},{"title":"Add a signal to an agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/signals/agents/{id}/signals","href":"/api-reference/signals/add-a-signal-to-an-agent"},{"title":"Remove a signal from an agent","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/signals/agents/{id}/signals/{signalId}","href":"/api-reference/signals/remove-a-signal-from-an-agent"},{"title":"Set feedback on a lead","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/signals/leads/{id}/feedback","href":"/api-reference/signals/set-feedback-on-a-lead"},{"title":"Search for leads on X now","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/signals/leads/search","href":"/api-reference/signals/search-for-leads-on-x-now"},{"title":"List signal leads","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/signals/leads","href":"/api-reference/signals/list-signal-leads"},{"title":"Suggest keyword watches","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/signals/keywords/suggest","href":"/api-reference/signals/suggest-keyword-watches"},{"title":"Expand an audience description into a rubric","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/signals/icp/expand","href":"/api-reference/signals/expand-an-audience-description-into-a-rubric"},{"title":"Build an audience profile from a website","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/signals/icp/expand-from-url","href":"/api-reference/signals/build-an-audience-profile-from-a-website"}]},{"group":"Engage","pages":[{"title":"List Engage feeds","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/engage/feeds","href":"/api-reference/engage/list-engage-feeds"},{"title":"Create an Engage feed","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/engage/feeds","href":"/api-reference/engage/create-an-engage-feed"},{"title":"Delete an Engage feed","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/engage/feeds/{id}","href":"/api-reference/engage/delete-an-engage-feed"},{"title":"Update an Engage feed","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/engage/feeds/{id}","href":"/api-reference/engage/update-an-engage-feed"},{"title":"Get posts from an Engage feed","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/engage/feeds/{id}/posts","href":"/api-reference/engage/get-posts-from-an-engage-feed"},{"title":"Get mentions of the account","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/engage/mentions","href":"/api-reference/engage/get-mentions-of-the-account"},{"title":"Draft one reply to a post","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/engage/reply-draft","href":"/api-reference/engage/draft-one-reply-to-a-post"}]},{"group":"Media","pages":[{"title":"Presign an image upload","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/media","href":"/api-reference/media/presign-an-image-upload"}]},{"group":"Workers","pages":[{"title":"List Workers","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workers","href":"/api-reference/workers/list-workers"},{"title":"List Worker suggestions","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/workers/suggestions","href":"/api-reference/workers/list-worker-suggestions"},{"title":"Save a suggestion as a draft","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workers/suggestions/{id}/draft","href":"/api-reference/workers/save-a-suggestion-as-a-draft"},{"title":"Schedule a suggestion","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workers/suggestions/{id}/schedule","href":"/api-reference/workers/schedule-a-suggestion"},{"title":"Dismiss a suggestion","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/workers/suggestions/{id}/dismiss","href":"/api-reference/workers/dismiss-a-suggestion"}]},{"group":"Context","pages":[{"title":"Get context settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/context","href":"/api-reference/context/get-context-settings"},{"title":"Update context settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/context","href":"/api-reference/context/update-context-settings"},{"title":"Replace the product list","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml put /v1/context/products","href":"/api-reference/context/replace-the-product-list"},{"title":"Remove one product","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/context/products/{id}","href":"/api-reference/context/remove-one-product"},{"title":"Add or edit one product","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/context/products/{id}","href":"/api-reference/context/add-or-edit-one-product"},{"title":"Rebuild the generated style guide","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/context/style-guide/regenerate","href":"/api-reference/context/rebuild-the-generated-style-guide"},{"title":"Refresh a product from its page","description":"Re-reads a saved product's page and refreshes its stored name,\ndescription and details, the same way the SuperX app's Context page\ndoes. The url comes from the SAVED product, never from the request:\nchange it with `PATCH /v1/context/products/{id}` first if it moved.\n\nFree: no AI credits are charged, so no `X-Credits-Charged` header is\nsent. The read runs on the account's allowance of 20 page reads a\nday, shared with the SuperX app, so an exhausted allowance returns\n`429 ai_action_limited` with `scope: \"account\"`. Takes up to a minute.\n\nReturns the refreshed product, with a new `last_scraped_at`.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/context/products/{id}/scrape","href":"/api-reference/context/refresh-a-product-from-its-page"}]},{"group":"DMs","pages":[{"title":"Queue a DM campaign","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/dm/campaigns","href":"/api-reference/dms/queue-a-dm-campaign"},{"title":"Read one DM campaign","description":"The messages this campaign queued, with a count per status.\n`pending` has not gone out yet and can still be cancelled;\n`sending` is in flight and cannot be stopped.\n\nThe rows ARE the campaign, so a campaign whose messages have all been\ncancelled returns `404 campaign_not_found`.\n","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/dm/campaigns/{id}","href":"/api-reference/dms/read-one-dm-campaign"},{"title":"Cancel a campaign's unsent messages","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/dm/campaigns/{id}","href":"/api-reference/dms/cancel-a-campaigns-unsent-messages"},{"title":"List the DM queue","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/dm/queue","href":"/api-reference/dms/list-the-dm-queue"},{"title":"DM allowances and usage","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/dm/limits","href":"/api-reference/dms/dm-allowances-and-usage"}]},{"group":"Queue","pages":[{"title":"Get queue settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/queue-settings","href":"/api-reference/queue/get-queue-settings"},{"title":"Update queue settings","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/queue-settings","href":"/api-reference/queue/update-queue-settings"}]},{"group":"Tags","pages":[{"title":"List tags","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/tags","href":"/api-reference/tags/list-tags"},{"title":"Create a tag","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/tags","href":"/api-reference/tags/create-a-tag"},{"title":"Delete a tag","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/tags/{id}","href":"/api-reference/tags/delete-a-tag"},{"title":"Rename or recolor a tag","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/tags/{id}","href":"/api-reference/tags/rename-or-recolor-a-tag"}]},{"group":"Articles","pages":[{"title":"List articles","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/articles","href":"/api-reference/articles/list-articles"},{"title":"Create an article draft","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/articles","href":"/api-reference/articles/create-an-article-draft"},{"title":"Get an article","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/articles/{id}","href":"/api-reference/articles/get-an-article"},{"title":"Delete an article","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml delete /v1/articles/{id}","href":"/api-reference/articles/delete-an-article"},{"title":"Edit an article","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml patch /v1/articles/{id}","href":"/api-reference/articles/edit-an-article"},{"title":"Publish an article to X now","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/articles/{id}/publish","href":"/api-reference/articles/publish-an-article-to-x-now"},{"title":"Schedule or reschedule an article","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/articles/{id}/schedule","href":"/api-reference/articles/schedule-or-reschedule-an-article"},{"title":"Unschedule an article","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/articles/{id}/unschedule","href":"/api-reference/articles/unschedule-an-article"},{"title":"Generate an AI cover image","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/articles/{id}/cover","href":"/api-reference/articles/generate-an-ai-cover-image"},{"title":"List saved cover styles","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/cover-styles","href":"/api-reference/articles/list-saved-cover-styles"}]},{"group":"Datasets","pages":[{"title":"List datasets","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/datasets","href":"/api-reference/datasets/list-datasets"},{"title":"Collect an audience into a dataset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/datasets","href":"/api-reference/datasets/collect-an-audience-into-a-dataset"},{"title":"Get a dataset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/datasets/{id}","href":"/api-reference/datasets/get-a-dataset"},{"title":"Get dataset rows","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/datasets/{id}/rows","href":"/api-reference/datasets/get-dataset-rows"},{"title":"Export a dataset as CSV","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/datasets/{id}/export","href":"/api-reference/datasets/export-a-dataset-as-csv"},{"title":"Add a dataset's people to a contact list","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/datasets/{id}/contacts","href":"/api-reference/datasets/add-a-datasets-people-to-a-contact-list"},{"title":"Draft outreach messages onto a research dataset","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/datasets/{id}/outreach-drafts","href":"/api-reference/datasets/draft-outreach-messages-onto-a-research-dataset"},{"title":"Refine a dataset by what each person wrote","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml post /v1/datasets/{id}/refine","href":"/api-reference/datasets/refine-a-dataset-by-what-each-person-wrote"}]},{"group":"X Lookups","pages":[{"title":"Look up one public post live","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/x/posts/{id}","href":"/api-reference/x-lookups/look-up-one-public-post-live"},{"title":"Top replies to a public post","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/x/posts/{id}/replies","href":"/api-reference/x-lookups/top-replies-to-a-public-post"},{"title":"Look up one public profile live","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/x/users/{handle}","href":"/api-reference/x-lookups/look-up-one-public-profile-live"},{"title":"Latest posts of a public account","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/x/users/{handle}/posts","href":"/api-reference/x-lookups/latest-posts-of-a-public-account"}]},{"group":"Meta","pages":[{"title":"Machine-readable quickstart","deprecated":null,"version":null,"openapi":"/api-reference/openapi.yaml get /v1/docs","href":"/api-reference/meta/machine-readable-quickstart"}]}]}]},"basePath":"","title":"Queue a DM campaign - SuperX","buildId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","deploymentId":"dpl_9VVk5y1P8k1ATeJguVngy9Q3cmbD","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-DX1Meug0.js","utils-B_OMIQVC.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-ChxhRPMa.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-CuKvD8Iv.js","snippetPresets-C5d7p2hp.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CfHcE8m4.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C1zZV314.js","shallow-CmQhqCJn.js","getApiPlaygroundDisplay-YRo9s1O7.js","CodeSnippet-RN1MTdfk.js","CodeSnippets-DKLPHxJA.js","Page-BAvA99GL.js","getPastedJson-bz0M41mU.js","icon-CsmhpPrv.js","MethodPill-CNGsVE77.js","DuplicateIcon-DilfU_Z2.js","createIcon-BdsYzQck.js","DynamicMarkdown-CbqEDjbV.js","SectionHeading-O6hXpFCN.js","axios-vUo_bRtp.js","Markdown-nKm-uidQ.js","clsx-ClVdStUn.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CIQkMg3R.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-ImrFS4Fy.js"]}