TwitterAPIs

io.github.TwitterAPIs由 GitHub 帳號 TwitterAPIs 發布v0.28.0更新於 Nov 7, 2026

Official MCP server for twitterapis.com. Twitter/X search, users, DMs, Grok, monitoring and writes.

已驗證Streamable HTTP可網頁執行網頁搜尋與抓取溝通與協作安全與監控

概覽

AI 產生的概覽

twitterapis.com 官方 MCP 伺服器,可搜尋與讀取 Twitter/X 資料,並在連結 X 帳號後發文、傳私訊與監控。

可以做什麼
  • 以 X 進階搜尋運算子檢索推文、依名稱或帳號尋找使用者
  • 讀取個人檔案、About 資訊、追蹤關係、時間軸、按讚、媒體、提及以及粉絲與追蹤名單
  • 讀取單一推文、回覆、推文串、轉推者、引用、清單、Spaces 與社群
  • 連結 X 工作階段後可讀取自己帳號的首頁時間軸、書籤、封鎖、靜音與私訊
  • 發文、回覆、按讚、轉推、追蹤、加入書籤、傳私訊、上傳媒體、修改個人檔案,並管理草稿、排程貼文與長文
  • 為帳號新貼文設定 webhook 監控,並向服務商送出意見回報
適用情境
適合需要 Twitter/X 研究、受眾與粉絲分析、品牌提及追蹤,或在不申請 X 開發者帳號的情況下執行帳號操作的場合。也適合希望以 webhook 推送取代輪詢的社群媒體與競品監控流程。
執行需求
可使用 api.twitterapis.com 託管端點(登入即可),或以 npx 執行 npm 套件(需要 Node.js)。每次呼叫都需要 TWITTERAPIS_KEY API 金鑰;TWITTERAPIS_BASE_URL 與 TWITTERAPIS_TIMEOUT_MS 為選用。僅限帳號讀取的資料與多數寫入操作需先連結 X 工作階段(x.com cookie 或使用者名稱密碼登入),也可逐次傳入憑證。需要能連線至服務商的網路。
安裝前請注意
呼叫會計費到你的 twitterapis.com 帳戶,多數讀取約每次 $0.0008,發文、私訊、長文與 Grok 較貴;前 $0.50 為免費額度。連結工作階段代表提供 x.com cookie 或 X 使用者名稱、密碼與 2FA 密鑰,並由服務保存。寫入操作會以該帳號公開執行:發文、私訊、追蹤、修改個人檔案與大頭貼、會自動發佈的排程貼文,以及發佈長文(其公告推文在取消發佈後仍保留)。大頭貼與橫幅更換無法復原。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 TwitterAPIs,將其新增到工作區。
  2. 連接 所需的 憑證。它們會被私密儲存,絕不會在公開頁面上展示。
  3. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.TwitterAPIs%2Ftwitterapis-mcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。 客戶端會在首次連接時完成 OAuth 登入。

{
  "mcpServers": {
    "twitterapis": {
      "type": "http",
      "url": "https://api.twitterapis.com/mcp"
    }
  }
}

README

@twitterapis/mcp

[npm version] [npm downloads] [license]

@twitterapis/mcp is the official MCP server for TwitterAPIs, built for developers and AI agents that need Twitter / X data inside Claude, Cursor, Windsurf, VS Code or any MCP client, with no X developer account. Your agent can search tweets, read profiles, timelines, followers, threads and lists, and post, reply, like, retweet or follow from an X account you link. Most reads cost $0.0008 per call, about $0.04 per 1,000 tweets since a call returns about 20, and creating a tweet costs $0.0016. New accounts get $0.50 of free credit with no card. Every tool maps to one REST endpoint at api.twitterapis.com, and the server holds no state.

Install: npx -y @twitterapis/mcp@latest with TWITTERAPIS_KEY from https://www.twitterapis.com/signup

Hosted, sign in instead of pasting a key (Claude Code): claude mcp add --transport http twitterapis https://api.twitterapis.com/mcp

Website: https://www.twitterapis.com/mcp

Quick start

No install needed. Run with npx. You need one thing: an API key (free $0.50 in credits, no card required): twitterapis.com/signup.

Setup

Claude Desktop

Edit claude_desktop_config.json (Settings → Developer → Edit Config):

json
{  "mcpServers": {    "twitterapis": {      "command": "npx",      "args": ["-y", "@twitterapis/mcp@latest"],      "env": { "TWITTERAPIS_KEY": "YOUR_API_KEY" }    }  }}

Restart Claude Desktop. The twitter_* tools appear in the tool picker.

Cursor

~/.cursor/mcp.json (or Settings → MCP → Add New Server):

json
{  "mcpServers": {    "twitterapis": {      "command": "npx",      "args": ["-y", "@twitterapis/mcp@latest"],      "env": { "TWITTERAPIS_KEY": "YOUR_API_KEY" }    }  }}

Windsurf

~/.codeium/windsurf/mcp_config.json:

json
{  "mcpServers": {    "twitterapis": {      "command": "npx",      "args": ["-y", "@twitterapis/mcp@latest"],      "env": { "TWITTERAPIS_KEY": "YOUR_API_KEY" }    }  }}

VS Code (Copilot / agent mode)

.vscode/mcp.json in your workspace, or the user-level MCP settings:

json
{  "servers": {    "twitterapis": {      "type": "stdio",      "command": "npx",      "args": ["-y", "@twitterapis/mcp@latest"],      "env": { "TWITTERAPIS_KEY": "YOUR_API_KEY" }    }  }}

Configuration

Env varRequiredDefaultPurpose
TWITTERAPIS_KEYYes(none)API key from dashboard
TWITTERAPIS_BASE_URLNohttps://api.twitterapis.comOverride the API host
TWITTERAPIS_TIMEOUT_MSNo30000Per-request timeout in milliseconds

Tools

120 tools: 71 reads and 49 write actions. Most user endpoints accept username (handle without @) or user_id (twitter_user_likes and twitter_user_tweets_complete require user_id); tweet endpoints accept id or url; paginated endpoints return a cursor you pass back to get the next page. Every data read (except twitter_audience_summary, which always returns its full summary) also takes fields (comma-separated dotted paths to keep, e.g. id,text,author.username; pagination and envelope keys always survive) and compact ("1" for a built-in preset of ids, text, counts and author basics), so a model paying per token can trim a page to what it will read. Four of the reads are free account lookups (twitter_account_me, twitter_account_payments, twitter_feedback_get, twitter_feedback_list); the 14 monitoring tools and twitter_feedback_send are also free (account administration, not metered reads).

Public reads (search, profiles, tweets, followers, likes) work with just your API key. The account-only reads (bookmarks, DMs, home timeline, followers-you-know) and most write actions act AS an authenticated X account, so they need a session linked to your key first (returns HTTP 409 until then). Link a session either by registering your x.com cookies (twitter_customer_session) or by logging in with a username/password (twitter_user_login). Alternatively, pass per-call inline credentials on any of those tools (auth_token + ct0, with optional proxy_url / user_agent) to act AS that account for a single call without pre-registering a session, so one API key can act as many accounts. For write actions, set proxy_url to a residential proxy, since X soft-blocks writes that egress from datacenter IPs. Each write tool is annotated readOnlyHint: false; reversing actions (delete, unfollow, unlike, unretweet, unbookmark, monitor/webhook delete) are annotated destructiveHint: true so MCP clients can prompt before running them. The monitoring and feedback tools (see below) are the exception: they administer your twitterapis.com account, not an X session, so they need only your API key, no linked session and no inline credentials.

Reads

ToolWhat it does
twitter_advanced_searchSearch tweets with X operators (from:, min_faves:, since:, filter:links, etc.)
twitter_user_searchFind user accounts by name or keyword
twitter_user_infoFull profile by handle (bio, counts, verification, location)
twitter_user_info_by_idFull profile by numeric user id
twitter_user_statusIs an account alive, suspended, or deleted
twitter_user_aboutA user's structured About object (category, professional/business labels, verification + identity-verification flags, joined date, and X's 'About this account' transparency panel)
twitter_user_about_batchThe same About object for up to 100 accounts in one call (usernames or user_ids), billed per account answered; for vetting a list by country or account history
twitter_audience_summaryWho an audience is: a country histogram and likely-bot share over a sample of up to 100 followers or retweeters
twitter_user_affiliatesAccounts affiliated with an organization profile
twitter_check_follow_relationshipFollow relationship between two accounts, by id or username (who follows whom)
twitter_check_follow_relationship_batchOne account against up to 100 others in one call, either direction (which of these accounts follow the brand)
twitter_user_tweetsA user's recent original tweets (replies excluded)
twitter_user_tweets_and_repliesA user's full timeline (tweets + replies)
twitter_user_tweets_completeA large batch of a user's tweet history per call (see paging note)
twitter_user_mediaImages and videos a user has posted
twitter_user_mentionsRecent public tweets mentioning a user
twitter_user_likesTweets a user has liked (public Likes tab)
twitter_user_followersAccounts that follow a user
twitter_user_followingAccounts a user follows
twitter_user_followers_v2Followers with the v2 response shape (richer fields, deeper cursoring)
twitter_user_following_v2Following with the v2 response shape (richer fields, deeper cursoring)
twitter_user_verified_followersA user's verified followers only
twitter_followers_you_knowFollowers of a target that your authenticated account also follows
twitter_tweet_detailSingle tweet: text, author, metrics, media, quoted/reply context
twitter_tweet_repliesReplies to a tweet
twitter_tweet_replies_completeEvery reply under a tweet in one call, with an is_complete flag and a resume cursor
twitter_tweet_threadFull author thread (connected tweet chain by same author), read forward from the tweet you pass, so pass the thread's first tweet
twitter_tweet_retweetersAccounts that retweeted a tweet
twitter_tweet_quotesTweets that quote a tweet, with their text. Search-backed, so count is what search returned, not the tweet's true quote_count
twitter_list_membersMembers of a Twitter/X List
twitter_list_followersAccounts that follow a public List (a different set from its members)
twitter_list_tweetsPosts by a List's members, search-backed: filterable by since / until date, include_replies, and product (Latest / Top), no retweets
twitter_list_timelineA List's native X feed: retweets and X's own ordering included, no filters, paging only
twitter_home_timelineYour authenticated account's Home timeline (session)
twitter_bookmarksYour authenticated account's bookmarks (session)
twitter_blockingAccounts your authenticated account has blocked (your own list only) (session)
twitter_mutingAccounts your authenticated account has muted (your own list only) (session)
twitter_bookmark_searchFull-text search within your bookmarks (session)
twitter_bookmark_foldersYour authenticated account's bookmark folders (session)
twitter_bookmark_folder_timelineTweets inside one of your bookmark folders, by folder_id (session)
twitter_dm_listYour DM conversations (inbox), read-only (session)
twitter_dm_conversationMessages in one DM conversation, read-only; pass the previous page's min_entry_id as max_id to page back (session)
twitter_spaces_infoMetadata and participant roster for one X Space, live or ended (by Space id)
twitter_community_searchFind X Communities by keyword; the discovery step that produces the numeric id the rest of the community family needs
twitter_community_infoOne X Community by numeric id: name, counts, join policy, rules, topic, banners, admin
twitter_community_aboutA community's moderators and a member preview, each returned as a full user profile, not the reduced row _members/_moderators return
twitter_community_membersA community's member roster, each row carrying that member's Admin / Moderator / Member role
twitter_community_moderatorsA community's moderators and admins, from its own upstream operation (not a filter over the roster)
twitter_community_tweetsA community's post timeline, with the pinned post returned as its own pinned field
twitter_community_membershipsThe inverse lookup: every community a given numeric user_id belongs to
twitter_creator_commentary_videoWho posts native video about a topic: one search page grouped by author and ranked by video posts, then median and total views, with up to three top post ids per creator
twitter_grok_chatAsk X's own Grok, grounded in live X data, and get the answer plus the sources it cited
twitter_grok_chat_submitStart the same Grok chat as a background job and get a job_id at once, for clients that stop waiting before a long answer
twitter_grok_chat_resultRead a submitted Grok chat by job_id: pending, the finished answer, or the error
twitter_grok_configWhether the authenticated account can use Grok, and which models it may pick
twitter_trendsCurrent top trends for a location (by country or woeid) an X Explore tab (by category), or only the trends X labels Business and finance (category=business_and_finance)
twitter_trends_locationsEvery location X has trends for, each with its WOEID
twitter_account_meYour twitterapis.com account: credits, usage, email (free)
twitter_account_paymentsYour twitterapis.com payment history (free)
twitter_media_statusProcessing state of an uploaded media_id; an uploaded image has no processing step and is usable at once (session)
twitter_article_getRead a published article's full content via its announcement tweet id/url (public, no session)
twitter_article_listList your own articles, filtered by lifecycle (draft or published) (session)

