Skip to content
cheapxapi
All endpoints

Send a direct message

POST/twitter/send_dm_to_user

Sends a direct message to a user who accepts messages from the account. At most 5 per minute per X account.

Price: $0.0006 per request.

Request body

Send as application/json.

  • login_cookiesstringrequired

    The login_cookies value returned by Log in to an X account. Send the same value with every action for that account.

  • user_idstringrequired

    Numeric user ID of the target user.

  • textstringrequired

    Message text.

  • media_idstring

    Media ID returned by Upload media, to attach to the message.

  • proxystringrequired

    Proxy for this X account, in the form scheme://user:pass@host:port where scheme is http, https, socks5 or socks4. Use the same proxy for every request of the account. Must be a public address; a residential proxy is recommended.

  • reply_to_message_idstring

    ID of the message to reply to.

Example request

curl -X POST "https://api.cheapxapi.com/twitter/send_dm_to_user" \
  -H "x-api-key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "login_cookies": "<login_cookies>",
    "user_id": "<user_id>",
    "text": "<text>",
    "proxy": "<proxy>"
  }'

Response

Charged. "status": "success" means the action was done; "status": "error" means X rejected it and message says why.

FieldType
message_idstring
statusstring
messagestring

Status codes

200
Charged. "status": "success" means the action was done; "status": "error" means X rejected it and message says why.
400
Missing or invalid fields (not charged). The message names the field; your values are never echoed back.
401
Missing or invalid API key (not charged).
402
Insufficient balance (not charged).
405
Wrong HTTP method (not charged).
413
Request body too large (not charged).
429
Rate limit exceeded, including the per-X-account and login limits (not charged). Retry after the time in the Retry-After header.
503
Temporary service problem (not charged). If it says the request timed out, the action may already have been applied on X: check before retrying.