{"count":29,"auth":{"api_key":{"header":"Authorization","format":"Bearer <api_key>","alternateHeader":"X-API-Key"},"admin":{"header":"X-Admin-Secret","description":"Required for /v1/admin/* routes"}},"commands":[{"id":"health","method":"GET","path":"/health","summary":"Health check","auth":"none","params":[],"body":null},{"id":"catalog","method":"GET","path":"/v1","summary":"List available API commands","auth":"none","params":[],"body":null},{"id":"openapi","method":"GET","path":"/v1/openapi.json","summary":"Schema for API tools","auth":"none","params":[],"body":null},{"id":"me","method":"GET","path":"/v1/me","summary":"Current account plan and usage","auth":"api_key","params":[],"body":null},{"id":"user_info","method":"GET","path":"/v1/user/info","summary":"Get user profile and stats","auth":"api_key","params":[{"name":"userName","in":"query","required":true,"type":"string","description":"X handle without @ (alias: username)","example":"elonmusk"},{"name":"fresh","in":"query","required":false,"type":"boolean","description":"Bypass cache when 1/true/yes","example":"1"}],"body":null},{"id":"user_tweets","method":"GET","path":"/v1/user/tweets","summary":"Get latest tweets for a user","auth":"api_key","params":[{"name":"userName","in":"query","required":true,"type":"string","description":"X handle without @","example":"elonmusk"},{"name":"limit","in":"query","required":false,"type":"number","description":"Page size (1-40, default 20)","example":20},{"name":"cursor","in":"query","required":false,"type":"string","description":"Opaque pagination cursor. Pass next_cursor (or cursor) from the previous response unchanged."},{"name":"include_replies","in":"query","required":false,"type":"boolean","description":"Include reply tweets (default false on /user/tweets, true elsewhere)","example":"0"},{"name":"include_retweets","in":"query","required":false,"type":"boolean","description":"Include retweets (default true)","example":"1"},{"name":"media_only","in":"query","required":false,"type":"boolean","description":"Only tweets that have media[] (default false)","example":"1"},{"name":"since_id","in":"query","required":false,"type":"string","description":"Keep tweets with id strictly greater than this snowflake (page filter; keep paging with cursor)"},{"name":"until_id","in":"query","required":false,"type":"string","description":"Keep tweets with id strictly less than this snowflake (exclusive)"}],"body":null},{"id":"user_tweets_and_replies","method":"GET","path":"/v1/user/tweets-and-replies","summary":"Get tweets and replies for a user","auth":"api_key","params":[{"name":"userName","in":"query","required":true,"type":"string","description":"X handle without @","example":"elonmusk"},{"name":"limit","in":"query","required":false,"type":"number","description":"Page size (1-40, default 20)","example":20},{"name":"cursor","in":"query","required":false,"type":"string","description":"Opaque pagination cursor. Pass next_cursor (or cursor) from the previous response unchanged."},{"name":"include_replies","in":"query","required":false,"type":"boolean","description":"Include reply tweets (default false on /user/tweets, true elsewhere)","example":"0"},{"name":"include_retweets","in":"query","required":false,"type":"boolean","description":"Include retweets (default true)","example":"1"},{"name":"media_only","in":"query","required":false,"type":"boolean","description":"Only tweets that have media[] (default false)","example":"1"},{"name":"since_id","in":"query","required":false,"type":"string","description":"Keep tweets with id strictly greater than this snowflake (page filter; keep paging with cursor)"},{"name":"until_id","in":"query","required":false,"type":"string","description":"Keep tweets with id strictly less than this snowflake (exclusive)"}],"body":null},{"id":"search_tweets","method":"GET","path":"/v1/search/tweets","summary":"Search tweets","auth":"api_key","params":[{"name":"query","in":"query","required":true,"type":"string","description":"Search query (alias: q). Supports X operators.","example":"solana"},{"name":"product","in":"query","required":false,"type":"string","description":"Latest or Top (default Latest)","example":"Latest"},{"name":"limit","in":"query","required":false,"type":"number","description":"Page size (1-40, default 20)","example":5},{"name":"cursor","in":"query","required":false,"type":"string","description":"Opaque pagination cursor. Pass next_cursor (or cursor) from the previous response unchanged."},{"name":"include_replies","in":"query","required":false,"type":"boolean","description":"Include reply tweets (default false on /user/tweets, true elsewhere)","example":"0"},{"name":"include_retweets","in":"query","required":false,"type":"boolean","description":"Include retweets (default true)","example":"1"},{"name":"media_only","in":"query","required":false,"type":"boolean","description":"Only tweets that have media[] (default false)","example":"1"},{"name":"since_id","in":"query","required":false,"type":"string","description":"Keep tweets with id strictly greater than this snowflake (page filter; keep paging with cursor)"},{"name":"until_id","in":"query","required":false,"type":"string","description":"Keep tweets with id strictly less than this snowflake (exclusive)"}],"body":null},{"id":"search_users","method":"GET","path":"/v1/search/users","summary":"Search users","auth":"api_key","params":[{"name":"query","in":"query","required":true,"type":"string","description":"Search query (alias: q)","example":"solana"},{"name":"limit","in":"query","required":false,"type":"number","description":"Page size (1-40, default 20)","example":20},{"name":"cursor","in":"query","required":false,"type":"string","description":"Opaque pagination cursor. Pass next_cursor (or cursor) from the previous response unchanged."}],"body":null},{"id":"user_likes","method":"GET","path":"/v1/user/likes","summary":"Get tweets a user liked","auth":"api_key","params":[{"name":"userName","in":"query","required":true,"type":"string","description":"X handle without @ (alias: username)","example":"jack"},{"name":"limit","in":"query","required":false,"type":"number","description":"Page size (1-40, default 20)","example":20},{"name":"cursor","in":"query","required":false,"type":"string","description":"Opaque pagination cursor. Pass next_cursor (or cursor) from the previous response unchanged."},{"name":"include_replies","in":"query","required":false,"type":"boolean","description":"Include reply tweets (default false on /user/tweets, true elsewhere)","example":"0"},{"name":"include_retweets","in":"query","required":false,"type":"boolean","description":"Include retweets (default true)","example":"1"},{"name":"media_only","in":"query","required":false,"type":"boolean","description":"Only tweets that have media[] (default false)","example":"1"},{"name":"since_id","in":"query","required":false,"type":"string","description":"Keep tweets with id strictly greater than this snowflake (page filter; keep paging with cursor)"},{"name":"until_id","in":"query","required":false,"type":"string","description":"Keep tweets with id strictly less than this snowflake (exclusive)"}],"body":null},{"id":"user_media","method":"GET","path":"/v1/user/media","summary":"Get media tweets for a user","auth":"api_key","params":[{"name":"userName","in":"query","required":true,"type":"string","description":"X handle without @ (alias: username)","example":"nasa"},{"name":"limit","in":"query","required":false,"type":"number","description":"Page size (1-40, default 20)","example":20},{"name":"cursor","in":"query","required":false,"type":"string","description":"Opaque pagination cursor. Pass next_cursor (or cursor) from the previous response unchanged."},{"name":"include_replies","in":"query","required":false,"type":"boolean","description":"Include reply tweets (default false on /user/tweets, true elsewhere)","example":"0"},{"name":"include_retweets","in":"query","required":false,"type":"boolean","description":"Include retweets (default true)","example":"1"},{"name":"media_only","in":"query","required":false,"type":"boolean","description":"Only tweets that have media[] (default false)","example":"1"},{"name":"since_id","in":"query","required":false,"type":"string","description":"Keep tweets with id strictly greater than this snowflake (page filter; keep paging with cursor)"},{"name":"until_id","in":"query","required":false,"type":"string","description":"Keep tweets with id strictly less than this snowflake (exclusive)"}],"body":null},{"id":"list_tweets","method":"GET","path":"/v1/list/{id}/tweets","summary":"Get tweets from an X list","auth":"api_key","params":[{"name":"id","in":"path","required":true,"type":"string","description":"Numeric list id","example":"1539453138322673664"},{"name":"limit","in":"query","required":false,"type":"number","description":"Page size (1-40, default 20)","example":20},{"name":"cursor","in":"query","required":false,"type":"string","description":"Opaque pagination cursor. Pass next_cursor (or cursor) from the previous response unchanged."},{"name":"include_replies","in":"query","required":false,"type":"boolean","description":"Include reply tweets (default false on /user/tweets, true elsewhere)","example":"0"},{"name":"include_retweets","in":"query","required":false,"type":"boolean","description":"Include retweets (default true)","example":"1"},{"name":"media_only","in":"query","required":false,"type":"boolean","description":"Only tweets that have media[] (default false)","example":"1"},{"name":"since_id","in":"query","required":false,"type":"string","description":"Keep tweets with id strictly greater than this snowflake (page filter; keep paging with cursor)"},{"name":"until_id","in":"query","required":false,"type":"string","description":"Keep tweets with id strictly less than this snowflake (exclusive)"}],"body":null},{"id":"community_tweets","method":"GET","path":"/v1/community/{id}/tweets","summary":"Get tweets from an X community","auth":"api_key","params":[{"name":"id","in":"path","required":true,"type":"string","description":"Numeric community id","example":"1489422448332197888"},{"name":"ranking","in":"query","required":false,"type":"string","description":"Relevance (default) or Recency (alias: rankingMode)","example":"Relevance"},{"name":"limit","in":"query","required":false,"type":"number","description":"Page size (1-40, default 20)","example":20},{"name":"cursor","in":"query","required":false,"type":"string","description":"Opaque pagination cursor. Pass next_cursor (or cursor) from the previous response unchanged."},{"name":"include_replies","in":"query","required":false,"type":"boolean","description":"Include reply tweets (default false on /user/tweets, true elsewhere)","example":"0"},{"name":"include_retweets","in":"query","required":false,"type":"boolean","description":"Include retweets (default true)","example":"1"},{"name":"media_only","in":"query","required":false,"type":"boolean","description":"Only tweets that have media[] (default false)","example":"1"},{"name":"since_id","in":"query","required":false,"type":"string","description":"Keep tweets with id strictly greater than this snowflake (page filter; keep paging with cursor)"},{"name":"until_id","in":"query","required":false,"type":"string","description":"Keep tweets with id strictly less than this snowflake (exclusive)"}],"body":null},{"id":"tweet_by_id","method":"GET","path":"/v1/tweet/{id}","summary":"Get a tweet by id","auth":"api_key","params":[{"name":"id","in":"path","required":true,"type":"string","description":"Numeric tweet/status id","example":"20"}],"body":null},{"id":"tweet_by_url","method":"GET","path":"/v1/tweet/by-url","summary":"Get a tweet by X/Twitter URL","auth":"api_key","params":[{"name":"url","in":"query","required":true,"type":"string","description":"Status URL (alias: u)","example":"https://x.com/jack/status/20"}],"body":null},{"id":"tweet_replies","method":"GET","path":"/v1/tweet/{id}/replies","summary":"Get replies to a tweet","auth":"api_key","params":[{"name":"id","in":"path","required":true,"type":"string","description":"Numeric tweet/status id","example":"20"},{"name":"limit","in":"query","required":false,"type":"number","description":"Page size (1-40, default 20)","example":20},{"name":"cursor","in":"query","required":false,"type":"string","description":"Opaque pagination cursor. Pass next_cursor (or cursor) from the previous response unchanged."}],"body":null},{"id":"tweet_retweeters","method":"GET","path":"/v1/tweet/{id}/retweeters","summary":"List users who retweeted a tweet","auth":"api_key","params":[{"name":"id","in":"path","required":true,"type":"string","description":"Numeric tweet/status id","example":"20"},{"name":"limit","in":"query","required":false,"type":"number","description":"Page size (1-40, default 20)","example":20},{"name":"cursor","in":"query","required":false,"type":"string","description":"Opaque pagination cursor. Pass next_cursor (or cursor) from the previous response unchanged."}],"body":null},{"id":"tweets_batch","method":"POST","path":"/v1/tweets","summary":"Batch fetch tweets by id","auth":"api_key","params":[],"body":{"contentType":"application/json","fields":[{"name":"ids","in":"body","required":true,"type":"string","description":"Array of tweet ids or status URLs (alias: tweetIds), max 25","example":"20"}],"example":{"ids":["20","https://x.com/jack/status/20"]}}},{"id":"users_batch","method":"POST","path":"/v1/users","summary":"Batch fetch user profiles","auth":"api_key","params":[],"body":{"contentType":"application/json","fields":[{"name":"userNames","in":"body","required":true,"type":"string","description":"Array of handles without @ (alias: usernames), max 25","example":"jack"}],"example":{"userNames":["jack","elonmusk"]}}},{"id":"user_followers","method":"GET","path":"/v1/user/followers","summary":"List followers for a user","auth":"api_key","params":[{"name":"userName","in":"query","required":true,"type":"string","description":"X handle without @ (alias: username)","example":"elonmusk"},{"name":"limit","in":"query","required":false,"type":"number","description":"Page size (1-40, default 20)","example":20},{"name":"cursor","in":"query","required":false,"type":"string","description":"Opaque pagination cursor. Pass next_cursor (or cursor) from the previous response unchanged."}],"body":null},{"id":"user_following","method":"GET","path":"/v1/user/following","summary":"List accounts a user follows","auth":"api_key","params":[{"name":"userName","in":"query","required":true,"type":"string","description":"X handle without @ (alias: username)","example":"elonmusk"},{"name":"limit","in":"query","required":false,"type":"number","description":"Page size (1-40, default 20)","example":20},{"name":"cursor","in":"query","required":false,"type":"string","description":"Opaque pagination cursor. Pass next_cursor (or cursor) from the previous response unchanged."}],"body":null},{"id":"admin_seed_plans","method":"POST","path":"/v1/admin/seed-plans","summary":"Seed plan tiers","auth":"admin","params":[],"body":null},{"id":"admin_create_key","method":"POST","path":"/v1/admin/keys","summary":"Create an API key","auth":"admin","params":[],"body":{"contentType":"application/json","fields":[{"name":"name","in":"body","required":false,"type":"string","description":"Key label","example":"owner"},{"name":"planName","in":"body","required":false,"type":"string","description":"starter | pro | unlimited","example":"unlimited"}],"example":{"name":"owner","planName":"unlimited"}}},{"id":"admin_list_keys","method":"GET","path":"/v1/admin/keys","summary":"List API keys","auth":"admin","params":[],"body":null},{"id":"admin_add_session","method":"POST","path":"/v1/admin/sessions","summary":"Add connection","auth":"admin","params":[],"body":{"contentType":"application/json","fields":[{"name":"label","in":"body","required":false,"type":"string","description":"Human label"},{"name":"authToken","in":"body","required":true,"type":"string","description":"Primary token"},{"name":"ct0","in":"body","required":true,"type":"string","description":"Secondary token"},{"name":"maxRpm","in":"body","required":false,"type":"number","description":"Per-connection requests per minute (default 25)"}]}},{"id":"admin_list_sessions","method":"GET","path":"/v1/admin/sessions","summary":"List connection health","auth":"admin","params":[],"body":null},{"id":"admin_patch_session","method":"PATCH","path":"/v1/admin/sessions/{id}","summary":"Update connection status","auth":"admin","params":[{"name":"id","in":"path","required":true,"type":"string","description":"Connection id"}],"body":{"contentType":"application/json","fields":[{"name":"status","in":"body","required":true,"type":"string","description":"healthy | cooling | dead | disabled"}]}},{"id":"admin_rotate_session","method":"PUT","path":"/v1/admin/sessions/{id}","summary":"Rotate connection","auth":"admin","params":[{"name":"id","in":"path","required":true,"type":"string","description":"Connection id"}],"body":{"contentType":"application/json","fields":[{"name":"authToken","in":"body","required":true,"type":"string","description":"New primary token"},{"name":"ct0","in":"body","required":true,"type":"string","description":"New secondary token"}]}},{"id":"admin_refresh_query_ids","method":"POST","path":"/v1/admin/query-ids/refresh","summary":"Refresh operation IDs","auth":"admin","params":[],"body":null}]}