Write actions (require a linked X session)

ToolWhat it does
twitter_create_tweetPost a tweet; set reply_to to reply or quote to quote-tweet
twitter_delete_tweetDelete one of your tweets (irreversible)
twitter_favorite_tweet / twitter_unfavorite_tweetLike / unlike a tweet
twitter_pin_tweet / twitter_unpin_tweetPin one of your own tweets to the top of your profile (replaces any existing pinned post) / unpin it
twitter_retweet / twitter_unretweetRetweet / undo retweet
twitter_bookmark_tweet / twitter_unbookmark_tweetBookmark / remove bookmark
twitter_follow_user / twitter_unfollow_userFollow / unfollow a user by user_id or username (exactly one)
twitter_dm_sendSend a Direct Message to a user by their numeric recipient_id
twitter_list_createCreate a Twitter/X List owned by your session (name, optional description / is_private)
twitter_list_add_member / twitter_list_remove_memberAdd / remove one account on a List you own; member_count comes back as proof the write landed
twitter_community_join / twitter_community_leaveJoin / leave an X Community by numeric community_id. A community that needs moderator approval answers 409 join_requires_approval and nothing is submitted; refusals are not billed
twitter_media_uploadUpload a base64 image, returns a media_id for twitter_create_tweet
twitter_update_profileChange your own name, bio, location or link. A PARTIAL update: omitted fields keep their values, an empty string clears one
twitter_update_avatarReplace your own profile picture. Takes base64 image bytes in image, not a URL and not a media_id. No undo, and X keeps no history
twitter_update_bannerReplace your own header image. Takes base64 image bytes in banner, not a URL and not a media_id. No undo, and X keeps no history

Drafts and scheduled posts (require a linked X session)

A draft is private and never posts. A scheduled post will publish publicly at its execute_at unless you cancel it first. Both lists read only your own account.

ToolWhat it does
twitter_draft_createSave a private draft on your account; nothing is posted
twitter_draft_editReplace one draft's contents by id; the fields you send become the draft
twitter_draft_deleteDelete a draft by id; it was never public, so nothing is retracted
twitter_draft_listList your drafts, each with text and thread_truncated
twitter_scheduled_createSchedule a post for a future execute_at in epoch seconds, not milliseconds
twitter_scheduled_deleteCancel a pending scheduled post before it sends
twitter_scheduled_listList your pending queue; execute_at comes back in epoch seconds

Both list tools can return partial: true, which means X's answer was read but not fully understood. It is not the same as an empty list: on a clean read the flag is absent entirely, so an empty array with no partial means you genuinely have nothing queued or drafted.

