Skip to main content
Every twitterapiio.api.* operation is listed below with parameter shapes and return types from the plugin Zod schemas.
New to Corsair? See API access, authentication, and error handling.

Api

webhooks.addRule

api.webhooks.addRule Create a new tweet filter rule for the webhook stream (inactive by default — call updateRule to activate) Risk: write
await corsair.twitterapiio.api.api.webhooks.addRule({});
Input
NameTypeRequiredDescription
tagstringYesCustom label to identify this rule
valuestringYesFilter expression (e.g. “from:elonmusk OR from:kaitoeasyapi”). Rules are inactive until updated with isActive: true.
intervalSecondsnumberYesHow often to check for new tweets matching this rule (seconds, 100–86400)
Output
NameTypeRequiredDescription
rule_idstringNo
statusstringNo
msgstringNo

webhooks.deleteRule

api.webhooks.deleteRule Permanently delete a tweet filter rule Risk: destructive · Irreversible
await corsair.twitterapiio.api.api.webhooks.deleteRule({});
Input
NameTypeRequiredDescription
ruleIdstringYesID of the rule to delete
Output
NameTypeRequiredDescription
statusstringNo
msgstringNo

webhooks.getRules

api.webhooks.getRules List all existing tweet filter rules Risk: read
await corsair.twitterapiio.api.api.webhooks.getRules({});
Input: empty object Output
NameTypeRequiredDescription
rulesobject[]No
statusstringNo
msgstringNo
{
  rule_id: string,
  tag: string,
  value: string,
  interval_seconds: number
}[]

webhooks.updateRule

api.webhooks.updateRule Update a tweet filter rule, including activating or deactivating it Risk: write
await corsair.twitterapiio.api.api.webhooks.updateRule({});
Input
NameTypeRequiredDescription
ruleIdstringYesID of the rule to update
tagstringYesCustom label
valuestringYesFilter expression
intervalSecondsnumberYesCheck interval in seconds (100–86400)
isActivebooleanYestrue to activate the rule, false to deactivate
Output
NameTypeRequiredDescription
rule_idstringNo
statusstringNo
msgstringNo

Communities

create

communities.create Create a new Twitter community Risk: write
await corsair.twitterapiio.api.communities.create({});
Input
NameTypeRequiredDescription
namestringYes
descriptionstringNo
loginCookiestringYesTwitter login cookie from user_login_v2
Output
NameTypeRequiredDescription
statusbooleanNo
messagestringNo

delete

communities.delete Delete a Twitter community Risk: destructive · Irreversible
await corsair.twitterapiio.api.communities.delete({});
Input
NameTypeRequiredDescription
communityIdstringYes
loginCookiestringYesTwitter login cookie from user_login_v2
Output
NameTypeRequiredDescription
statusbooleanNo
messagestringNo

getById

communities.getById Get community info by ID Risk: read
await corsair.twitterapiio.api.communities.getById({});
Input
NameTypeRequiredDescription
communityIdstringYes
Output
NameTypeRequiredDescription
statusbooleanNo
dataobjectNo
{
  id: string,
  name: string,
  description?: string | null,
  memberCount?: number,
  role?: string,
  createdAt?: string,
  isNsfw?: boolean,
  adminResults?: any[],
  moderatorResults?: any[],
  rules?: any[],
  primaryTopic?: any
}

getMembers

communities.getMembers Get members of a community Risk: read
await corsair.twitterapiio.api.communities.getMembers({});
Input
NameTypeRequiredDescription
communityIdstringYes
cursorstringNo
Output
NameTypeRequiredDescription
statusbooleanNo
membersobject[]No
next_cursorstringNo
has_next_pagebooleanNo
{
  id: string,
  userName: string,
  name: string,
  followerCount?: number,
  followingCount?: number,
  profilePicture?: string | null,
  coverPicture?: string | null,
  description?: string | null,
  location?: string | null,
  isBlueVerified?: boolean,
  isGovernmentVerified?: boolean,
  favouritesCount?: number,
  statusesCount?: number,
  mediaCount?: number,
  createdAt?: string,
  isProtected?: boolean,
  isSuspended?: boolean,
  isUnavailable?: boolean,
  pinnedTweetIds?: string[],
  website?: string | null
}[]

getModerators

communities.getModerators Get moderators of a community Risk: read
await corsair.twitterapiio.api.communities.getModerators({});
Input
NameTypeRequiredDescription
communityIdstringYes
cursorstringNo
Output
NameTypeRequiredDescription
statusbooleanNo
membersobject[]No
next_cursorstringNo
has_next_pagebooleanNo
{
  id: string,
  userName: string,
  name: string,
  followerCount?: number,
  followingCount?: number,
  profilePicture?: string | null,
  coverPicture?: string | null,
  description?: string | null,
  location?: string | null,
  isBlueVerified?: boolean,
  isGovernmentVerified?: boolean,
  favouritesCount?: number,
  statusesCount?: number,
  mediaCount?: number,
  createdAt?: string,
  isProtected?: boolean,
  isSuspended?: boolean,
  isUnavailable?: boolean,
  pinnedTweetIds?: string[],
  website?: string | null
}[]

getTweets

