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
sinceTimestringNo
untilTimestringNo
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 | LikesNo
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[]No
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
woeidnumberNo
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[]No
exactPhrasestringNo
anyOfstring[]No
excludeKeywordsstring[]No
hashtagsstring[]No
fromUsersstring[]No
toUsersstring[]No
mentioningUsersstring[]No
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 | zhNo
sincestringNo
untilstringNo
sinceTimenumberNo
untilTimenumberNo
repliesonly | excludeNo
retweetsonly | excludeNo
onlyLinksbooleanNo
onlyMediabooleanNo
onlyImagesbooleanNo
onlyVideosbooleanNo
minRepliesnumberNo
minLikesnumberNo
minRetweetsnumberNo
queryTypeLatest | TopNo
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
replyToTweetIdstringNo
mediaIdsstring[]No
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 | VideosNo
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
totpSecretstringNo
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