Articles (X's long-form "Notes" feature; writes require a linked X session)

ToolWhat it does
twitter_article_createStart a new draft article, returns its id
twitter_article_update_titleSet a draft article's title (a published article answers 422 article_published, not billed)
twitter_article_update_cover_mediaAttach an already-uploaded image as a draft article's cover (media_id from twitter_media_upload; a published article answers 422 article_published, not billed)
twitter_article_update_contentReplace a draft article's body (Draft.js content_state you build; a published article answers 422 article_published, not billed)
twitter_article_publishPublish a draft, posting a real public announcement tweet (not fully reversible). Optional caption becomes the announcement post's text; audience and reply_control accept only Everyone
twitter_article_unpublishRevert a published article to draft (leaves the announcement tweet up)
twitter_article_deleteDelete an article (draft: hard delete; published: unpublish + delete the announcement tweet), irreversible

See also twitter_article_get and twitter_article_list above.

Monitoring (webhook delivery of new posts; free, not metered)

Watch an X account for new posts and get them pushed to your own HTTPS endpoint, HMAC-signed, instead of polling. Register a webhook first, then create a monitor; every new post from a watched handle is delivered to every active webhook on your account (or a restricted subset via webhook_ids). Monitor/webhook CRUD is account administration, not a metered Twitter read, so every tool below is free.

ToolWhat it does
twitter_monitor_createStart watching an X account (handle) for new posts
twitter_monitor_listList every monitor on your account
twitter_monitor_updatePause/resume a monitor or change its webhook_ids restriction
twitter_monitor_deleteStop and remove a monitor (irreversible)
twitter_monitor_healthOne monitor's status, degradation flag, poll interval, cursor position
twitter_monitor_account_healthAccount-wide rollup: service status, active/paused monitor counts, 24h delivery outcome counts, one call
twitter_monitor_deliveriesRecent delivery events across every monitor, with detection + delivery latency
twitter_x_user_stream_add_userCompat drop-in for twitter_monitor_create using an x_user_stream-shaped envelope
twitter_x_user_stream_remove_userCompat drop-in for twitter_monitor_delete using an x_user_stream-shaped envelope
twitter_x_user_stream_list_usersCompat drop-in for twitter_monitor_list using an x_user_stream-shaped envelope
twitter_monitor_webhook_createRegister an HTTPS delivery URL; returns the HMAC signing secret once
twitter_monitor_webhook_listList every webhook registered on your account
twitter_monitor_webhook_deleteSoft-delete a webhook by id (irreversible from the caller's side)
twitter_monitor_webhook_testSend one signed test event to a webhook right now, synchronously
twitter_monitor_webhook_redriveReplay deliveries that dead-lettered while your endpoint was down, oldest first

Feedback (report a bug or a gap to the twitterapis.com team without leaving your session; free)

Modelled on Claude Code's own feedback tool. When a call fails in a way that is not your key, credits, session or a rate limit, when you ask for something no tool covers, or when a result is plainly wrong, the model can draft a report into a local queue (~/.twitterapis/feedback-queue.json, at most 10 drafts, override the directory with TWITTERAPIS_FEEDBACK_DIR). Nothing is sent until you ask to review the queue and name the drafts to send. Each report carries the last failing call's endpoint, status and request id, your client name and this package's version, so the team can act on it without a follow-up. Use twitter_feedback_get with the returned server id to see whether it was triaged, shipped or declined.

ToolWhat it does
twitter_feedback_sendaction: "draft" (default) queues a report locally and sends nothing; "list" shows the queue; "send" posts only the drafts you name to POST /feedback; "discard" drops them
twitter_feedback_getRead a sent report's status (new, triaged, shipped, declined) and the team's response
twitter_feedback_listList the reports this account has already sent, newest first, with status/type filters and a cursor to page

Session setup

Link an X account to your key once, so the account-only reads and write actions act as it (or pass per-call auth_token/ct0 instead).

ToolWhat it does
twitter_customer_sessionRegister your x.com session cookies (auth_token + ct0) against your key
twitter_customer_session_statusRead back the registered session without changing it: resolved account, live/dead status, timestamps, and which egress tier a write would use. Never returns the cookies. Free
twitter_customer_session_deleteRevoke that stored session, deleting your auth_token + ct0 from the service. Idempotent and free
twitter_user_loginLog in with username + password (+ totp_secret for 2FA); stores the session against your key. Returns a confirmation, never the cookies

Playbooks and provenance

Besides tools, the server exposes MCP resources. A client lists them with resources/list and fetches one with resources/read, so nothing here costs context until it is asked for, and none of it costs credits.

Playbooks

Short recipes an agent runs with the tools above.

URIWhat it covers
playbook://launch-day-monitorWatching a launch in near real time: monitor and webhook setup before, true counts and amplifiers during, amplifier profiles after
playbook://competitor-follower-outreachTurning another account's followers into a qualified list, then contacting them from your linked account
playbook://account-auditA reproducible read of one account: identity, output mix, reach, engagement, and which numbers share an observation window
playbook://link-x-accountThe linking sequence: read the current state, pick a route, the login's timing ceiling, the outcomes that need attention on x.com, and what a session unlocks
playbook://residential-egressOutbound address control: the three places a proxy URL attaches, what a URL has to be, and how to read back which source is in force

Provenance

provenance://tool/{tool_name} returns, as JSON, where a row you already hold came from: the REST endpoint and method behind it, read or write, whether the call ran as your linked X account or on the API key alone, the per-call price, and the docs URL.

provenance://tool/twitter_advanced_search
json
{  "tool": "twitter_advanced_search",  "endpoint": "GET /twitter/tweet/advanced_search",  "kind": "read",  "destructive": false,  "served_by": "the API key alone (a public read, no linked account)",  "cost": "$0.0008 per call",  "docs": "https://docs.twitterapis.com/docs/reference/search/tweet-advanced-search"}

Row-level upstream provenance (when the service read it from X, whether an upstream cache answered, which account read it) is not in any response this package receives, so it is absent rather than guessed.

Blocked calls answer with the next steps

A call blocked on a missing key, a rejected key, an empty balance or a missing X session returns a structured payload (in structuredContent and appended to the text) carrying an ordered steps list, what resolving it unlocks, and, for the session case, the playbook URI and the outcomes a retry cannot fix.

Usage examples

Search for trending AI tweets

"Find the most popular tweets about AI agents posted this week"

The agent calls twitter_advanced_search with:

query: "AI agents min_faves:200 since:2024-01-01"product: "Top"count: 20

Pull a user's recent posts

"Get the last 10 tweets from @sama"

The agent calls twitter_user_tweets with:

username: "sama"count: 10

Read a full thread

"Get the full thread for this tweet: https://x.com/karpathy/status/1849....."

The agent calls twitter_tweet_thread with:

url: "https://x.com/karpathy/status/1849....."

The thread is read forward from the tweet you pass, so the URL should be the thread's first tweet. If you hold a later tweet, read its conversation_id with twitter_tweet_detail and pass that id instead; a later tweet returns only the tail.

Paginate through followers

"List the first 100 followers of @openai, then the next 100"

First call, twitter_user_followers: { username: "openai", count: 100 } Second call, pass back the cursor from the first response: { username: "openai", count: 100, cursor: "<cursor from response>" }

Paging twitter_user_tweets_complete

"Pull @elonmusk's whole tweet history"

twitter_user_tweets_complete auto-paginates server-side and returns a large batch per call, but it does not guarantee the full history in one call. Read the result like this:

  • next_cursor is the completion signal, not count. Non-null means the history is truncated and more remains. Null means it is genuinely exhausted. The response also carries has_more, the same signal as a boolean.
  • max is a minimum target, not a cap. Pages arrive in whole chunks, so a response may hold up to one page (<=100) more than requested. Live behaviour: max=10 returned 20, max=50 returned 60, max=150 returned 161, and omitting max (server default 200) returned 201. Never assume count === max.
  • Each call also has a server-side wall-clock budget, so a response can be truncated even when it returned fewer tweets than requested. That is the second reason count cannot tell you whether you are done.
  • Billing is a flat $0.0024 per call, regardless of how many tweets come back, so fewer large calls cost less than many small ones.

To resume, pass the next_cursor straight back in as cursor and repeat until it comes back null:

First call, twitter_user_tweets_complete: { user_id: "44196397", max: 800 } Then, while next_cursor is non-null: { user_id: "44196397", max: 800, cursor: "<next_cursor from previous response>" }

Monitor brand mentions

"Show me recent tweets mentioning @twitterapis"

The agent calls twitter_user_mentions with:

username: "twitterapis"count: 50

Troubleshooting

HTTP 401 (invalid or missing API key) Check that TWITTERAPIS_KEY is set correctly in your MCP client config and matches the key shown in your dashboard.

HTTP 402 (insufficient credits) Top up at twitterapis.com/dashboard. Your first $0.50 is free at signup.

HTTP 403 (access forbidden) The account or tweet may be private/protected, or your plan does not include this endpoint.

HTTP 404 (not found) The user, tweet, or list may have been deleted, suspended, or the id/handle is wrong.

HTTP 429 (rate limited) Wait a few seconds and retry. If you hit this frequently, add "TWITTERAPIS_TIMEOUT_MS": "60000" to your env config and space out bulk requests.

Request failed: timed out after 30000ms The default timeout is 30 s. For large paginated fetches set TWITTERAPIS_TIMEOUT_MS to a higher value (e.g. 60000).

Tools do not appear in Claude / Cursor Ensure npx is on your PATH and Node.js 18+ is installed (node --version). Check MCP client logs for startup errors.

Pricing

Calls are billed to your twitterapis.com account, at the price each tool's description states. The standard rate is $0.0008 per call: nearly every read (search, profiles, timelines, followers, likes, lists, bookmarks, articles) and the simple write actions (like, pin, retweet, bookmark, follow, list membership and their undos, delete). At that rate 1,000 tweets cost about $0.04, since a call returns about 20 tweets. The account, feedback and monitoring tools are free, and so is registering, checking or revoking a session from your own cookies. Checking Grok eligibility with twitter_grok_config is free too. Every tool priced differently from the standard rate:

PriceTools
$0.0008 per billed itemtwitter_user_about_batch (per account answered, so one 100-account call costs up to $0.08), twitter_check_follow_relationship_batch (per pair answered), twitter_audience_summary (per sample page plus per sampled account answered)
$0.0016 per callPosting: twitter_create_tweet, twitter_list_create. DMs: twitter_dm_send, twitter_dm_list, twitter_dm_conversation. Profile: twitter_update_profile, twitter_update_avatar, twitter_update_banner. Drafts and scheduled posts, the two list reads included: twitter_draft_create, twitter_draft_edit, twitter_draft_list, twitter_scheduled_create, twitter_scheduled_list. Article edits: twitter_article_create, twitter_article_update_title, twitter_article_update_cover_media, twitter_article_update_content, twitter_article_publish, twitter_article_unpublish
$0.0024 per calltwitter_user_tweets_complete, twitter_tweet_replies_complete (flat per call, however many tweets or pages come back)
$0.004 per calltwitter_tweet_thread, twitter_grok_chat
$0.01 per calltwitter_user_login (logging in with a username and password)

twitter_grok_chat_submit and twitter_grok_chat_result are free calls. The Grok chat price is charged once, on the poll that first delivers the finished answer, and a job that fails or is never collected costs nothing. Deleting a draft or a scheduled post, and reading, listing or deleting an article, stay at the standard $0.0008 per call. Your first $0.50 is free. See twitterapis.com/pricing.

Links

FAQ

Do I need an X developer account? No. One TwitterAPIs key covers every tool.

What do 1,000 tweets cost? About $0.04. Standard reads bill $0.0008 per call and a call returns about 20 tweets.

Can my agent post or send DMs? Yes, from an X account you link to your key. Undo actions such as delete and unfollow are marked destructive, so your client can ask before running them.

Is it read-only? No. 71 read tools work with just your API key; 49 write actions (post, save or schedule a post, like, pin, retweet, follow, DM, media upload, profile name/bio/avatar/banner updates, List create/add member/remove member, community join/leave, article create/edit/publish/delete, monitor/webhook create/update/delete, feedback send) act as a linked X account or per-call inline credentials, except monitor/webhook CRUD and feedback, which are account administration and need only your API key.

Which clients are supported? Claude Desktop, Cursor, Windsurf, and VS Code (Copilot agent mode), or any Model Context Protocol client.

How is it billed? Per request. New keys start with $0.50 in free credits, no card required. See pricing.

Does it store my key or data? No. The server holds no state and forwards your API key on each call.

Maintainers

src/tools.js is generated. Do not edit it. The catalog is built at build time from two committed inputs:

  • test/openapi.snapshot.json, a vendored copy of the published OpenAPI spec, which supplies the structure: which endpoints exist, which parameters each accepts, whether a parameter is required, and its type.
  • scripts/tools.overrides.mjs, hand-authored, which supplies everything the spec cannot express: the tool and argument descriptions a model reads to decide how to call a tool, the cross-field rules ("provide exactly one of username or user_id"), the per-call credential arguments that travel as x-* headers, and the write / destructive / JSON-body flags. Each description's Cost: sentence and Docs: link are derived from the spec.

Descriptions state product facts only: what a tool returns, takes and costs. They never name another tool and never instruct the model; guidance on which tool to use when, how one tool's output feeds another, and when to draft feedback lives in the server instructions (INSTRUCTIONS in src/server.js). test/description-compliance.mjs enforces this on every tool and parameter description a client lists, in both the stdio and hosted modes.

The spec is vendored on purpose. Nothing is fetched at install time or at server boot, so the published package is a fixed artifact rather than one that depends on a hostname still answering.

bash
npm run openapi:refresh   # re-vendor the spec, prints the route diffnpm run build             # regenerate src/tools.jsnpm test                  # gates, incl. "src/tools.js matches the generator"

npm test fails if src/tools.js was hand-edited or left stale, if the catalog and the live spec disagree, if the tool list and this README disagree, or if a description carries a model instruction, another tool's name, or hidden text (npm run check:description-compliance).

License

MIT

來源:README.md,提交 4d2490e

工具

120

twitter_user_info

Get User Profile

Returns a user's complete public profile by @handle: display name, bio, follower count, following count, verification status, location, website, account creation date, pinned tweet, and the numeric user_id. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-info

輸入參數fieldscompactusername必填

twitter_user_info_by_id

Get User Profile by ID

Returns a user's complete public profile by numeric user id: display name, bio, follower and following counts, verification status, location, website, account creation date and pinned tweet. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-info-by-id

輸入參數fieldscompactuser_id必填

twitter_user_status

Check Account Status

Reports whether a Twitter/X account is alive, suspended, or deleted. Returns a status field that is one of 'alive', 'suspended', 'not_found' or 'unavailable', plus the numeric id when the account is alive and X's own reason when it gives one. It distinguishes a suspended or deleted account from a handle that does not exist, which a profile read answers the same way. Every outcome is a successful response: the answer is in the status field, and a suspension is not an error. A protected (private) account counts as alive, since protection is a visibility setting and not an account state. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-status

輸入參數fieldscompactuserName必填

twitter_user_about

Get Account About Details

Returns a user's full 'About' object: the structured profile facts X surfaces beyond the bio, including account category and professional/business labels, verification and identity-verification flags, joined date, location and linked website, follower/following counts, and X's 'About this account' transparency panel (the account's country, how the account was created, and its username-change history). Takes a username or a user_id. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-user-about

輸入參數fieldscompactuser_idusername

twitter_user_about_batch

Get Account About Details in Bulk

Returns the 'About' object (account country, how the account was created, username-change history, verification and the other About fields) for up to 100 accounts in one call. Takes usernames or user_ids as a comma-separated list, not both. Results come back in request order, each with an about object or an error code (not_found is billed; forbidden is free, X refuses that account to everyone; rate_limited and unavailable are free and retryable). Billed per account X answered for. One batch per API key runs at a time: a concurrent call gets 429 batch_in_progress (not billed). fields/compact apply inside each item's about object (fields=account_based_in); a results.* path returns about: {}. Cost: $0.0008 per billed item. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-user-about-batch

輸入參數fieldscompactuser_idsusernames

twitter_user_affiliates

Get Affiliated Accounts

Lists the affiliated accounts of an organization profile (the smaller accounts X displays under a company's 'Affiliated' badge, e.g. employees or sub-brands). Takes a username or user_id. Returns profile data per affiliate plus a pagination cursor, and an empty list for accounts with no affiliations. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-affiliates

輸入參數teamcountcursorfieldscompactuser_idusername

twitter_check_follow_relationship

Check Follow Relationship

Returns the follow relationship between two accounts: whether the source follows the target, whether the target follows the source, and blocking/muting flags where available. Each side is a numeric user id or a username (an unknown username or id returns a not-found error, not billed). Covers checking a follow before or after a follow action, and detecting mutuals. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-check-follow-relationship

輸入參數fieldscompactsource_user_idtarget_user_idsource_usernametarget_username

twitter_check_follow_relationship_batch

Check Follow Relationships in Bulk

Checks one account against up to 100 others in one call. Either one source (source_user_id or source_username) with up to 100 targets (target_usernames or target_user_ids), or one target with up to 100 sources (source_usernames or source_user_ids): a list on one side only. Each result carries the relationship from the SOURCE's side (following = source follows target, followed_by = target follows source), in request order. Example: which accounts on a shortlist already follow a brand, with the brand as target_username and the shortlist as source_usernames. Billed per pair answered with a relationship; not_found, forbidden, rate_limited and unavailable pairs are free. One batch per API key runs at a time (a concurrent call gets 429 batch_in_progress, not billed). fields/compact apply inside each item's relationship object. Cost: $0.0008 per billed item. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-check-follow-relationship-batch

輸入參數fieldscompactsource_user_idtarget_user_idsource_user_idssource_usernametarget_user_idstarget_usernamesource_usernamestarget_usernames

twitter_audience_summary

Summarize Audience by Country

Summarises an audience in one call: samples up to 100 followers of an account (username or user_id) or retweeters of a tweet (tweet_id), reads each sampled account's About country, and returns a country histogram (shares over accounts with a known country) plus a likely-bot share from documented profile signals (default avatar, no bio, under 5 followers, extreme follow ratio, no posts, created in the last 30 days, digit-suffix handle; 3 or more signals = likely automated, a heuristic, not a verdict). Billed per item: each sample page that added accounts plus each sampled account X answered About for, so sample=100 costs at most $0.08 plus up to 3 pages. Shares the one-batch-per-key slot with the batch endpoints. Cost: $0.0008 per billed item. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-audience-summary

輸入參數samplesourceuser_idtweet_idusername

twitter_user_tweets

Get User Tweets

Returns a user's recent posting timeline, cursor-paginated further back. The endpoint does not filter server-side, so the response routinely includes retweets and replies alongside original posts. Every item carries is_retweet, is_reply and is_quote booleans, and author.username names who wrote it (a retweet's retweeted_tweet holds the original author). Returns tweet text, id, timestamp and engagement metrics. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-tweets

輸入參數countcursorfieldscompactuser_idusernamepaid_promotion

twitter_user_tweets_and_replies

Get User Tweets and Replies

Returns a user's full activity timeline: their original tweets and their replies to others, cursor-paginated. Shows how someone engages with a community, not just what they post. Items carry is_retweet, is_reply and is_quote booleans. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-tweets-and-replies

輸入參數countcursorfieldscompactuser_idusernamepaid_promotion

twitter_user_tweets_complete

Get All Recent User Tweets

Returns a large batch of a user's tweet history in one call, auto-paginating server-side across upstream pages: { count, next_cursor, has_more, tweets }. One call does not guarantee the whole history: next_cursor is the completion signal, not count. A non-null next_cursor means the history is truncated and more remains, and passing it back as cursor continues from where the call stopped; a null next_cursor means the history is complete (has_more is the same signal as a boolean). Each call is bounded by both max and a server-side wall-clock budget, so a response can be truncated even when it holds fewer tweets than max, which is why count is not a completion signal. Takes the numeric user_id only. Billed flat per call regardless of how many tweets come back, so fewer, larger calls cost less than many small ones. Cost: $0.0024 per call. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-tweets-complete

輸入參數maxcursorfieldscompactuser_id必填paid_promotion

twitter_user_media

Get User Media

Returns the images and videos a user has posted: media-containing tweets with URLs to the media files, dimensions, and type (photo/video/animated_gif), cursor-paginated. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-media

輸入參數countcursorfieldscompactuser_idusernamepaid_promotion

twitter_user_mentions

Get User Mentions

Returns recent public tweets that mention (@ tag) a user, found with the to: search operator, with author info and metrics, cursor-paginated. Covers brand mentions, replies directed at an account, and public conversations about a person. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-mentions

輸入參數countcursorfieldscompactusername必填paid_promotion

twitter_user_likes

Get User Likes

Returns the tweets a user has liked (their public Likes tab), most recent first, each with author and metrics, plus a pagination cursor. Empty if the account hides its likes. Takes the numeric user_id only. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-likes

輸入參數countcursorfieldscompactuser_id必填paid_promotion

twitter_user_followers

Get Followers

Lists the accounts that follow a given user, with profile data for each follower (username, display name, bio, follower count), cursor-paginated for large audiences. Covers audience analysis, such as who follows a brand or influencer. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/follower-graph/user-followers

輸入參數countcursorfieldscompactuser_idusername

twitter_user_following

Get Following

Lists the accounts a given user follows, with profile data for each account followed, cursor-paginated. Covers a user's information sources, influencer networks, and competitor monitoring lists. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/follower-graph/user-following

輸入參數countcursorfieldscompactuser_idusername

twitter_user_followers_v2

Get Followers (v2)

Lists a user's followers in the v2 response shape: richer profile fields and more reliable cursoring for deep follower lists. Takes a username or user_id. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/follower-graph/user-followers-v2

輸入參數countcursorfieldscompactuser_idusername

twitter_user_following_v2

Get Following (v2)

Lists the accounts a user follows in the v2 response shape: richer profile fields and more reliable cursoring for deep following lists. Takes a username or user_id. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/follower-graph/user-following-v2

輸入參數countcursorfieldscompactuser_idusername

twitter_user_verified_followers

Get Verified Followers

Lists a user's followers that have a verified account (checkmark), cursor-paginated: the follower list filtered to verified accounts, which surfaces notable or institutional followers. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/follower-graph/user-verified-followers

輸入參數countcursorfieldscompactuser_idusername

twitter_followers_you_know

Get Followers You Know

Lists the 'Followers you know' for a target user id: the followers of that account that the authenticated account also follows (mutual-connection overlap). Requires an authenticated X session behind the API key. Returns profile data per overlap account plus a cursor. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/follower-graph/user-followers-you-know

輸入參數ct0countcursorfieldscompactuser_id必填proxy_urlauth_tokenuser_agent

twitter_tweet_detail

Get Tweet

Returns the full detail of a single tweet: text, author profile, post timestamp, like/retweet/reply/quote counts (quote_count is X's own total of quote tweets), attached media, referenced quoted tweet, and parent reply context. Takes the tweet id or its full URL. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/tweet-details/tweet-detail

輸入參數idurlfieldscompact

twitter_tweet_replies

Get Tweet Replies

Returns replies to a specific tweet, each with author, text and metrics, cursor-paginated. Covers the conversation under a tweet, its sentiment, and notable responses. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/tweet-details/tweet-replies

輸入參數idurlsortcursorfieldscompactpaid_promotion

twitter_tweet_replies_complete

Get All Tweet Replies

Returns every direct reply under a tweet in one call, walking the reply pages server-side: { count, next_cursor, has_more, is_complete, pages_fetched, sort, tweets }. is_complete is the completion signal, not count: true means X signalled the end of the conversation; false means the call stopped early (on max, a server-side time budget, a page cap, or a later page failing), and passing next_cursor back as cursor continues. Billed flat per call however many pages it walks, so one call over a long conversation costs less than paging it one reply page at a time. Cost: $0.0024 per call. Docs: https://docs.twitterapis.com/docs/reference/tweet-details/tweet-replies-complete

輸入參數idmaxurlsortcursorfieldscompactpaid_promotion

twitter_tweet_thread

Get Tweet Thread

Returns the tweets in a thread: the connected chain of tweets posted by the SAME author in sequence (a tweetstorm or numbered thread), in order, in a single call. It reads FORWARD from the tweet you pass and does not walk backwards, so pass the thread's FIRST tweet: its id is the conversation_id carried on every tweet in the thread. Passing a later tweet returns only that tweet and the author's tweets after it, the tail of the thread, and is_partial is true on that response. Replies from other users are not included. Takes the tweet id or its full URL. Cost: $0.0040 per call. Docs: https://docs.twitterapis.com/docs/reference/tweet-details/tweet-thread

輸入參數idurlfieldscompactpaid_promotion

twitter_tweet_retweeters

Get Retweeters

Lists the accounts that retweeted a specific tweet, with profile data for each retweeter, cursor-paginated. Shows who amplified a piece of content and how it spread. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/tweet-details/tweet-retweeters

輸入參數idurlcountcursorfieldscompact

twitter_tweet_quotes

Get Quote Tweets

Lists the tweets that QUOTE a specific tweet, cursor-paginated as full tweet objects, so each carries the commentary attached rather than just a number. A plain retweet carries no text and a reply is not a quote, so neither appears here. The endpoint is SEARCH-BACKED: X exposes no dedicated quote-tweets operation, so it runs the query quoted_tweet_id:<id> against X's search index. The returned 'count' is how many quotes this search returned, not the tweet's true total; the authoritative total is 'quote_count' on the tweet object, and the two differ because of index lag and because deleted, protected, suspended and region-withheld quotes are absent from search. Every response carries 'source' ("search"), 'search_query' (the exact query sent), and 'quote_matched' (how many returned tweets demonstrably quote the requested id). quote_matched equal to count means every row is genuine; quote_matched 0 on a NON-EMPTY page means X stopped honouring the operator and the rows are unrelated to the tweet. An empty first Top page is served from Latest instead of reading as zero quotes: the response then says product_used "Latest" and top_fallback true, and its next_cursor pages that Latest list. Search does not return every quote for some accounts, so a page can be empty with has_more false while the tweet has quotes; every response therefore also carries 'quote_count' (the tweet's real total, null when it could not be read or read as 0) and 'coverage': "complete" (the search ended on its first page holding at least quote_count rows), "partial" (it ended with fewer, plus a 'coverage_hint'; the rest were withheld by search) or "unknown" (more pages to walk, a later page, or no total). Count 0 with coverage "partial" means quotes exist that search withheld. X serves at most 20 quotes per page, so count above 20 is clamped to 20; 'requested_count' and 'effective_count' echo it. Page with next_cursor for more. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference

輸入參數idurlcountcursorfieldsstrictcompactproductpaid_promotion

twitter_list_members

Get List Members

Lists the members of a Twitter/X List by its numeric list id, with profile data for each member, cursor-paginated. Covers curated account sets such as competitor lists, industry watchlists or media outlet lists. The list_id appears in the X.com list URL (x.com/i/lists/<list_id>). Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/list-data/list-members

輸入參數countcursorfieldscompactlist_id必填

twitter_list_followers

Get List Followers

Lists a public List's followers by its numeric id, cursor-paginated. Followers and members are different sets of people: members are the accounts the List owner added to it, followers are the accounts that subscribed to read it. A List with hundreds of members commonly has only a handful of followers, so a small count here is normal and is not a truncated page. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/list-data/list-followers

輸入參數countcursorfieldscompactlist_id必填

twitter_list_tweets

Get List Tweets

Returns the posts written by the members of a public Twitter/X List, newest first, through X's search index. This is the FILTERABLE List feed: it accepts since and until date bounds and an include_replies toggle. It returns no retweets, and search-index lag applies, so a post made moments ago can be missing for a short while. Cursor-paginated. The list_id appears in the X.com list URL (x.com/i/lists/<list_id>). Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/list-data/list-tweets

輸入參數countsinceuntilcursorfieldscompactlist_id必填productpaid_promotioninclude_replies

twitter_list_timeline

Get List Timeline

Returns a public Twitter/X List's NATIVE feed: the same posts and the same ordering the List shows on x.com, including members' retweets. It takes only list_id, count and cursor; no date range and no reply filter exist on this endpoint, because a native timeline cannot honour search operators. Cursor-paginated; an empty tweets array marks the end. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/list-data/list-timeline

輸入參數countcursorfieldscompactlist_id必填paid_promotion

twitter_spaces_info

Get Space Details

Get metadata and the participant roster for one X Space by id, live or ended: title, lifecycle state (Scheduled, NotStarted, Running or Ended), host, topics, scheduled and actual start/end times, peak live listener count, replay view count, and the admin, speaker and listener rosters. Returns metadata only, NOT the Space audio. Note that X does not retain the per-person listener roster once a Space ends, so listeners comes back empty for an ended Space while total_live_listeners and total_replay_watched still reflect the real audience. All timestamps are millisecond-epoch numbers. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/spaces/spaces-info

輸入參數id必填fieldscompactwith_replayswith_listeners

twitter_community_info

Get Community

Returns the metadata for one X Community by its numeric id: name, description, member_count, moderator_count, join_policy, invites_policy, the join question, primary topic, search tags, the posted rules, both the custom and the default banner plus a resolved banner_url, the permalink, the admin and creator profiles, and the facepile member ids. The community id is the digits in a x.com/i/communities/<id> URL. role, can_join, is_pinned and viewer_relationship_type are null by design, not an error: they describe the account that made the call, and this public read does not run as your account. rules[].description is also null: X sends only the rule id and name on this payload. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/communities/community-info

輸入參數fieldscompactcommunity_id必填

twitter_community_about

Get Community About Details

The About tab for one X Community: its moderators, and a preview of its members, both returned as FULL user profiles with bio, follower and following counts, tweet counts, location, website, banner and join date, so it answers who runs a community in one call. It covers the PEOPLE, not the community object (name, description, rules, join policy). Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/communities/community-about

輸入參數fieldscompactcommunity_id必填

twitter_community_members

Get Community Members

Lists the member roster of an X Community, cursor-paginated, with each row carrying that member's own role in the community: 'Admin', 'Moderator' or 'Member'. Rows are { user, role }. The user object is REDUCED (id, username, name, profile_image_url, is_blue_verified, verified, is_protected) because X's roster operation sends no bio, no follower or following counts and no created_at. The role on a member ROW is not caller-relative and is returned in full, unlike the role field on the community object itself. Admins and moderators are interleaved through this list at arbitrary positions, so one page filtered by role is not a complete moderator list. Paging is a bare next_cursor with no total count from X; the list ends when members comes back empty or has_more is false. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/communities/community-members

輸入參數countcursorfieldscompactcommunity_id必填

twitter_community_moderators

Get Community Moderators

Lists the moderators and admins of an X Community, cursor-paginated, in { user, role } rows (the array is named members). This is a SEPARATE upstream operation, not a filter over the member roster: moderators sit at arbitrary positions inside the full roster, so filtering one roster page would return only the moderators among its first rows while looking like a complete answer. Admins appear here too; each row's role says which. Paging is a bare next_cursor with no total count from X. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/communities/community-moderators

輸入參數countcursorfieldscompactcommunity_id必填

twitter_community_tweets

Get Community Tweets

Returns an X Community's own post timeline, cursor-paginated as full tweet objects, with the community's PINNED post in its own separate 'pinned' field rather than as an item inside 'tweets'. X delivers the pinned post as a different timeline entry and does not repeat it in the feed, so 'tweets' alone omits it, and it is very often the community's rules post. One flat list is 'pinned' (when non-null) followed by 'tweets'; the pinned post is excluded from 'tweets', so there is no duplicate. ranking_mode is a REAL upstream parameter, not a local sort. Scope is one community. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/communities/community-tweets

輸入參數countcursorfieldscompactcommunity_id必填ranking_modepaid_promotion

twitter_community_memberships

Get Community Memberships

The INVERSE community lookup: given a numeric X USER id, lists the communities that account belongs to, cursor-paginated. Each row is the FULL community object (member counts, rules, topic, policies, admin and creator). Takes a numeric user id ONLY, not a @handle. An EMPTY communities array is a real, successful answer (the account is in no communities), not a not-found. role / can_join / is_pinned / viewer_relationship_type are null on every community returned, because this public read does not run as your account. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/communities/community-memberships

輸入參數countcursorfieldscompactuser_id必填

twitter_creator_commentary_video

Rank Video Creators by Topic

Ranks the accounts posting native video about a topic. Runs one X search page for '<query> filter:native_video' and groups the matching posts by author into a ranked creators list; each row carries rank, the full user profile, video_post_count, quote_post_count, total_views, views_known, median_views, median_reply_count, median_quote_count and up to three top_post_ids. Retweets, posts without video or author, and posts under min_views are skipped and counted per reason in skipped (retweet, no_video, no_author, below_min_views), with tweets_scanned and tweets_matched beside them, so a short list can be told apart from a thin page. The ranking rule is returned as text in ranking on every response. One page covers about 20 posts; next_cursor pages the same search. An empty creators list is a successful answer (nobody posted video on the topic in that page), not an error. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/search/creator-commentary-video

輸入參數countquery必填cursorfieldscompactproductmin_views

twitter_grok_chat

Ask the X AI Assistant

Asks X's own Grok a question as the authenticated account and returns ONE complete JSON reply: the answer text, citations (url, domain, title, snippet) merged and de-duplicated across every search Grok ran, the searches themselves (tool_calls), the conversation and turn ids, and both the requested model and which model ACTUALLY answered (they can differ). Grok reads X in real time, so it answers about what is being said right now, and a bare tweet or status URL as the message returns a structured summary of that post. The reply is text and JSON only: it has no image or media field. Buffered, not streamed: a search-grounded answer can take up to 90 seconds, and a submit-and-poll form of this call exists for clients that stop waiting sooner. STATELESS: nothing is stored, so a multi-turn conversation carries its prior turns in messages[] along with conversation_id. Requires an authenticated X session for the acting account. Cost: $0.0040 per call. Docs: https://docs.twitterapis.com/docs/reference/grok/grok-chat

輸入參數ct0modemessagemessagesproxy_urlauth_tokenuser_agentimage_countconversation_id

twitter_grok_chat_submit

Start an X AI Assistant Chat Job

Starts the same Grok chat as the buffered Grok chat call without holding the connection open, for clients that stop waiting before a search-grounded answer arrives. Takes the same arguments and returns 202 at once with job_id, status 'pending', poll (the path to read the job at), poll_after_seconds (3), result_ttl_seconds (900) and created_at. A bad body, a bad API key, a missing X session and a short balance are answered on the spot, before any job exists. At most 5 jobs per API key can be pending at once; one more answers 429 too_many_pending_jobs. Submitting is free: the $0.004 Grok chat price is charged once, on the poll that first delivers the finished answer, and a failed, timed-out, interrupted or uncollected job is not charged. Requires an authenticated X session for the acting account, and the chat runs as that account. Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/grok/grok-chat-submit

輸入參數ct0modemessagemessagesproxy_urlauth_tokenuser_agentimage_countconversation_id

twitter_grok_chat_result

Get an X AI Assistant Chat Job Result

Reads a Grok chat job by the job_id its submit call returned. While the job runs: 202 with status 'pending', poll_after_seconds and created_at. When it finishes: 200 with the full Grok chat reply (answer, citations, tool_calls, conversation and turn ids, requested and actual model) plus job_id and status 'done'. When the chat failed: the status and typed error the buffered call would have answered, plus job_id and status 'failed'; 504 job_timeout and 503 job_interrupted mean the job did not finish on this API's side. An unknown job_id, a finished answer older than 15 minutes and another API key's job all answer 404. The $0.004 Grok chat price is charged once, on the first poll that delivers the finished answer; polling it again is free. Needs only the API key that submitted the job, no X session. Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/grok/grok-chat-result

輸入參數fieldsjob_id必填

twitter_grok_config

Check X AI Assistant Access

Reports whether the authenticated account can use Grok, and which models it may pick: eligibility, X's own reasons when it is NOT eligible (passed through verbatim, since X's policy is not visible to this API), whether free access is enabled, and the available model options. Eligibility is a property of the X ACCOUNT rather than of the API key. Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/grok/grok-config

輸入參數ct0fieldscompactproxy_urlauth_tokenuser_agent

twitter_account_me

Get Account Details

Returns your twitterapis.com account details: email, name, credits remaining, credits used, total requests made, and account creation date. Authenticated by the API key. An account read, not Twitter data; it spends no credits. Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/account/account-me

無需輸入參數。

twitter_account_payments

Get Payment History

Returns your twitterapis.com payment history: the list of top-ups and charges on the account. Authenticated by the API key. An account read, not Twitter data; it spends no credits. Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/account/account-payments

無需輸入參數。

twitter_feedback_send

Send Product Feedback

Reports a product problem or gap in twitterapis.com to its team from inside this session. A report is first drafted to a local queue (action "draft", the default), which sends nothing; action "send" posts the drafts named in ids to POST /feedback and returns a server id per report. action "list" shows the pending drafts with their ids, and action "discard" drops drafts. A draft carries a type (bug, idea or missing_capability), a title of at most 120 characters, details of at most 8000 characters, an optional area, and optional evidence identifiers. Evidence fields left out are filled from the last failing call in this session (tool, endpoint, HTTP status, request id), and mcp_version and client are attached to every report. Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/account/feedback-post

輸入參數idsareatypetitleactiondetailsevidence

twitter_feedback_get

Get Feedback Report

Returns a feedback report this account sent earlier, by its server id: its details and evidence, status new, triaged, shipped or declined, the team's response text if any, and updated_at, which moves only when the team acts on it. 404 if the id is not on this account. Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/account/feedback-id

輸入參數id必填

twitter_feedback_list

List Feedback Reports

Lists the feedback reports this account has already SENT to twitterapis.com, newest first: server-side reports, not local drafts that are still unsent. Each item carries id, type, title, area, status (new, triaged, shipped or declined), the team's response if any, created_at and updated_at; details and evidence are not included, so paging this cannot bulk-export a report's body. Cursor-paginated while next_cursor is non-null. Feedback calls share a 10-per-minute rate limit. Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/account/feedback-get

輸入參數typelimitcursorstatus

twitter_home_timeline

Get Home Timeline

Returns the authenticated account's Home timeline (the 'Following'/'For you' feed), most recent first: what that account sees when it opens X. Requires an authenticated X session behind the API key. Returns tweets with author and metrics plus a cursor. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-home-timeline

輸入參數ct0countcursorfieldscompactproxy_urlauth_tokenuser_agentpaid_promotion

twitter_bookmarks

Get Bookmarks

Lists the authenticated account's bookmarked tweets, most recent first. Requires an authenticated X session behind the API key. Returns each bookmarked tweet with author and metrics plus a cursor. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-bookmarks

輸入參數ct0countcursorfieldscompactproxy_urlauth_tokenuser_agentpaid_promotion

twitter_blocking

Get Blocked Accounts

Lists the accounts the authenticated account has BLOCKED, as full user objects, cursor-paginated. Requires an authenticated X session behind the API key. There is no user_id argument: X provides no way to read another account's block list, so this reads the authenticated account's only. An empty users array is a real answer meaning the account blocks nobody, not a silent failure, because the endpoint returns an error status rather than an empty page when it cannot read the list. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-blocking

輸入參數ct0countcursorfieldscompactproxy_urlauth_tokenuser_agent

twitter_muting

Get Muted Accounts

Lists the accounts the authenticated account has MUTED, as full user objects, cursor-paginated. Muting hides an account's posts from the timeline without blocking it, so the mute list is a different list from the block list and an account can appear in one and not the other. Requires an authenticated X session behind the API key. There is no user_id argument: X provides no way to read another account's mute list. An empty users array means the account mutes nobody, not a silent failure. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-muting

輸入參數ct0countcursorfieldscompactproxy_urlauth_tokenuser_agent

twitter_bookmark_folders

List Bookmark Folders

Lists the authenticated account's bookmark FOLDERS (X's internal name: collections), the named groups saved tweets can be organised into, separate from the flat bookmarks list. Requires an authenticated X session behind the API key. Returns each folder's id, name, and a cover image. Takes no arguments; the folders resolve from the session alone. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-bookmark-folders

輸入參數ct0fieldscompactproxy_urlauth_tokenuser_agent

twitter_bookmark_folder_timeline

Get Bookmark Folder Tweets

Returns the tweets inside ONE of the authenticated account's bookmark folders, identified by folder_id. Requires an authenticated X session behind the API key. Cursor-paginated; there is no count/page-size argument for this operation. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/user-reads/user-bookmark-folder-timeline

輸入參數ct0cursorfieldscompactfolder_id必填proxy_urlauth_tokenuser_agentpaid_promotion

twitter_dm_list

List Direct Message Conversations

Lists the authenticated account's Direct Message conversations (inbox), each with the participant and its conversation_id. Requires an authenticated X session behind the API key. Read-only: sends nothing. It reads X's standard DM inbox, so conversations X has moved to end-to-end encrypted chat may not appear, and conversations still in the message-requests folder may be missing. Cost: $0.0016 per call. Docs: https://docs.twitterapis.com/docs/reference/direct-messages/dm-list

輸入參數ct0fieldscompactproxy_urlauth_tokenuser_agent

twitter_dm_conversation

Get Direct Message Conversation

Returns the messages in one Direct Message conversation by its conversation_id. Requires an authenticated X session behind the API key. Returns each message with sender id, time, and text, plus min_entry_id and max_entry_id for the page; max_id set to a page's min_entry_id returns the next older page. Read-only: sends nothing. Cost: $0.0016 per call. Docs: https://docs.twitterapis.com/docs/reference/direct-messages/dm-conversation

輸入參數ct0fieldsmax_idcompactproxy_urlauth_tokenuser_agentconversation_id必填

twitter_dm_send

Send Direct Message

Sends a Direct Message as the authenticated account to a recipient's numeric user id (recipient_id) with the message text. Requires an authenticated X session with write capability behind the API key; X soft-blocks writes from datacenter IPs, and a residential proxy_url makes delivery more reliable. Returns message_id and conversation_id. Delivers a real DM and is not silently reversible. Cost: $0.0016 per call. Docs: https://docs.twitterapis.com/docs/reference/direct-messages/dm-send

輸入參數ct0text必填proxy_urlauth_tokenuser_agentrecipient_id必填

twitter_create_tweet

Post Tweet

Posts a new tweet as the authenticated account. reply_to posts it as a reply, quote as a quote-tweet. It publishes publicly and is not silently reversible; removal is a separate delete. Requires an authenticated X session with write capability behind the API key. Returns the new tweet_id and url. Cost: $0.0016 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/tweet-create

輸入參數ct0text必填quotereply_tomedia_idsproxy_urlauth_tokenuser_agent

twitter_delete_tweet

Delete Tweet

Deletes a tweet as the authenticated account. Irreversible: the tweet is permanently removed. Only tweets the authenticated account authored can be deleted. Takes the tweet id or url. Requires write capability behind the API key. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/tweet-delete

輸入參數idct0urlproxy_urlauth_tokenuser_agent

twitter_update_profile

Update Profile

Changes the display name, bio, location or link on the authenticated account's own X profile. This is a PARTIAL update: only the fields sent change, and every omitted field keeps its current value, so a name alone leaves the bio intact. An empty string CLEARS that field, which differs from omitting it: "" blanks the value, an absent key leaves it alone. At least one of name, description, location or url is required, and a request whose only value is an empty string is a valid clear rather than an empty request. It writes a real profile and takes effect immediately with no undo. Requires an authenticated X session behind the API key. Returns ok and updated_fields, which echoes the field names SENT rather than a diff against the previous profile. Cost: $0.0016 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/user-update-profile

輸入參數ct0urlnamelocationproxy_urlauth_tokenuser_agentdescription

twitter_update_avatar

Update Profile Image

Replaces the profile picture on the authenticated account's own X profile. Takes ONE field, image, holding base64-encoded image bytes: not a URL, not multipart, and not a media upload id. It writes a real profile and takes effect immediately with NO UNDO, and X keeps no history of the previous picture; its current URL is profile_image_url on the profile. Returns ok. X mints a new media id for every accepted upload, so profile_image_url changes even when the image is byte-identical to the one already in place. Requires an authenticated X session behind the API key. Cost: $0.0016 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/user-update-avatar

輸入參數ct0image必填proxy_urlauth_tokenuser_agent

twitter_update_banner

Update Profile Banner

Replaces the wide header image on the authenticated account's own X profile. Takes ONE field, banner, holding base64-encoded image bytes: not a URL, not multipart, and not a media upload id. X renders the header as a wide strip, so a 3:1 image fills it without cropping. It writes a real profile and takes effect immediately with NO UNDO, and X keeps no history of the previous banner; its current URL is cover_picture on the profile. Returns ok. At least one of X's own endpoints reports cover_picture as empty for accounts that plainly have a banner, so an empty cover_picture is not by itself evidence the account has none. Requires an authenticated X session behind the API key. Cost: $0.0016 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/user-update-banner

輸入參數ct0banner必填proxy_urlauth_tokenuser_agent

twitter_draft_create

Create Draft Tweet

Saves a PRIVATE draft tweet on the authenticated account. Nothing is posted and nobody can see it: the draft lands in X's own composer under Drafts until a person publishes or deletes it. Requires an authenticated X session behind the API key. Returns ok and draft_tweet_id. A null draft_tweet_id means X refused the create; that answers 422 and is not billed. Cost: $0.0016 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/draft-create

輸入參數ct0text必填quotereply_tomedia_idsproxy_urlauth_tokenuser_agent

twitter_draft_edit

Replace Draft Tweet

Replaces the contents of one existing PRIVATE draft on the authenticated account. The fields sent BECOME the draft rather than merging into it, so any field left out is dropped, including media. Posts nothing. Requires an authenticated X session behind the API key. Returns ok and the draft_tweet_id edited. Cost: $0.0016 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/draft-edit

輸入參數id必填ct0text必填quotereply_tomedia_idsproxy_urlauth_tokenuser_agent

twitter_draft_delete

Delete Draft Tweet

Deletes one PRIVATE draft from the authenticated account by id. Irreversible, but low-stakes: a draft is not public, so this retracts nothing and notifies nobody. Requires an authenticated X session behind the API key. Returns ok, deleted, and the draft_tweet_id targeted. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/draft-delete

輸入參數id必填ct0proxy_urlauth_tokenuser_agent

twitter_draft_list

List Draft Tweets

Lists the PRIVATE drafts saved on the authenticated account, the source of draft ids for an edit or a delete. Drafts are private to the account that holds them, so no other account's drafts are readable. Requires an authenticated X session behind the API key. Returns drafts (each with draft_tweet_id, text, thread_truncated), count, and sometimes partial. thread_truncated true means the draft is a THREAD and text is only its first tweet, which is a parse that succeeded. partial true means X's answer was read but not fully understood, which is NOT 'no drafts': partial is absent entirely on a clean read, so an empty drafts array with no partial flag means the account has none. One call returns the whole list; there is no cursor and no timestamp on a draft row. Cost: $0.0016 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/draft-list

輸入參數ct0fieldscompactascendingproxy_urlauth_tokenuser_agent

twitter_scheduled_create

Schedule Tweet

Schedules a tweet to POST PUBLICLY at a future instant from the authenticated account. This is NOT a draft: it goes out on its own at execute_at unless it is cancelled first. execute_at is epoch SECONDS, not milliseconds (a Date.now() millisecond value is 1000x too large), and a millisecond value is refused with a message naming the unit rather than scheduling the post tens of thousands of years out. It has to be strictly in the future. Requires an authenticated X session behind the API key. Returns ok, scheduled_tweet_id, and the execute_at sent. Cost: $0.0016 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/scheduled-create

輸入參數ct0text必填quotereply_tomedia_idsproxy_urlauth_tokenexecute_at必填user_agent

twitter_scheduled_delete

Delete Scheduled Tweet

Cancels one PENDING scheduled post on the authenticated account so it does not publish. Applies only before its execute_at: once the post has gone out there is no scheduled row left to cancel, and what remains is an ordinary tweet. Requires an authenticated X session behind the API key. Returns ok, deleted, and the scheduled_tweet_id targeted. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/scheduled-delete

輸入參數id必填ct0proxy_urlauth_tokenuser_agent

twitter_scheduled_list

List Scheduled Tweets

Lists the posts QUEUED to publish on the authenticated account: the source of scheduled ids for a cancel, and a record of what is already queued. Rows carry X's own state label verbatim (for example Scheduled), and a row that has already published leaves the queue and becomes an ordinary tweet. Requires an authenticated X session behind the API key. Returns scheduled (each with scheduled_tweet_id, text, thread_truncated, execute_at, state), count, and sometimes partial. thread_truncated is INFERRED on this endpoint rather than captured: a scheduled row carries the same compose payload a draft row does, and the captured scheduled row elides that body, so the flag is sound and fail-safe (an absent key yields false) but has not been seen true. execute_at comes back in epoch SECONDS: X answers this operation in milliseconds and the value is normalised, so it is in the same unit the scheduling input takes. partial true means X's answer was read but not fully understood, which is not the same as an empty queue; on a clean read it is absent entirely. Cost: $0.0016 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/scheduled-list

輸入參數ct0fieldscompactascendingproxy_urlauth_tokenuser_agent

twitter_favorite_tweet

Like Tweet

Likes (favorites) a tweet as the authenticated account. Takes the tweet id or url. Requires write capability behind the API key. Reversible. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/tweet-favorite

輸入參數idct0urlproxy_urlauth_tokenuser_agent

twitter_unfavorite_tweet

Unlike Tweet

Removes a like (unfavorite) from a tweet as the authenticated account. Takes the tweet id or url. Requires write capability behind the API key. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/tweet-unfavorite

輸入參數idct0urlproxy_urlauth_tokenuser_agent

twitter_pin_tweet

Pin Tweet

Pins one of the authenticated account's own tweets to the top of its profile. Pinning replaces any existing pinned post, since a profile has one. Takes the tweet id or url. Requires write capability behind the API key. Reversible. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/tweet-pin

輸入參數idct0urlproxy_urlauth_tokenuser_agent

twitter_unpin_tweet

Unpin Tweet

Unpins the tweet pinned to the top of the authenticated account's profile, leaving the profile with no pinned tweet. The tweet itself stays posted. Takes the tweet id or url. Requires write capability behind the API key. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/tweet-unpin

輸入參數idct0urlproxy_urlauth_tokenuser_agent

twitter_retweet

Retweet

Retweets a tweet as the authenticated account. Takes the tweet id or url. Requires write capability behind the API key. Reversible. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/tweet-retweet

輸入參數idct0urlproxy_urlauth_tokenuser_agent

twitter_unretweet

Undo Retweet

Undoes a retweet as the authenticated account. Takes the tweet id or url. Requires write capability behind the API key. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/tweet-unretweet

輸入參數idct0urlproxy_urlauth_tokenuser_agent

twitter_bookmark_tweet

Bookmark Tweet

Bookmarks a tweet to the authenticated account's private bookmarks. Takes the tweet id or url. Requires write capability behind the API key. Reversible. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/tweet-bookmark

輸入參數idct0urlproxy_urlauth_tokenuser_agent

twitter_unbookmark_tweet

Remove Bookmark

Removes a tweet from the authenticated account's bookmarks. Takes the tweet id or url. Requires write capability behind the API key. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/tweet-unbookmark

輸入參數idct0urlproxy_urlauth_tokenuser_agent

twitter_follow_user

Follow User

Follows a user as the authenticated account, by numeric user_id or by @handle (exactly one of the two). Requires write capability behind the API key. Reversible. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/user-follow

輸入參數ct0user_idusernameproxy_urlauth_tokenuser_agent

twitter_unfollow_user

Unfollow User

Unfollows a user as the authenticated account, by numeric user_id or by @handle (exactly one of the two). Requires write capability behind the API key. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/user-unfollow

輸入參數ct0user_idusernameproxy_urlauth_tokenuser_agent

twitter_list_add_member

Add List Member

Adds one account to a Twitter/X List that the registered X session owns, by numeric list id and numeric user id. Example: adding each speaker at a conference to a List as they are announced. Returns ok, action, list_id, user_id, the List's member_count read back from X after the write, and the full list object. member_count confirms the change landed; it is null when X returned no list object at all, which is itself the not-applied signal. A write that does not apply (the account is already a member, the List belongs to another account) comes back with the SAME field layout plus a 422 and a machine-readable reason, and is not billed. Reversible. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/list-add-member

輸入參數ct0list_id必填user_id必填proxy_urlauth_tokenuser_agent

twitter_list_remove_member

Remove List Member

Removes one account from a Twitter/X List that the registered X session owns, by numeric list id and numeric user id. Example: pruning accounts that have gone quiet from a curated List. Returns ok, action, list_id, user_id, the List's member_count read back from X after the write, and the full list object. member_count confirms the removal landed; it is null when X returned no list object at all, which is itself the not-applied signal. A write that does not apply (the account was not a member, the List belongs to another account) comes back with the SAME field layout plus a 422 and a machine-readable reason, and is not billed. Reversible. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/list-remove-member

輸入參數ct0list_id必填user_id必填proxy_urlauth_tokenuser_agent

twitter_list_create

Create List

Creates a new Twitter/X List owned by the registered X session, with a name and an optional description and privacy flag. Returns ok, action, the new list_id, member_count, and the full list object X returned. A List is PUBLIC unless is_private is "true", and a private List is not readable through the public List reads (members, tweets, timeline). Cost: $0.0016 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/list-create

輸入參數ct0name必填proxy_urlauth_tokenis_privateuser_agentdescription

twitter_community_join

Join Community

Joins an X Community as the authenticated account, by numeric community id. One upstream call, nothing read first. Returns ok, action ('join'), community_id, status ('joined') and community, which holds only the keys X sent back among id, name, member_count, role and join_policy, or is null when X sent no community object. Refusals come back with the same fields plus an error code and are not billed: 409 join_requires_approval (the community requires moderator approval; no join request is submitted), 409 already_member, 404 community_not_found, 403 account_suspended or account_locked, and 422 write_not_applied with X's own reason. Requires an authenticated X session. Reversible. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/community-join

輸入參數ct0proxy_urlauth_tokenuser_agentcommunity_id必填

twitter_community_leave

Leave Community

Leaves an X Community as the authenticated account, by numeric community id. One upstream call, nothing read first. Returns ok, action ('leave'), community_id, status ('left') and community, which holds only the keys X sent back among id, name, member_count, role and join_policy, or is null when X sent no community object. Refusals come back with the same fields plus an error code and are not billed: 409 not_member, 404 community_not_found, 403 account_suspended or account_locked, and 422 write_not_applied with X's own reason. Requires an authenticated X session. Reversible for a community open to anyone; a community that requires moderator approval cannot be rejoined through this API, since a join there answers 409 join_requires_approval. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/community-leave

輸入參數ct0proxy_urlauth_tokenuser_agentcommunity_id必填

twitter_customer_session

Link X Session

Registers your own X account session against the API key, so the authenticated-account reads (home timeline, bookmarks, DMs, likes, articles) and the write actions (posting, DMs, follows, likes, retweets, media upload, articles) act as that account. Takes the x.com session cookies auth_token and ct0 (copied from a logged-in browser), plus an optional user_agent and residential proxy_url. The cookies are stored server-side against the key and are not returned. Returns ok, the resolved username, and whether the session validated live. A username/password login is the alternative to raw cookies. Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/account-session/customer-session

輸入參數ct0必填proxy_urlauth_token必填user_agent

twitter_customer_session_status

Get Linked X Session

Reads back the X account session registered against this API key, without changing it. Returns registered (false if none was registered), the resolved username and twitter_user_id the session maps to, status ('ok', or 'dead' once X has rejected the cookies), created_at, updated_at, last_used_at, and an egress block: source (one of session, sticky_residential, pool_residential, direct), customer_proxy_in_use (true when the registered proxy_url is the one writes leave from), and a note explaining that tier. It does not return auth_token, ct0, or any proxy URL. Answers 'which account am I posting as', 'has my session expired', and 'is the proxy I supplied being used'. Scoped to the calling API key by construction: it takes no account identifier of any kind, so it cannot read another key's session. Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/account-session/customer-session-status

無需輸入參數。

twitter_customer_session_delete

Unlink X Session

Revokes the X account session registered against this API key, deleting the stored auth_token and ct0 from twitterapis.com. Self-serve, with no ticket and no human in the loop. Scoped to the calling API key by construction: it takes no account identifier of any kind, so it cannot reach another key's session. Idempotent and free: revoking twice, or revoking when nothing was stored, returns ok with deleted=false, and it costs no credits, so a key that is out of balance can still delete its credentials. Afterwards the authenticated-account reads and the write actions stop acting as that account until a session is registered again. This deletes the stored copy only: it does not log the account out of x.com, and the cookies themselves stay valid until the session is revoked in the X account settings. Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/account-session/customer-session-delete

無需輸入參數。

twitter_user_login

Log In to X

Logs in to X with a username and password (plus totp_secret if the account has 2FA) and stores the resulting session against the API key, so the authenticated-account reads and the write actions then act as that account. On success returns { ok, username, message }; it does not return the session cookies (auth_token/ct0 are minted and kept server-side, not sent back). Typical failures: bad_credentials (401), two_factor_required (400, needs totp_secret), captcha_required (422), acid_challenge (409, the login has to be confirmed from the account before a retry). Handles real account credentials. Cost: $0.0100 per call. Docs: https://docs.twitterapis.com/docs/reference/account-session/user-user-login

輸入參數password必填username必填proxy_urluser_agenttotp_secret

twitter_media_upload

Upload Media

Uploads an image to X and returns a media_id for a tweet's media_ids. Takes media_data as base64-encoded image bytes. Acts as the X session registered against the API key. Per-call auth_token and ct0 are also accepted. Returns ok and the media_id. Only base64 image data is supported over this JSON transport. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/media-upload

輸入參數ct0proxy_urlauth_tokenmedia_data必填user_agent

twitter_media_status

Check Media Processing Status

Reports whether an uploaded media_id has finished processing on X. The media upload accepts base64-encoded images only, not video or GIF, and an image has no processing step on X: its media_id is usable in a tweet as soon as the upload returns, with no status check needed. The state fields matter only for media X processes asynchronously, where a tweet attaching the id fails until X reports state 'succeeded'. Returns media_id, state ('pending', 'in_progress', 'succeeded' or 'failed'), check_after_secs (how long X asks to wait before the next status check), progress_percent, and an error object when state is 'failed'. Reads through the registered X session, the same one that performed the upload. Per-call auth_token and ct0 are also accepted. A READ: no daily write cap applies. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/write-actions/media-status

輸入參數ct0fieldscompactmedia_id必填proxy_urlauth_tokenuser_agent

twitter_article_create

Create Article

Starts a new DRAFT article ('Note') as the authenticated account. No input required. Returns the new article's entity id and its full article object. Requires an authenticated X session with write capability behind the API key. Cost: $0.0016 per call. Docs: https://docs.twitterapis.com/docs/reference/articles/article-create

輸入參數ct0proxy_urlauth_tokenuser_agent

twitter_article_update_cover_media

Set Article Cover Image

Attaches an ALREADY-UPLOADED image as the cover of a DRAFT article, as the authenticated account. This does not upload: media_id is the id a prior media upload returned. Takes the article's entity id. Edits are verified on drafts only. When X refuses an edit and the article is among the first 100 PUBLISHED articles X lists for the account, the call answers 422 article_published and is not billed; the detail names a path that avoids a published-article edit (unpublish, edit the draft, publish again). That round trip is not verified end to end, so it suits only an article that can stay unpublished if republishing fails. Requires an authenticated X session with write capability behind the API key. Returns the updated article object with cover_media populated. Cost: $0.0016 per call. Docs: https://docs.twitterapis.com/docs/reference/articles/article-update-cover-media

輸入參數id必填ct0media_id必填proxy_urlauth_tokenuser_agentmedia_category

twitter_article_update_title

Set Article Title

Sets or replaces the title of a DRAFT article as the authenticated account. Takes the article's entity id and the new title. Edits are verified on drafts only. When X refuses an edit and the article is among the first 100 PUBLISHED articles X lists for the account, the call answers 422 article_published and is not billed; the detail names a path that avoids a published-article edit (unpublish, edit the draft, publish again). That round trip is not verified end to end, so it suits only an article that can stay unpublished if republishing fails. Requires an authenticated X session with write capability behind the API key. Returns the updated article object. Cost: $0.0016 per call. Docs: https://docs.twitterapis.com/docs/reference/articles/article-update-title

輸入參數id必填ct0title必填proxy_urlauth_tokenuser_agent

twitter_article_update_content

Replace Article Content

Replaces the body content of a DRAFT article as the authenticated account. Edits are verified on drafts only. When X refuses an edit and the article is among the first 100 PUBLISHED articles X lists for the account, the call answers 422 article_published and is not billed; the detail names a path that avoids a published-article edit (unpublish, edit the draft, publish again). That round trip is not verified end to end, so it suits only an article that can stay unpublished if republishing fails. Takes the article's entity id and content_state: Draft.js JSON ({ blocks: [...], entityMap: [...] }) built by the caller; blocks are forwarded with only the data, text, key, type, entityRanges and inlineStyleRanges fields (X rejects any other block field, depth included). Block types X accepts: unstyled, header-two, unordered-list-item, ordered-list-item, blockquote, atomic (a one-space block carrying an entity via entityRanges [{key, offset: 0, length: 1}]); inline styles Bold and Italic. Entity data is snake_case on INPUT and X returns it camelCase: TWEET (an embedded post) {tweet_id}; MEDIA (an inline image) {caption, entity_key, media_items: [{local_media_id, media_category: 'DraftTweetImage', media_id}]} with media_id from a prior media upload; DIVIDER {}; LINK {url} (a Mutable entity over a text range, not atomic); MARKDOWN {markdown} (tables). A wrong field is refused by X's schema and the call answers 422 with reason validation_failed and the offending path in detail. Requires an authenticated X session with write capability behind the API key. Returns the updated article object (content_state echoed camelCase, media_entities populated for MEDIA). Cost: $0.0016 per call. Docs: https://docs.twitterapis.com/docs/reference/articles/article-update-content

輸入參數id必填ct0proxy_urlauth_tokenuser_agentcontent_state必填

twitter_article_publish

Publish Article

Publishes a DRAFT article as the authenticated account, transitioning it to Published and posting a REAL, PUBLIC announcement tweet that followers and anyone with the link can see. A consequential, hard-to-fully-undo action, unlike saving a draft: unpublishing reverts the article to Draft but LEAVES the announcement tweet up, and only deleting a published article both unpublishes it and removes the announcement tweet, by which time the content was public for however long it stayed up. Takes the article's entity id; audience accepts only 'Everyone' (or 'Public') and reply_control only 'Everyone', both the default when omitted, and any other value is refused with a 400; caption is optional text that becomes the announcement post's text. Requires an authenticated X session with write capability behind the API key. Returns the updated (Published) article object. Cost: $0.0016 per call. Docs: https://docs.twitterapis.com/docs/reference/articles/article-publish

輸入參數id必填ct0captionaudienceproxy_urlauth_tokenuser_agentreply_control

twitter_article_unpublish

Unpublish Article

Reverts a PUBLISHED article back to Draft as the authenticated account. The announcement tweet the publish posted is LEFT IN PLACE and stays publicly visible; deleting the article is what removes that tweet. X refuses this with an 'invalid_lifecycle' error if the article is not currently Published. Requires an authenticated X session with write capability behind the API key. Returns the updated (Draft) article object. Cost: $0.0016 per call. Docs: https://docs.twitterapis.com/docs/reference/articles/article-unpublish

輸入參數id必填ct0proxy_urlauth_tokenuser_agent

twitter_article_get

Get Article

Returns an article's full content (title, content_state, cover media, author, timestamps, public_url). Two mutually exclusive forms. PUBLIC: id or url of the article's announcement tweet; no registered session or per-call credentials needed, only the API key; PUBLISHED articles only. OWNER-ONLY: article_id (the article's own entity id); requires an authenticated session, and also reaches the account's own Drafts, which have no announcement tweet the public form could resolve. Returns 404 (article null) if not found, not visible, or (article_id form) not owned by the calling account. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/articles/article-get

輸入參數idct0urlfieldscompactproxy_urlarticle_idauth_tokenuser_agent

twitter_article_list

List Articles

Lists the authenticated account's own articles (drafts or published), most recent first. X exposes no combined view, so each call covers ONE lifecycle: lifecycle='published' lists published articles; omitted (or 'draft') lists drafts. Requires an authenticated X session behind the API key. Returns count, next_cursor (the cursor for the next page; null or absent means no more pages), and the page of article objects. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/articles/article-list

輸入參數ct0countcursorfieldscompactlifecycleproxy_urlauth_tokenuser_agent

twitter_article_delete

Delete Article

Deletes an article as the authenticated account. A DRAFT is hard-deleted outright; a PUBLISHED article is unpublished first and then its announcement tweet is deleted too, so this fully removes a published article's public footprint, unlike unpublishing, which leaves the tweet up. Irreversible. lifecycle and tweet_id are optional fast-path hints from a prior create or list response: when omitted, the server resolves the lifecycle itself by scanning the account's own Draft then Published articles, which costs an extra round trip. Requires an authenticated X session with write capability behind the API key. Returns ok/deleted and the id targeted. Cost: $0.0008 per call. Docs: https://docs.twitterapis.com/docs/reference/articles/article-delete

輸入參數id必填ct0tweet_idlifecycleproxy_urlauth_tokenuser_agent

twitter_monitor_create

Create Monitor

Starts watching an X account for new posts. Every new post from that handle is HMAC-signed and delivered to the account's registered webhook(s) on a shared poll interval. Monitor creation is account administration, not a metered read. Returns the new monitor's id, plus its normalized handle, status, and poll_interval_ms. Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/monitoring/monitor-post

輸入參數handle必填webhook_idsdomain_filterinclude_replies

twitter_monitor_list

List Monitors

List every monitor on your account: id, subject (its from:<handle> query), kind, status ('active' or 'paused'), degraded flag, events_possibly_missed, webhook_ids restriction, and created_at. Takes no arguments. Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/monitoring/monitor-get

無需輸入參數。

twitter_monitor_update

Update Monitor

Partially updates an existing monitor: pause or resume it via status, change which webhooks receive its events via webhook_ids, change or clear its domain_filter, or any combination in the same call (applied atomically). Resuming a paused monitor re-runs the same capacity and per-account cap checks as creating a new one, since it adds load back to monitoring capacity. All fields are optional; an omitted field stays unchanged. Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/monitoring/monitor-id-post

輸入參數id必填statuswebhook_idsdomain_filterinclude_replies

twitter_monitor_delete

Delete Monitor

Stops and removes a monitor by id. Irreversible: watching that handle again takes a new monitor. Delivery history referencing this monitor is retained, not cascade-deleted. Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/monitoring/monitor-id-delete

輸入參數id必填

twitter_monitor_health

Get Monitor Health

Returns one monitor's current status, degradation flag, poll interval, possibly-missed-event count, and cursor position (last_tweet_id, last_poll_at), for a health dashboard. Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/monitoring/monitor-id-health

輸入參數id必填

twitter_monitor_account_health

Get Monitoring Overview

Account-wide monitoring rollup in ONE call, with no monitor id: service status ('operational' or 'degraded'), active/paused/total counts across every monitor on the account, and pending/delivered/failed delivery counts from the last 24 hours. Takes no arguments. A key with zero monitors gets zeroed counts back, not an error. Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/monitoring/monitor-health

無需輸入參數。

twitter_monitor_deliveries

List Monitor Deliveries

Lists the most recent monitor delivery events across every monitor, most recent first: id, monitor_id, tweet_id, status, tweet_created_at, and the real measured latency (detected_lag_ms, from X's own post timestamp to enqueue; delivery_lag_ms, the separate queue-to-webhook-POST time; total_lag_ms). Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/monitoring/monitor-deliveries

輸入參數limitfieldscompact

twitter_x_user_stream_add_user

Watch Account (Stream Format)

Compatibility endpoint with an x_user_stream-shaped request/response envelope: watches an X account for new posts, translated onto the same underlying monitor system. It exists for migrating an existing x_user_stream-shaped integration without a rewrite. Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/monitoring/oapi-x-user-stream-add-user-to-monitor-tweet

輸入參數x_user_name必填

twitter_x_user_stream_remove_user

Stop Watching Account (Stream Format)

Compatibility endpoint with an x_user_stream-shaped envelope: stops watching an account. Irreversible. Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/monitoring/oapi-x-user-stream-remove-user-to-monitor-tweet

輸入參數id_for_user必填

twitter_x_user_stream_list_users

List Watched Accounts (Stream Format)

Compatibility endpoint with an x_user_stream-shaped envelope: lists every account currently tweet-monitored. Field mapping, not fabricated: x_user_id is null (this API stores no numeric Twitter user id) and is_monitor_profile is 0 (profile-change monitoring is not a capability this API has). Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/monitoring/oapi-x-user-stream-get-user-to-monitor-tweet

無需輸入參數。

twitter_monitor_webhook_create

Create Webhook

Registers an HTTPS endpoint to receive signed monitor events. The HMAC signing secret is returned ONLY in this response and cannot be retrieved again; it verifies the X-TwitterAPIs-Signature header on every delivery. Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/monitoring/webhook-post

輸入參數url必填

twitter_monitor_webhook_list

List Webhooks

Lists every webhook registered on the account: id, url, status ('active' delivers, 'disabled' means the endpoint returned a 410 Gone and needs re-registering to reactivate), and created_at. The signing secret is not returned here; it is returned at creation alone. Takes no arguments. Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/monitoring/webhook-get

無需輸入參數。

twitter_monitor_webhook_delete

Delete Webhook

Soft-deletes a webhook by id: it stops receiving deliveries immediately and disappears from the webhook list, but delivery history referencing it is retained rather than cascade-deleted. Irreversible from the caller's side; resuming delivery takes a newly registered webhook. Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/monitoring/webhook-id

輸入參數id必填

twitter_monitor_webhook_test

Send Webhook Test Event

Sends one HMAC-signed test event to this webhook's URL right now and returns the outcome synchronously: delivered (true if the endpoint returned a 2xx within the delivery timeout), status_code, and error. Unlike a real monitor event, a test send is not queued, retried, or dead-lettered: it is a one-shot diagnostic of the endpoint and its signature verification. Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/monitoring/webhook-id-test

輸入參數id必填

twitter_monitor_webhook_redrive

Redeliver Failed Webhook Events

Replays deliveries that dead-lettered while the endpoint was down. A delivery is dead-lettered after it fails all 8 attempts across 21 minutes, so an outage longer than that window loses those events; this re-queues them with a full retry budget, oldest first. Bounded by default so a recovered endpoint is not flooded: max_age_hours defaults to 24 and limit to 100. Returns requeued and skipped_permanent. A delivery that died for a permanent reason (a 410 Gone, a deleted webhook, or a URL egress refused) is not replayed, because it would fail the same way and spend the budget again. Replayed events carry the same signature and payload as the original, so a receiver idempotent on the event id sees no duplicate effect. Returns 409 if the webhook is disabled, which happens after the endpoint answers 410 Gone; a disabled webhook has to be re-registered. Cost: Free per call. Docs: https://docs.twitterapis.com/docs/reference/monitoring/webhook-id-redrive

輸入參數id必填limitmax_age_hours

版本歷史

15
  1. v0.28.0最新Nov 6, 2026
  2. v0.27.0Nov 5, 2026
  3. v0.26.0Nov 5, 2026
  4. v0.25.1Nov 3, 2026
  5. v0.25.0Oct 20, 2026
  6. v0.24.1Oct 20, 2026
  7. v0.24.0Oct 20, 2026
  8. v0.23.0Oct 16, 2026
  9. v0.22.1Oct 2, 2026
  10. v0.21.1Oct 2, 2026
  11. v0.21.0Oct 1, 2026
  12. v0.19.0Oct 1, 2026
  13. v0.18.0Oct 1, 2026
  14. v0.17.0Sep 30, 2026
  15. v0.9.8Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分