communities.getTweets Get tweets posted in a community Risk: read
await corsair.twitterapiio.api.communities.getTweets({});
Input
NameTypeRequiredDescription
communityIdstringYes
cursorstringNo
Output
NameTypeRequiredDescription
statusbooleanNo
tweetsobject[]No
next_cursorstringNo
has_next_pagebooleanNo
{
  id: string,
  text: string,
  author?: {
    id: string,
    userName: string,
    name: string,
    followerCount?: number,
    followingCount?: number,
    profilePicture?: string | null,
    coverPicture?: string | null,
    description?: string | null,
    location?: string | null,
    isBlueVerified?: boolean,
    isGovernmentVerified?: boolean,
    favouritesCount?: number,
    statusesCount?: number,
    mediaCount?: number,
    createdAt?: string,
    isProtected?: boolean,
    isSuspended?: boolean,
    isUnavailable?: boolean,
    pinnedTweetIds?: string[],
    website?: string | null
  },
  createdAt?: string,
  likeCount?: number,
  retweetCount?: number,
  replyCount?: number,
  quoteCount?: number,
  viewCount?: number | null,
  bookmarkCount?: number,
  lang?: string,
  source?: string,
  isRetweet?: boolean,
  isQuote?: boolean,
  isPinned?: boolean,
  inReplyToStatusId?: string | null,
  inReplyToUserId?: string | null,
  quotedTweetId?: string | null,
  media?: {
    type?: string,
    url?: string,
    mediaUrlHttps?: string,
    expandedUrl?: string,
    width?: number,
    height?: number,
    altText?: string | null,
    durationMs?: number | null
  }[],
  entities?: {
    urls?: {
      url?: string,
      expandedUrl?: string,
      displayUrl?: string
    }[],
    hashtags?: {
      text?: string
    }[],
    userMentions?: {
      id?: string,
      name?: string,
      screenName?: string
    }[]
  },
  conversationId?: string
}[]

join

communities.join Join a Twitter community Risk: write
await corsair.twitterapiio.api.communities.join({});
Input
NameTypeRequiredDescription
communityIdstringYes
loginCookiestringYesTwitter login cookie from user_login_v2
Output
NameTypeRequiredDescription
statusbooleanNo
messagestringNo

leave

communities.leave Leave a Twitter community Risk: write
await corsair.twitterapiio.api.communities.leave({});
Input
NameTypeRequiredDescription
communityIdstringYes
loginCookiestringYesTwitter login cookie from user_login_v2
Output
NameTypeRequiredDescription
statusbooleanNo
messagestringNo

searchTweets

communities.searchTweets Search tweets across all communities Risk: read
await corsair.twitterapiio.api.communities.searchTweets({});
Input
NameTypeRequiredDescription
querystringYes
cursorstringNo
Output
NameTypeRequiredDescription
statusbooleanNo
tweetsobject[]No
next_cursorstringNo
has_next_pagebooleanNo
{
  id: string,
  text: string,
  author?: {
    id: string,
    userName: string,
    name: string,
    followerCount?: number,
    followingCount?: number,
    profilePicture?: string | null,
    coverPicture?: string | null,
    description?: string | null,
    location?: string | null,
    isBlueVerified?: boolean,
    isGovernmentVerified?: boolean,
    favouritesCount?: number,
    statusesCount?: number,
    mediaCount?: number,
    createdAt?: string,
    isProtected?: boolean,
    isSuspended?: boolean,
    isUnavailable?: boolean,
    pinnedTweetIds?: string[],
    website?: string | null
  },
  createdAt?: string,
  likeCount?: number,
  retweetCount?: number,
  replyCount?: number,
  quoteCount?: number,
  viewCount?: number | null,
  bookmarkCount?: number,
  lang?: string,
  source?: string,
  isRetweet?: boolean,
  isQuote?: boolean,
  isPinned?: boolean,
  inReplyToStatusId?: string | null,
  inReplyToUserId?: string | null,
  quotedTweetId?: string | null,
  media?: {
    type?: string,
    url?: string,
    mediaUrlHttps?: string,
    expandedUrl?: string,
    width?: number,
    height?: number,
    altText?: string | null,
    durationMs?: number | null
  }[],
  entities?: {
    urls?: {
      url?: string,
      expandedUrl?: string,
      displayUrl?: string
    }[],
    hashtags?: {
      text?: string
    }[],
    userMentions?: {
      id?: string,
      name?: string,
      screenName?: string
    }[]
  },
  conversationId?: string
}[]

Lists

getFollowers

lists.getFollowers Get followers of a Twitter list Risk: read
await corsair.twitterapiio.api.lists.getFollowers({});
Input
NameTypeRequiredDescription
listIdstringYes
cursorstringNo
Output
NameTypeRequiredDescription
statusbooleanNo
usersobject[]No
next_cursorstringNo
has_next_pagebooleanNo
{
  id: string,
  userName: string,
  name: string,
  followerCount?: number,
  followingCount?: number,
  profilePicture?: string | null,
  coverPicture?: string | null,
  description?: string | null,
  location?: string | null,
  isBlueVerified?: boolean,
  isGovernmentVerified?: boolean,
  favouritesCount?: number,
  statusesCount?: number,
  mediaCount?: number,
  createdAt?: string,
  isProtected?: boolean,
  isSuspended?: boolean,
  isUnavailable?: boolean,
  pinnedTweetIds?: string[],
  website?: string | null
}[]

getMembers

lists.getMembers Get members of a Twitter list Risk: read
await corsair.twitterapiio.api.lists.getMembers({});
Input
NameTypeRequiredDescription
listIdstringYes
cursorstringNo
Output
NameTypeRequiredDescription
statusbooleanNo
usersobject[]No
next_cursorstringNo
has_next_pagebooleanNo
{
  id: string,
  userName: string,
  name: string,
  followerCount?: number,
  followingCount?: number,
  profilePicture?: string | null,
  coverPicture?: string | null,
  description?: string | null,
  location?: string | null,
  isBlueVerified?: boolean,
  isGovernmentVerified?: boolean,
  favouritesCount?: number,
  statusesCount?: number,
  mediaCount?: number,
  createdAt?: string,
  isProtected?: boolean,
  isSuspended?: boolean,
  isUnavailable?: boolean,
  pinnedTweetIds?: string[],
  website?: string | null
}[]

getTweets

