Accounts and limits
List connected X accounts and check each one’s daily DM limit, what it used, its warm-up and when a paused account can send again.
A Twitter direct message API for outreach: send X DMs, read replies and run campaigns from your own code. ReachHunt gives you one API key, a clean JSON API and a webhook for every new message. Messages go out from your connected X accounts, so there is no X developer app to set up.
curl -X POST "https://api.reachhunt.ai/api/v1/conversations/$CONVERSATION_ID/messages" \
-H "Authorization: Bearer $REACHHUNT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"accountId": "4f1c9a2e-6b7d-4c3a-9e51-0a8b7c6d5e4f",
"text": "Hi Jane, loved your thread on outbound. Open to a quick chat?"
}'{
"status": true,
"data": {
"messageId": "1850271846350467072",
"message": { "text": "Hi Jane, loved your thread on outbound…" }
},
"error": null
}The official X API is built for apps that act for their users. ReachHunt is built for teams doing outreach from their own accounts, so the outreach parts come included.
92 operations across accounts, inbox, leads and campaigns. Every item carries a platform of x or linkedin, so the same code works for both networks.
List connected X accounts and check each one’s daily DM limit, what it used, its warm-up and when a paused account can send again.
List and read threads, find or start a conversation with a lead, answer message requests, and close, reopen or assign threads.
Send DMs, react to messages, and schedule a message to go out later or cancel it.
Create lists, add leads, and import followers, following, retweets, comments, post likes or X list members in the background.
Create DM sequences, start, pause, resume or stop them, and read each lead’s progress and replies.
42 event types, from message.received to campaign.lead_replied, sent to your HTTPS endpoint as they happen.
Create a key in Settings → API, export it as REACHHUNT_API_KEY, and follow along.
List your connected accounts and keep the id of an X account whose status is connected.
curl "https://api.reachhunt.ai/api/v1/accounts" \
-H "Authorization: Bearer $REACHHUNT_API_KEY"List your lead lists, then the leads in one of them, and keep the id of a lead on X.
curl "https://api.reachhunt.ai/api/v1/leads" \
-H "Authorization: Bearer $REACHHUNT_API_KEY"
curl "https://api.reachhunt.ai/api/v1/leads/$LEAD_LIST_ID/prospects" \
-H "Authorization: Bearer $REACHHUNT_API_KEY"If you have never messaged this person, ReachHunt creates a draft that becomes a real conversation when the first message goes out. The response tells you with canSend whether the person accepts DMs from you.
curl -X POST "https://api.reachhunt.ai/api/v1/conversations/get-or-create" \
-H "Authorization: Bearer $REACHHUNT_API_KEY" \
-H "Content-Type: application/json" \
-d '{"accountId": "ACCOUNT_ID", "prospectId": "LEAD_ID"}'URL-encode the conversation ID in the path. X conversation IDs contain a colon, which becomes %3A. The response has the new messageId.
curl -X POST "https://api.reachhunt.ai/api/v1/conversations/$CONVERSATION_ID/messages" \
-H "Authorization: Bearer $REACHHUNT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"accountId": "4f1c9a2e-6b7d-4c3a-9e51-0a8b7c6d5e4f",
"text": "Hi Jane, loved your thread on outbound. Open to a quick chat?"
}'Add an HTTPS endpoint in Settings → Webhooks, pick the events it should receive, and add a secret header so your server can check each request. A workspace can have up to 10 webhooks.
Every event has the same envelope and a unique id. Retries keep the id, so deduplicate on it and you never handle the same reply twice.
{
"id": "evt_9f1c3b7a-2d4e-4c6a-8b1f-0e3d5c7a9b21",
"type": "message.received",
"apiVersion": "1",
"createdAt": "2026-10-19T10:32:00.000Z",
"data": {
"account": { "platform": "x", "handle": "acmecorp" },
"contact": { "platform": "x", "handle": "janedoe", "name": "Jane Doe" },
"message": {
"conversationId": "1290876543:1850271846",
"text": "Sounds good, does Thursday work?"
}
}
}Safety works per account, not per key, so the app, campaigns, the API and MCP all share the same healthy pace.
Each X account sends at a safe daily pace that no script can push past, however many keys you create.
A newly connected account ramps up step by step, and the API shows its progress.
ReachHunt pauses an account on its own when it needs a break, and the API tells you when it’s ready again.
Before you message someone, the API tells you whether their DMs are open to you.
JSON over HTTPS with a Bearer key. Every response uses the same status, data and error envelope, so one error handler covers all 92 operations.
Install n8n-nodes-reachhunt from community nodes. Send DMs and run campaigns from any workflow, or start one when a lead replies with the ReachHunt Trigger.
Connect Claude, ChatGPT or Cursor to the same operations and run them by asking, with no code at all.
No. It is ReachHunt’s own API. It works through the X accounts you connect to ReachHunt with our browser extension, and ReachHunt is not affiliated with X Corp. Your API key comes from ReachHunt, not from the X developer portal.
Connect an account, build a list and switch on your AI agent — in about the time it took to read this page.