lists.getTweets Get tweets from a Twitter list timeline Risk: read
await corsair.twitterapiio.api.lists.getTweets({});
Input
NameTypeRequiredDescription
listIdstringYes
cursorstringNo
Output
NameTypeRequiredDescription
statusbooleanNo
tweetsobject[]No
next_cursorstringNo
has_next_pagebooleanNo
{
  id: string,
  text: string,
  author?: {
    id: string,
    userName: string,
    name: string,
    followerCount?: number,
    followingCount?: number,
    profilePicture?: string | null,
    coverPicture?: string | null,
    description?: string | null,
    location?: string | null,
    isBlueVerified?: boolean,
    isGovernmentVerified?: boolean,
    favouritesCount?: number,
    statusesCount?: number,
    mediaCount?: number,
    createdAt?: string,
    isProtected?: boolean,
    isSuspended?: boolean,
    isUnavailable?: boolean,
    pinnedTweetIds?: string[],
    website?: string | null
  },
  createdAt?: string,
  likeCount?: number,
  retweetCount?: number,
  replyCount?: number,
  quoteCount?: number,
  viewCount?: number | null,
  bookmarkCount?: number,
  lang?: string,
  source?: string,
  isRetweet?: boolean,
  isQuote?: boolean,
  isPinned?: boolean,
  inReplyToStatusId?: string | null,
  inReplyToUserId?: string | null,
  quotedTweetId?: string | null,
  media?: {
    type?: string,
    url?: string,
    mediaUrlHttps?: string,
    expandedUrl?: string,
    width?: number,
    height?: number,
    altText?: string | null,
    durationMs?: number | null
  }[],
  entities?: {
    urls?: {
      url?: string,
      expandedUrl?: string,
      displayUrl?: string
    }[],
    hashtags?: {
      text?: string
    }[],
    userMentions?: {
      id?: string,
      name?: string,
      screenName?: string
    }[]
  },
  conversationId?: string
}[]

Replies

get

replies.get Get replies to a tweet, paginated by time range — stored independently in the replies table so engagement changes are tracked per reply Risk: read
await corsair.twitterapiio.api.replies.get({});
Input
NameTypeRequiredDescription
tweetIdstringYes
sinceTimestringNoUnix timestamp in seconds
untilTimestringNoUnix timestamp in seconds
cursorstringNo
Output
NameTypeRequiredDescription
statusstringNo
repliesobject[]No
next_cursorstringNo
has_next_pagebooleanNo
messagestringNo
{
  id: string,
  text: string,
  author?: {
    id: string,
    userName: string,
    name: string,
    followerCount?: number,
    followingCount?: number,
    profilePicture?: string | null,
    coverPicture?: string | null,
    description?: string | null,
    location?: string | null,
    isBlueVerified?: boolean,
    isGovernmentVerified?: boolean,
    favouritesCount?: number,
    statusesCount?: number,
    mediaCount?: number,
    createdAt?: string,
    isProtected?: boolean,
    isSuspended?: boolean,
    isUnavailable?: boolean,
    pinnedTweetIds?: string[],
    website?: string | null
  },
  createdAt?: string,
  likeCount?: number,
  retweetCount?: number,
  replyCount?: number,
  quoteCount?: number,
  viewCount?: number | null,
  bookmarkCount?: number,
  lang?: string,
  source?: string,
  isRetweet?: boolean,
  isQuote?: boolean,
  isPinned?: boolean,
  inReplyToStatusId?: string | null,
  inReplyToUserId?: string | null,
  quotedTweetId?: string | null,
  media?: {
    type?: string,
    url?: string,
    mediaUrlHttps?: string,
    expandedUrl?: string,
    width?: number,
    height?: number,
    altText?: string | null,
    durationMs?: number | null
  }[],
  entities?: {
    urls?: {
      url?: string,
      expandedUrl?: string,
      displayUrl?: string
    }[],
    hashtags?: {
      text?: string
    }[],
    userMentions?: {
      id?: string,
      name?: string,
      screenName?: string
    }[]
  },
  conversationId?: string,
  url?: string,
  inReplyToUsername?: string | null,
  isLimitedReply?: boolean
}[]

getV2

replies.getV2 Get replies to a tweet (v2) with sort order control (Relevance, Latest, Likes) — stored independently in the replies table so engagement changes are tracked per reply Risk: read
await corsair.twitterapiio.api.replies.getV2({});
Input
NameTypeRequiredDescription
tweetIdstringYes
queryTypeRelevance | Latest | LikesNoSort order for replies. Default is Relevance.
cursorstringNo
Output
NameTypeRequiredDescription
statusstringNo
repliesobject[]No
next_cursorstringNo
has_next_pagebooleanNo
messagestringNo
{
  id: string,
  text: string,
  author?: {
    id: string,
    userName: string,
    name: string,
    followerCount?: number,
    followingCount?: number,
    profilePicture?: string | null,
    coverPicture?: string | null,
    description?: string | null,
    location?: string | null,
    isBlueVerified?: boolean,
    isGovernmentVerified?: boolean,
    favouritesCount?: number,
    statusesCount?: number,
    mediaCount?: number,
    createdAt?: string,
    isProtected?: boolean,
    isSuspended?: boolean,
    isUnavailable?: boolean,
    pinnedTweetIds?: string[],
    website?: string | null
  },
  createdAt?: string,
  likeCount?: number,
  retweetCount?: number,
  replyCount?: number,
  quoteCount?: number,
  viewCount?: number | null,
  bookmarkCount?: number,
  lang?: string,
  source?: string,
  isRetweet?: boolean,
  isQuote?: boolean,
  isPinned?: boolean,
  inReplyToStatusId?: string | null,
  inReplyToUserId?: string | null,
  quotedTweetId?: string | null,
  media?: {
    type?: string,
    url?: string,
    mediaUrlHttps?: string,
    expandedUrl?: string,
    width?: number,
    height?: number,
    altText?: string | null,
    durationMs?: number | null
  }[],
  entities?: {
    urls?: {
      url?: string,
      expandedUrl?: string,
      displayUrl?: string
    }[],
    hashtags?: {
      text?: string
    }[],
    userMentions?: {
      id?: string,
      name?: string,
      screenName?: string
    }[]
  },
  conversationId?: string,
  url?: string,
  inReplyToUsername?: string | null,
  isLimitedReply?: boolean
}[]

Stream

addUser

stream.addUser Add a Twitter user to the real-time tweet monitor stream Risk: write
await corsair.twitterapiio.api.stream.addUser({});
Input
NameTypeRequiredDescription
userNamestringYesTwitter/X handle to add to the real-time monitor stream
Output
NameTypeRequiredDescription
statussuccess | errorNo
msgstringNo

listUsers

stream.listUsers List all Twitter users currently in the monitor stream Risk: read
await corsair.twitterapiio.api.stream.listUsers({});
Input: empty object Output
NameTypeRequiredDescription
usersstring[]NoMonitored Twitter usernames
statusstringNo
msgstringNo

removeUser

stream.removeUser Remove a Twitter user from the real-time tweet monitor stream Risk: write
await corsair.twitterapiio.api.stream.removeUser({});
Input
NameTypeRequiredDescription
userNamestringYesTwitter/X handle to remove from the monitor stream
Output
NameTypeRequiredDescription
statussuccess | errorNo
msgstringNo

get

trends.get Get trending topics by location (woeid) Risk: read
await corsair.twitterapiio.api.trends.get({});
Input
NameTypeRequiredDescription
woeidnumberNoWhere On Earth ID. 1 = worldwide
Output
NameTypeRequiredDescription
statusbooleanNo
trendsobject[]No

Tweets

advancedSearch

tweets.advancedSearch Search tweets using structured operators (keywords, users, dates, engagement thresholds, media filters, etc.) Risk: read
await corsair.twitterapiio.api.tweets.advancedSearch({});
Input
NameTypeRequiredDescription
keywordsstring[]NoWords that must all appear in tweets (AND logic)
exactPhrasestringNoExact phrase that must appear in tweets
anyOfstring[]NoAt least one of these words must appear (OR logic, minimum 2 items)
excludeKeywordsstring[]NoWords that must not appear in tweets
hashtagsstring[]NoHashtags to search for (with or without leading #)
fromUsersstring[]NoOnly tweets from these usernames
toUsersstring[]NoOnly replies to these usernames
mentioningUsersstring[]NoOnly tweets mentioning these usernames
languageam | ar | bg | bn | bo | ca | cs | cy | da | de | dv | el | en | es | et | eu | fa | fi | fr | ga | gl | gu | he | hi | hr | hy | id | is | it | ja | ka | km | kn | ko | lo | lt | lv | ml | mr | my | ne | nl | no | or | pa | pl | ps | pt | ro | ru | si | sk | sl | sq | sr | sv | sw | ta | te | th | tl | tr | ug | uk | ur | vi | zhNoISO 639-1 language code (e.g. “en”, “fr”, “ja”)
sincestringNoOnly tweets posted on or after this date (YYYY-MM-DD)
untilstringNoOnly tweets posted before this date (YYYY-MM-DD)
sinceTimenumberNoOnly tweets posted on or after this Unix timestamp (seconds)
untilTimenumberNoOnly tweets posted before this Unix timestamp (seconds)
repliesonly | excludeNo”only” to return only replies; “exclude” to omit replies
retweetsonly | excludeNo”only” to return only retweets; “exclude” to omit retweets
onlyLinksbooleanNoOnly tweets containing links
onlyMediabooleanNoOnly tweets with media
onlyImagesbooleanNoOnly tweets with images
onlyVideosbooleanNoOnly tweets with native video
minRepliesnumberNoMinimum number of replies
minLikesnumberNoMinimum number of likes
minRetweetsnumberNoMinimum number of retweets
queryTypeLatest | TopNoResult ordering — “Latest” (default) or “Top”
cursorstringNo
Output
NameTypeRequiredDescription
statusbooleanNo
tweetsobject[]No
next_cursorstringNo
has_next_pagebooleanNo
{
  id: string,
  text: string,
  author?: {
    id: string,
    userName: string,
    name: string,
    followerCount?: number,
    followingCount?: number,
    profilePicture?: string | null,
    coverPicture?: string | null,
    description?: string | null,
    location?: string | null,
    isBlueVerified?: boolean,
    isGovernmentVerified?: boolean,
    favouritesCount?: number,
    statusesCount?: number,
    mediaCount?: number,
    createdAt?: string,
    isProtected?: boolean,
    isSuspended?: boolean,
    isUnavailable?: boolean,
    pinnedTweetIds?: string[],
    website?: string | null
  },
  createdAt?: string,
  likeCount?: number,
  retweetCount?: number,
  replyCount?: number,
  quoteCount?: number,
  viewCount?: number | null,
  bookmarkCount?: number,
  lang?: string,
  source?: string,
  isRetweet?: boolean,
  isQuote?: boolean,
  isPinned?: boolean,
  inReplyToStatusId?: string | null,
  inReplyToUserId?: string | null,
  quotedTweetId?: string | null,
  media?: {
    type?: string,
    url?: string,
    mediaUrlHttps?: string,
    expandedUrl?: string,
    width?: number,
    height?: number,
    altText?: string | null,
    durationMs?: number | null
  }[],
  entities?: {
    urls?: {
      url?: string,
      expandedUrl?: string,
      displayUrl?: string
    }[],
    hashtags?: {
      text?: string
    }[],
    userMentions?: {
      id?: string,
      name?: string,
      screenName?: string
    }[]
  },
  conversationId?: string
}[]

create

tweets.create Post a new tweet or reply Risk: write
await corsair.twitterapiio.api.tweets.create({});
Input
NameTypeRequiredDescription
tweetstringYesTweet text content
loginCookiestringYesTwitter login cookie from user_login_v2
replyToTweetIdstringNoTweet ID to reply to
mediaIdsstring[]NoMedia IDs to attach
Output
NameTypeRequiredDescription
statusbooleanNo
messagestringNo

delete

tweets.delete Delete a tweet Risk: destructive · Irreversible
await corsair.twitterapiio.api.tweets.delete({});
Input
NameTypeRequiredDescription
tweetIdstringYes
loginCookiestringYesTwitter login cookie from user_login_v2
Output
NameTypeRequiredDescription
statusbooleanNo
messagestringNo

getByIds

tweets.getByIds Fetch tweets by their IDs Risk: read
await corsair.twitterapiio.api.tweets.getByIds({});
Input
NameTypeRequiredDescription
tweetIdsstringYesComma-separated list of tweet IDs
Output
NameTypeRequiredDescription
statusbooleanNo
tweetsobject[]No
{
  id: string,
  text: string,
  author?: {
    id: string,
    userName: string,
    name: string,
    followerCount?: number,
    followingCount?: number,
    profilePicture?: string | null,
    coverPicture?: string | null,
    description?: string | null,
    location?: string | null,
    isBlueVerified?: boolean,
    isGovernmentVerified?: boolean,
    favouritesCount?: number,
    statusesCount?: number,
    mediaCount?: number,
    createdAt?: string,
    isProtected?: boolean,
    isSuspended?: boolean,
    isUnavailable?: boolean,
    pinnedTweetIds?: string[],
    website?: string | null
  },
  createdAt?: string,
  likeCount?: number,
  retweetCount?: number,
  replyCount?: number,
  quoteCount?: number,
  viewCount?: number | null,
  bookmarkCount?: number,
  lang?: string,
  source?: string,
  isRetweet?: boolean,
  isQuote?: boolean,
  isPinned?: boolean,
  inReplyToStatusId?: string | null,
  inReplyToUserId?: string | null,
  quotedTweetId?: string | null,
  media?: {
    type?: string,
    url?: string,
    mediaUrlHttps?: string,
    expandedUrl?: string,
    width?: number,
    height?: number,
    altText?: string | null,
    durationMs?: number | null
  }[],
  entities?: {
    urls?: {
      url?: string,
      expandedUrl?: string,
      displayUrl?: string
    }[],
    hashtags?: {
      text?: string
    }[],
    userMentions?: {
      id?: string,
      name?: string,
      screenName?: string
    }[]
  },
  conversationId?: string
}[]

getQuotations

tweets.getQuotations Get quote tweets for a tweet Risk: read
await corsair.twitterapiio.api.tweets.getQuotations({});
Input
NameTypeRequiredDescription
tweetIdstringYes
cursorstringNo
Output
NameTypeRequiredDescription
statusbooleanNo
tweetsobject[]No
next_cursorstringNo
has_next_pagebooleanNo
{
  id: string,
  text: string,
  author?: {
    id: string,
    userName: string,
    name: string,
    followerCount?: number,
    followingCount?: number,
    profilePicture?: string | null,
    coverPicture?: string | null,
    description?: string | null,
    location?: string | null,
    isBlueVerified?: boolean,
    isGovernmentVerified?: boolean,
    favouritesCount?: number,
    statusesCount?: number,
    mediaCount?: number,
    createdAt?: string,
    isProtected?: boolean,
    isSuspended?: boolean,
    isUnavailable?: boolean,
    pinnedTweetIds?: string[],
    website?: string | null
  },
  createdAt?: string,
  likeCount?: number,
  retweetCount?: number,
  replyCount?: number,
  quoteCount?: number,
  viewCount?: number | null,
  bookmarkCount?: number,
  lang?: string,
  source?: string,
  isRetweet?: boolean,
  isQuote?: boolean,
  isPinned?: boolean,
  inReplyToStatusId?: string | null,
  inReplyToUserId?: string | null,
  quotedTweetId?: string | null,
  media?: {
    type?: string,
    url?: string,
    mediaUrlHttps?: string,
    expandedUrl?: string,
    width?: number,
    height?: number,
    altText?: string | null,
    durationMs?: number | null
  }[],
  entities?: {
    urls?: {
      url?: string,
      expandedUrl?: string,
      displayUrl?: string
    }[],
    hashtags?: {
      text?: string
    }[],
    userMentions?: {
      id?: string,
      name?: string,
      screenName?: string
    }[]
  },
  conversationId?: string
}[]

getRetweeters

tweets.getRetweeters Get users who retweeted a tweet Risk: read
await corsair.twitterapiio.api.tweets.getRetweeters({});
Input
NameTypeRequiredDescription
tweetIdstringYes
cursorstringNo
Output
NameTypeRequiredDescription
statusbooleanNo
usersobject[]No
next_cursorstringNo
has_next_pagebooleanNo
{
  id: string,
  userName: string,
  name: string,
  followerCount?: number,
  followingCount?: number,
  profilePicture?: string | null,
  coverPicture?: string | null,
  description?: string | null,
  location?: string | null,
  isBlueVerified?: boolean,
  isGovernmentVerified?: boolean,
  favouritesCount?: number,
  statusesCount?: number,
  mediaCount?: number,
  createdAt?: string,
  isProtected?: boolean,
  isSuspended?: boolean,
  isUnavailable?: boolean,
  pinnedTweetIds?: string[],
  website?: string | null
}[]

getThreadContext

tweets.getThreadContext Get the full thread context for a tweet Risk: read
await corsair.twitterapiio.api.tweets.getThreadContext({});
Input
NameTypeRequiredDescription
tweetIdstringYes
cursorstringNo
Output
NameTypeRequiredDescription
statusbooleanNo
tweetsobject[]No
next_cursorstringNo
has_next_pagebooleanNo
{
  id: string,
  text: string,
  author?: {
    id: string,
    userName: string,
    name: string,
    followerCount?: number,
    followingCount?: number,
    profilePicture?: string | null,
    coverPicture?: string | null,
    description?: string | null,
    location?: string | null,
    isBlueVerified?: boolean,
    isGovernmentVerified?: boolean,
    favouritesCount?: number,
    statusesCount?: number,
    mediaCount?: number,
    createdAt?: string,
    isProtected?: boolean,
    isSuspended?: boolean,
    isUnavailable?: boolean,
    pinnedTweetIds?: string[],
    website?: string | null
  },
  createdAt?: string,
  likeCount?: number,
  retweetCount?: number,
  replyCount?: number,
  quoteCount?: number,
  viewCount?: number | null,
  bookmarkCount?: number,
  lang?: string,
  source?: string,
  isRetweet?: boolean,
  isQuote?: boolean,
  isPinned?: boolean,
  inReplyToStatusId?: string | null,
  inReplyToUserId?: string | null,
  quotedTweetId?: string | null,
  media?: {
    type?: string,
    url?: string,
    mediaUrlHttps?: string,
    expandedUrl?: string,
    width?: number,
    height?: number,
    altText?: string | null,
    durationMs?: number | null
  }[],
  entities?: {
    urls?: {
      url?: string,
      expandedUrl?: string,
      displayUrl?: string
    }[],
    hashtags?: {
      text?: string
    }[],
    userMentions?: {
      id?: string,
      name?: string,
      screenName?: string
    }[]
  },
  conversationId?: string
}[]

getUserLastTweets

tweets.getUserLastTweets Retrieve a user’s most recent tweets by username Risk: read
await corsair.twitterapiio.api.tweets.getUserLastTweets({});
Input
NameTypeRequiredDescription
userNamestringYes
cursorstringNo
Output
NameTypeRequiredDescription
statusbooleanNo
tweetsobject[]No
next_cursorstringNo
has_next_pagebooleanNo
{
  id: string,
  text: string,
  author?: {
    id: string,
    userName: string,
    name: string,
    followerCount?: number,
    followingCount?: number,
    profilePicture?: string | null,
    coverPicture?: string | null,
    description?: string | null,
    location?: string | null,
    isBlueVerified?: boolean,
    isGovernmentVerified?: boolean,
    favouritesCount?: number,
    statusesCount?: number,
    mediaCount?: number,
    createdAt?: string,
    isProtected?: boolean,
    isSuspended?: boolean,
    isUnavailable?: boolean,
    pinnedTweetIds?: string[],
    website?: string | null
  },
  createdAt?: string,
  likeCount?: number,
  retweetCount?: number,
  replyCount?: number,
  quoteCount?: number,
  viewCount?: number | null,
  bookmarkCount?: number,
  lang?: string,
  source?: string,
  isRetweet?: boolean,
  isQuote?: boolean,
  isPinned?: boolean,
  inReplyToStatusId?: string | null,
  inReplyToUserId?: string | null,
  quotedTweetId?: string | null,
  media?: {
    type?: string,
    url?: string,
    mediaUrlHttps?: string,
    expandedUrl?: string,
    width?: number,
    height?: number,
    altText?: string | null,
    durationMs?: number | null
  }[],
  entities?: {
    urls?: {
      url?: string,
      expandedUrl?: string,
      displayUrl?: string
    }[],
    hashtags?: {
      text?: string
    }[],
    userMentions?: {
      id?: string,
      name?: string,
      screenName?: string
    }[]
  },
  conversationId?: string
}[]

getUserMentions

tweets.getUserMentions Get tweets that mention a user Risk: read
await corsair.twitterapiio.api.tweets.getUserMentions({});
Input
NameTypeRequiredDescription
userNamestringYes
cursorstringNo
Output
NameTypeRequiredDescription
statusbooleanNo
tweetsobject[]No
next_cursorstringNo
has_next_pagebooleanNo
{
  id: string,
  text: string,
  author?: {
    id: string,
    userName: string,
    name: string,
    followerCount?: number,
    followingCount?: number,
    profilePicture?: string | null,
    coverPicture?: string | null,
    description?: string | null,
    location?: string | null,
    isBlueVerified?: boolean,
    isGovernmentVerified?: boolean,
    favouritesCount?: number,
    statusesCount?: number,
    mediaCount?: number,
    createdAt?: string,
    isProtected?: boolean,
    isSuspended?: boolean,
    isUnavailable?: boolean,
    pinnedTweetIds?: string[],
    website?: string | null
  },
  createdAt?: string,
  likeCount?: number,
  retweetCount?: number,
  replyCount?: number,
  quoteCount?: number,
  viewCount?: number | null,
  bookmarkCount?: number,
  lang?: string,
  source?: string,
  isRetweet?: boolean,
  isQuote?: boolean,
  isPinned?: boolean,
  inReplyToStatusId?: string | null,
  inReplyToUserId?: string | null,
  quotedTweetId?: string | null,
  media?: {
    type?: string,
    url?: string,
    mediaUrlHttps?: string,
    expandedUrl?: string,
    width?: number,
    height?: number,
    altText?: string | null,
    durationMs?: number | null
  }[],
  entities?: {
    urls?: {
      url?: string,
      expandedUrl?: string,
      displayUrl?: string
    }[],
    hashtags?: {
      text?: string
    }[],
    userMentions?: {
      id?: string,
      name?: string,
      screenName?: string
    }[]
  },
  conversationId?: string
}[]

getUserTimeline

tweets.getUserTimeline Retrieve a user’s tweet timeline by user ID Risk: read
await corsair.twitterapiio.api.tweets.getUserTimeline({});
Input
NameTypeRequiredDescription
userIdstringYes
cursorstringNo
Output
NameTypeRequiredDescription
statusbooleanNo
tweetsobject[]No
next_cursorstringNo
has_next_pagebooleanNo
{
  id: string,
  text: string,
  author?: {
    id: string,
    userName: string,
    name: string,
    followerCount?: number,
    followingCount?: number,
    profilePicture?: string | null,
    coverPicture?: string | null,
    description?: string | null,
    location?: string | null,
    isBlueVerified?: boolean,
    isGovernmentVerified?: boolean,
    favouritesCount?: number,
    statusesCount?: number,
    mediaCount?: number,
    createdAt?: string,
    isProtected?: boolean,
    isSuspended?: boolean,
    isUnavailable?: boolean,
    pinnedTweetIds?: string[],
    website?: string | null
  },
  createdAt?: string,
  likeCount?: number,
  retweetCount?: number,
  replyCount?: number,
  quoteCount?: number,
  viewCount?: number | null,
  bookmarkCount?: number,
  lang?: string,
  source?: string,
  isRetweet?: boolean,
  isQuote?: boolean,
  isPinned?: boolean,
  inReplyToStatusId?: string | null,
  inReplyToUserId?: string | null,
  quotedTweetId?: string | null,
  media?: {
    type?: string,
    url?: string,
    mediaUrlHttps?: string,
    expandedUrl?: string,
    width?: number,
    height?: number,
    altText?: string | null,
    durationMs?: number | null
  }[],
  entities?: {
    urls?: {
      url?: string,
      expandedUrl?: string,
      displayUrl?: string
    }[],
    hashtags?: {
      text?: string
    }[],
    userMentions?: {
      id?: string,
      name?: string,
      screenName?: string
    }[]
  },
  conversationId?: string
}[]

like

tweets.like Like a tweet Risk: write
await corsair.twitterapiio.api.tweets.like({});
Input
NameTypeRequiredDescription
tweetIdstringYes
loginCookiestringYesTwitter login cookie from user_login_v2
Output
NameTypeRequiredDescription
statusbooleanNo
messagestringNo

retweet

tweets.retweet Retweet a tweet Risk: write
await corsair.twitterapiio.api.tweets.retweet({});
Input
NameTypeRequiredDescription
tweetIdstringYes
loginCookiestringYesTwitter login cookie from user_login_v2
Output
NameTypeRequiredDescription
statusbooleanNo
messagestringNo

tweets.search Search tweets with a raw query string Risk: read
await corsair.twitterapiio.api.tweets.search({});
Input
NameTypeRequiredDescription
querystringYes
queryTypeTop | Latest | Photos | VideosNoSearch type. Defaults to Top
cursorstringNo
Output
NameTypeRequiredDescription
statusbooleanNo
tweetsobject[]No
next_cursorstringNo
has_next_pagebooleanNo
{
  id: string,
  text: string,
  author?: {
    id: string,
    userName: string,
    name: string,
    followerCount?: number,
    followingCount?: number,
    profilePicture?: string | null,
    coverPicture?: string | null,
    description?: string | null,
    location?: string | null,
    isBlueVerified?: boolean,
    isGovernmentVerified?: boolean,
    favouritesCount?: number,
    statusesCount?: number,
    mediaCount?: number,
    createdAt?: string,
    isProtected?: boolean,
    isSuspended?: boolean,
    isUnavailable?: boolean,
    pinnedTweetIds?: string[],
    website?: string | null
  },
  createdAt?: string,
  likeCount?: number,
  retweetCount?: number,
  replyCount?: number,
  quoteCount?: number,
  viewCount?: number | null,
  bookmarkCount?: number,
  lang?: string,
  source?: string,
  isRetweet?: boolean,
  isQuote?: boolean,
  isPinned?: boolean,
  inReplyToStatusId?: string | null,
  inReplyToUserId?: string | null,
  quotedTweetId?: string | null,
  media?: {
    type?: string,
    url?: string,
    mediaUrlHttps?: string,
    expandedUrl?: string,
    width?: number,
    height?: number,
    altText?: string | null,
    durationMs?: number | null
  }[],
  entities?: {
    urls?: {
      url?: string,
      expandedUrl?: string,
      displayUrl?: string
    }[],
    hashtags?: {
      text?: string
    }[],
    userMentions?: {
      id?: string,
      name?: string,
      screenName?: string
    }[]
  },
  conversationId?: string
}[]

unlike

tweets.unlike Remove a like from a tweet Risk: write
await corsair.twitterapiio.api.tweets.unlike({});
Input
NameTypeRequiredDescription
tweetIdstringYes
loginCookiestringYesTwitter login cookie from user_login_v2
Output
NameTypeRequiredDescription
statusbooleanNo
messagestringNo

Users

batchGetByIds

users.batchGetByIds Batch fetch user profiles by user IDs Risk: read
await corsair.twitterapiio.api.users.batchGetByIds({});
Input
NameTypeRequiredDescription
userIdsstringYesComma-separated list of user IDs
Output
NameTypeRequiredDescription
statusbooleanNo
dataobject[]No
{
  id: string,
  userName: string,
  name: string,
  followerCount?: number,
  followingCount?: number,
  profilePicture?: string | null,
  coverPicture?: string | null,
  description?: string | null,
  location?: string | null,
  isBlueVerified?: boolean,
  isGovernmentVerified?: boolean,
  favouritesCount?: number,
  statusesCount?: number,
  mediaCount?: number,
  createdAt?: string,
  isProtected?: boolean,
  isSuspended?: boolean,
  isUnavailable?: boolean,
  pinnedTweetIds?: string[],
  website?: string | null
}[]

checkFollowRelationship

users.checkFollowRelationship Check if two users follow each other Risk: read
await corsair.twitterapiio.api.users.checkFollowRelationship({});
Input
NameTypeRequiredDescription
sourceUserNamestringYes
targetUserNamestringYes
Output
NameTypeRequiredDescription
statusbooleanNo
isFollowingbooleanNo
isFollowedBybooleanNo

follow

users.follow Follow a user Risk: write
await corsair.twitterapiio.api.users.follow({});
Input
NameTypeRequiredDescription
followIdstringYesUser ID to follow
loginCookiestringYesTwitter login cookie from user_login_v2
Output
NameTypeRequiredDescription
statusbooleanNo
messagestringNo

getByUsername

users.getByUsername Get user profile by username Risk: read
await corsair.twitterapiio.api.users.getByUsername({});
Input
NameTypeRequiredDescription
userNamestringYes
Output
NameTypeRequiredDescription
statusbooleanNo
dataobjectNo
{
  id: string,
  userName: string,
  name: string,
  followerCount?: number,
  followingCount?: number,
  profilePicture?: string | null,
  coverPicture?: string | null,
  description?: string | null,
  location?: string | null,
  isBlueVerified?: boolean,
  isGovernmentVerified?: boolean,
  favouritesCount?: number,
  statusesCount?: number,
  mediaCount?: number,
  createdAt?: string,
  isProtected?: boolean,
  isSuspended?: boolean,
  isUnavailable?: boolean,
  pinnedTweetIds?: string[],
  website?: string | null
}

getFollowers

users.getFollowers Get a user’s followers Risk: read
await corsair.twitterapiio.api.users.getFollowers({});
Input
NameTypeRequiredDescription
userNamestringYes
cursorstringNo
Output
NameTypeRequiredDescription
statusbooleanNo
usersobject[]No
next_cursorstringNo
has_next_pagebooleanNo
{
  id: string,
  userName: string,
  name: string,
  followerCount?: number,
  followingCount?: number,
  profilePicture?: string | null,
  coverPicture?: string | null,
  description?: string | null,
  location?: string | null,
  isBlueVerified?: boolean,
  isGovernmentVerified?: boolean,
  favouritesCount?: number,
  statusesCount?: number,
  mediaCount?: number,
  createdAt?: string,
  isProtected?: boolean,
  isSuspended?: boolean,
  isUnavailable?: boolean,
  pinnedTweetIds?: string[],
  website?: string | null
}[]

getFollowings

users.getFollowings Get users that a user is following Risk: read
await corsair.twitterapiio.api.users.getFollowings({});
Input
NameTypeRequiredDescription
userNamestringYes
cursorstringNo
Output
NameTypeRequiredDescription
statusbooleanNo
usersobject[]No
next_cursorstringNo
has_next_pagebooleanNo
{
  id: string,
  userName: string,
  name: string,
  followerCount?: number,
  followingCount?: number,
  profilePicture?: string | null,
  coverPicture?: string | null,
  description?: string | null,
  location?: string | null,
  isBlueVerified?: boolean,
  isGovernmentVerified?: boolean,
  favouritesCount?: number,
  statusesCount?: number,
  mediaCount?: number,
  createdAt?: string,
  isProtected?: boolean,
  isSuspended?: boolean,
  isUnavailable?: boolean,
  pinnedTweetIds?: string[],
  website?: string | null
}[]

getMe

users.getMe Get the authenticated account info Risk: read
await corsair.twitterapiio.api.users.getMe({});
Input
NameTypeRequiredDescription
loginCookiestringYesTwitter login cookie from user_login_v2
Output
NameTypeRequiredDescription
statusbooleanNo
dataobjectNo
{
  id: string,
  userName: string,
  name: string,
  followerCount?: number,
  followingCount?: number,
  profilePicture?: string | null,
  coverPicture?: string | null,
  description?: string | null,
  location?: string | null,
  isBlueVerified?: boolean,
  isGovernmentVerified?: boolean,
  favouritesCount?: number,
  statusesCount?: number,
  mediaCount?: number,
  createdAt?: string,
  isProtected?: boolean,
  isSuspended?: boolean,
  isUnavailable?: boolean,
  pinnedTweetIds?: string[],
  website?: string | null
}

getVerifiedFollowers

users.getVerifiedFollowers Get a user’s verified (blue-check) followers Risk: read
await corsair.twitterapiio.api.users.getVerifiedFollowers({});
Input
NameTypeRequiredDescription
userNamestringYes
cursorstringNo
Output
NameTypeRequiredDescription
statusbooleanNo
usersobject[]No
next_cursorstringNo
has_next_pagebooleanNo
{
  id: string,
  userName: string,
  name: string,
  followerCount?: number,
  followingCount?: number,
  profilePicture?: string | null,
  coverPicture?: string | null,
  description?: string | null,
  location?: string | null,
  isBlueVerified?: boolean,
  isGovernmentVerified?: boolean,
  favouritesCount?: number,
  statusesCount?: number,
  mediaCount?: number,
  createdAt?: string,
  isProtected?: boolean,
  isSuspended?: boolean,
  isUnavailable?: boolean,
  pinnedTweetIds?: string[],
  website?: string | null
}[]

login

users.login Authenticate a Twitter account via credentials and obtain a login cookie for v2 endpoints Risk: write
await corsair.twitterapiio.api.users.login({});
Input
NameTypeRequiredDescription
userNamestringYesTwitter username
emailstringYesAccount email address
passwordstringYesAccount password
totpSecretstringNoTOTP secret for 2FA (from the account profile page)
proxystringYesHigh-quality residential proxy URL (e.g. http://user:pass@host:port)
Output
NameTypeRequiredDescription
login_cookiestringNo
statusstringNo
msgstringNo

search

users.search Search users by keyword Risk: read
await corsair.twitterapiio.api.users.search({});
Input
NameTypeRequiredDescription
keywordstringYes
cursorstringNo
Output
NameTypeRequiredDescription
statusbooleanNo
usersobject[]No
next_cursorstringNo
has_next_pagebooleanNo
{
  id: string,
  userName: string,
  name: string,
  followerCount?: number,
  followingCount?: number,
  profilePicture?: string | null,
  coverPicture?: string | null,
  description?: string | null,
  location?: string | null,
  isBlueVerified?: boolean,
  isGovernmentVerified?: boolean,
  favouritesCount?: number,
  statusesCount?: number,
  mediaCount?: number,
  createdAt?: string,
  isProtected?: boolean,
  isSuspended?: boolean,
  isUnavailable?: boolean,
  pinnedTweetIds?: string[],
  website?: string | null
}[]

unfollow

users.unfollow Unfollow a user Risk: write
await corsair.twitterapiio.api.users.unfollow({});
Input
NameTypeRequiredDescription
followIdstringYesUser ID to unfollow
loginCookiestringYesTwitter login cookie from user_login_v2
Output
NameTypeRequiredDescription
statusbooleanNo
messagestringNo