Skip to main content
Every discord.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.

Channels

list

channels.list List channels in a guild Risk: read
await corsair.discord.api.channels.list({});
Input
NameTypeRequiredDescription
guild_idstringYes
Output: object[]
{
  id: string,
  type: number,
  guild_id?: string,
  name?: string | null,
  topic?: string | null,
  position?: number,
  parent_id?: string | null,
  last_message_id?: string | null,
  owner_id?: string,
  thread_metadata?: {
    archived: boolean,
    auto_archive_duration: number,
    archive_timestamp: string,
    locked: boolean,
    invitable?: boolean
  }
}[]

Guilds

get

guilds.get Get info about a guild Risk: read
await corsair.discord.api.guilds.get({});
Input
NameTypeRequiredDescription
guild_idstringYes
with_countsbooleanNo
Output
NameTypeRequiredDescription
idstringYes
namestringYes
iconstringNo
splashstringNo
owner_idstringYes
afk_timeoutnumberYes
verification_levelnumberYes
default_message_notificationsnumberYes
explicit_content_filternumberYes
rolesobject[]Yes
featuresstring[]Yes
mfa_levelnumberYes
descriptionstringNo
premium_tiernumberYes
premium_subscription_countnumberNo
preferred_localestringYes
approximate_member_countnumberNo
approximate_presence_countnumberNo
{
  id: string,
  name: string,
  permissions: string,
  position: number,
  color: number,
  hoist: boolean,
  managed: boolean,
  mentionable: boolean
}[]

list

guilds.list List guilds the bot is a member of Risk: read
await corsair.discord.api.guilds.list({});
Input
NameTypeRequiredDescription
beforestringNo
afterstringNo
limitnumberNo
with_countsbooleanNo
Output: object[]
{
  id: string,
  name: string,
  icon?: string | null,
  owner: boolean,
  permissions: string,
  features: string[],
  approximate_member_count?: number,
  approximate_presence_count?: number
}[]

Members

get

members.get Get info about a guild member Risk: read
await corsair.discord.api.members.get({});
Input
NameTypeRequiredDescription
guild_idstringYes
user_idstringYes
Output
NameTypeRequiredDescription
userobjectNo
nickstringNo
avatarstringNo
rolesstring[]Yes
joined_atstringYes
premium_sincestringNo
deafbooleanYes
mutebooleanYes
flagsnumberYes
pendingbooleanNo
{
  id: string,
  username: string,
  discriminator: string,
  global_name?: string | null,
  avatar?: string | null,
  bot?: boolean,
  system?: boolean,
  email?: string | null,
  verified?: boolean,
  locale?: string,
  premium_type?: number,
  public_flags?: number,
  flags?: number
}

list

members.list List members of a guild Risk: read
await corsair.discord.api.members.list({});
Input
NameTypeRequiredDescription
guild_idstringYes
limitnumberNo
afterstringNo
Output: object[]
{
  user?: {
    id: string,
    username: string,
    discriminator: string,
    global_name?: string | null,
    avatar?: string | null,
    bot?: boolean,
    system?: boolean,
    email?: string | null,
    verified?: boolean,
    locale?: string,
    premium_type?: number,
    public_flags?: number,
    flags?: number
  },
  nick?: string | null,
  avatar?: string | null,
  roles: string[],
  joined_at: string,
  premium_since?: string | null,
  deaf: boolean,
  mute: boolean,
  flags: number,
  pending?: boolean
}[]

Messages

delete

messages.delete Permanently delete a message [DESTRUCTIVE] Risk: destructive · Irreversible
await corsair.discord.api.messages.delete({});
Input
NameTypeRequiredDescription
channel_idstringYes
message_idstringYes
Output
NameTypeRequiredDescription
successtrueYes

edit

messages.edit Edit an existing message Risk: write
await corsair.discord.api.messages.edit({});
Input
NameTypeRequiredDescription
channel_idstringYes
message_idstringYes
contentstringNo
embedsobject[]No
{
  title?: string,
  description?: string,
  url?: string,
  color?: number,
  fields?: {
    name: string,
    value: string,
    inline?: boolean
  }[],
  footer?: {
    text: string,
    icon_url?: string
  },
  image?: {
    url: string
  },
  thumbnail?: {
    url: string
  },
  author?: {
    name: string,
    url?: string,
    icon_url?: string
  },
  timestamp?: string
}[]
Output
NameTypeRequiredDescription
idstringYes
channel_idstringYes
authorobjectYes
contentstringYes
timestampstringYes
edited_timestampstringNo
ttsbooleanYes
mention_everyonebooleanYes
mentionsobject[]Yes
mention_rolesstring[]Yes
attachmentsobject[]Yes
embedsobject[]Yes
reactionsobject[]No
pinnedbooleanYes
typenumberYes
flagsnumberNo
message_referenceobjectNo
threadobjectNo
noncestring | numberNo
referenced_messagelazyYes
{
  id: string,
  username: string,
  discriminator: string,
  global_name?: string | null,
  avatar?: string | null,
  bot?: boolean,
  system?: boolean,
  email?: string | null,
  verified?: boolean,
  locale?: string,
  premium_type?: number,
  public_flags?: number,
  flags?: number
}
{
  id: string,
  username: string,
  discriminator: string,
  global_name?: string | null,
  avatar?: string | null,
  bot?: boolean,
  system?: boolean,
  email?: string | null,
  verified?: boolean,
  locale?: string,
  premium_type?: number,
  public_flags?: number,
  flags?: number
}[]
{
  id: string,
  filename: string,
  description?: string,
  content_type?: string,
  size: number,
  url: string,
  proxy_url: string,
  height?: number | null,
  width?: number | null
}[]
{
  title?: string,
  description?: string,
  url?: string,
  color?: number,
  fields?: {
    name: string,
    value: string,
    inline?: boolean
  }[],
  footer?: {
    text: string,
    icon_url?: string
  },
  image?: {
    url: string
  },
  thumbnail?: {
    url: string
  },
  author?: {
    name: string,
    url?: string,
    icon_url?: string
  },
  timestamp?: string
}[]
{
  count: number,
  me: boolean,
  emoji: {
    id?: string | null,
    name: string
  }
}[]
{
  message_id?: string,
  channel_id?: string,
  guild_id?: string
}
{
  id: string,
  type: number,
  guild_id?: string,
  name?: string | null,
  topic?: string | null,
  position?: number,
  parent_id?: string | null,
  last_message_id?: string | null,
  owner_id?: string,
  thread_metadata?: {
    archived: boolean,
    auto_archive_duration: number,
    archive_timestamp: string,
    locked: boolean,
    invitable?: boolean
  }
}

get

messages.get Get a specific message Risk: read
await corsair.discord.api.messages.get({});
Input
NameTypeRequiredDescription
channel_idstringYes
message_idstringYes
Output
NameTypeRequiredDescription
idstringYes
channel_idstringYes
authorobjectYes
contentstringYes
timestampstringYes
edited_timestampstringNo
ttsbooleanYes
mention_everyonebooleanYes
mentionsobject[]Yes
mention_rolesstring[]Yes
attachmentsobject[]Yes
embedsobject[]Yes
reactionsobject[]No
pinnedbooleanYes
typenumberYes
flagsnumberNo
message_referenceobjectNo
threadobjectNo
noncestring | numberNo
referenced_messagelazyYes
{
  id: string,
  username: string,
  discriminator: string,
  global_name?: string | null,
  avatar?: string | null,
  bot?: boolean,
  system?: boolean,
  email?: string | null,
  verified?: boolean,
  locale?: string,
  premium_type?: number,
  public_flags?: number,
  flags?: number
}
{
  id: string,
  username: string,
  discriminator: string,
  global_name?: string | null,
  avatar?: string | null,
  bot?: boolean,
  system?: boolean,
  email?: string | null,
  verified?: boolean,
  locale?: string,
  premium_type?: number,
  public_flags?: number,
  flags?: number
}[]
{
  id: string,
  filename: string,
  description?: string,
  content_type?: string,
  size: number,
  url: string,
  proxy_url: string,
  height?: number | null,
  width?: number | null
}[]
{
  title?: string,
  description?: string,
  url?: string,
  color?: number,
  fields?: {
    name: string,
    value: string,
    inline?: boolean
  }[],
  footer?: {
    text: string,
    icon_url?: string
  },
  image?: {
    url: string
  },
  thumbnail?: {
    url: string
  },
  author?: {
    name: string,
    url?: string,
    icon_url?: string
  },
  timestamp?: string
}[]
{
  count: number,
  me: boolean,
  emoji: {
    id?: string | null,
    name: string
  }
}[]
{
  message_id?: string,
  channel_id?: string,
  guild_id?: string
}
{
  id: string,
  type: number,
  guild_id?: string,
  name?: string | null,
  topic?: string | null,
  position?: number,
  parent_id?: string | null,
  last_message_id?: string | null,
  owner_id?: string,
  thread_metadata?: {
    archived: boolean,
    auto_archive_duration: number,
    archive_timestamp: string,
    locked: boolean,
    invitable?: boolean
  }
}

list

messages.list List recent messages in a channel Risk: read
await corsair.discord.api.messages.list({});
Input
NameTypeRequiredDescription
channel_idstringYes
limitnumberNo
beforestringNo
afterstringNo
aroundstringNo
Output: object[]
{
  id: string,
  channel_id: string,
  author: {
    id: string,
    username: string,
    discriminator: string,
    global_name?: string | null,
    avatar?: string | null,
    bot?: boolean,
    system?: boolean,
    email?: string | null,
    verified?: boolean,
    locale?: string,
    premium_type?: number,
    public_flags?: number,
    flags?: number
  },
  content: string,
  timestamp: string,
  edited_timestamp?: string | null,
  tts: boolean,
  mention_everyone: boolean,
  mentions: {
    id: string,
    username: string,
    discriminator: string,
    global_name?: string | null,
    avatar?: string | null,
    bot?: boolean,
    system?: boolean,
    email?: string | null,
    verified?: boolean,
    locale?: string,
    premium_type?: number,
    public_flags?: number,
    flags?: number
  }[],
  mention_roles: string[],
  attachments: {
    id: string,
    filename: string,
    description?: string,
    content_type?: string,
    size: number,
    url: string,
    proxy_url: string,
    height?: number | null,
    width?: number | null
  }[],
  embeds: {
    title?: string,
    description?: string,
    url?: string,
    color?: number,
    fields?: {
      name: string,
      value: string,
      inline?: boolean
    }[],
    footer?: {
      text: string,
      icon_url?: string
    },
    image?: {
      url: string
    },
    thumbnail?: {
      url: string
    },
    author?: {
      name: string,
      url?: string,
      icon_url?: string
    },
    timestamp?: string
  }[],
  reactions?: {
    count: number,
    me: boolean,
    emoji: {
      id?: string | null,
      name: string
    }
  }[],
  pinned: boolean,
  type: number,
  flags?: number,
  message_reference?: {
    message_id?: string,
    channel_id?: string,
    guild_id?: string
  },
  thread?: {
    id: string,
    type: number,
    guild_id?: string,
    name?: string | null,
    topic?: string | null,
    position?: number,
    parent_id?: string | null,
    last_message_id?: string | null,
    owner_id?: string,
    thread_metadata?: {
      archived: boolean,
      auto_archive_duration: number,
      archive_timestamp: string,
      locked: boolean,
      invitable?: boolean
    }
  },
  nonce?: string | number,
  referenced_message: lazy
}[]

reply

messages.reply Reply to a message in a channel Risk: write
await corsair.discord.api.messages.reply({});
Input
NameTypeRequiredDescription
channel_idstringYes
message_idstringYes
contentstringNo
embedsobject[]No
fail_if_not_existsbooleanNo
{
  title?: string,
  description?: string,
  url?: string,
  color?: number,
  fields?: {
    name: string,
    value: string,
    inline?: boolean
  }[],
  footer?: {
    text: string,
    icon_url?: string
  },
  image?: {
    url: string
  },
  thumbnail?: {
    url: string
  },
  author?: {
    name: string,
    url?: string,
    icon_url?: string
  },
  timestamp?: string
}[]
Output
NameTypeRequiredDescription
idstringYes
channel_idstringYes
authorobjectYes
contentstringYes
timestampstringYes
edited_timestampstringNo
ttsbooleanYes
mention_everyonebooleanYes
mentionsobject[]Yes
mention_rolesstring[]Yes
attachmentsobject[]Yes
embedsobject[]Yes
reactionsobject[]No
pinnedbooleanYes
typenumberYes
flagsnumberNo
message_referenceobjectNo
threadobjectNo
noncestring | numberNo
referenced_messagelazyYes
{
  id: string,
  username: string,
  discriminator: string,
  global_name?: string | null,
  avatar?: string | null,
  bot?: boolean,
  system?: boolean,
  email?: string | null,
  verified?: boolean,
  locale?: string,
  premium_type?: number,
  public_flags?: number,
  flags?: number
}
{
  id: string,
  username: string,
  discriminator: string,
  global_name?: string | null,
  avatar?: string | null,
  bot?: boolean,
  system?: boolean,
  email?: string | null,
  verified?: boolean,
  locale?: string,
  premium_type?: number,
  public_flags?: number,
  flags?: number
}[]
{
  id: string,
  filename: string,
  description?: string,
  content_type?: string,
  size: number,
  url: string,
  proxy_url: string,
  height?: number | null,
  width?: number | null
}[]
{
  title?: string,
  description?: string,
  url?: string,
  color?: number,
  fields?: {
    name: string,
    value: string,
    inline?: boolean
  }[],
  footer?: {
    text: string,
    icon_url?: string
  },
  image?: {
    url: string
  },
  thumbnail?: {
    url: string
  },
  author?: {
    name: string,
    url?: string,
    icon_url?: string
  },
  timestamp?: string
}[]
{
  count: number,
  me: boolean,
  emoji: {
    id?: string | null,
    name: string
  }
}[]
{
  message_id?: string,
  channel_id?: string,
  guild_id?: string
}
{
  id: string,
  type: number,
  guild_id?: string,
  name?: string | null,
  topic?: string | null,
  position?: number,
  parent_id?: string | null,
  last_message_id?: string | null,
  owner_id?: string,
  thread_metadata?: {
    archived: boolean,
    auto_archive_duration: number,
    archive_timestamp: string,
    locked: boolean,
    invitable?: boolean
  }
}

send

messages.send Send a message to a channel Risk: write
await corsair.discord.api.messages.send({});
Input
NameTypeRequiredDescription
channel_idstringYes
contentstringNo
embedsobject[]No
ttsbooleanNo
noncestring | numberNo
{
  title?: string,
  description?: string,
  url?: string,
  color?: number,
  fields?: {
    name: string,
    value: string,
    inline?: boolean
  }[],
  footer?: {
    text: string,
    icon_url?: string
  },
  image?: {
    url: string
  },
  thumbnail?: {
    url: string
  },
  author?: {
    name: string,
    url?: string,
    icon_url?: string
  },
  timestamp?: string
}[]
Output
NameTypeRequiredDescription
idstringYes
channel_idstringYes
authorobjectYes
contentstringYes
timestampstringYes
edited_timestampstringNo
ttsbooleanYes
mention_everyonebooleanYes
mentionsobject[]Yes
mention_rolesstring[]Yes
attachmentsobject[]Yes
embedsobject[]Yes
reactionsobject[]No
pinnedbooleanYes
typenumberYes
flagsnumberNo
message_referenceobjectNo
threadobjectNo
noncestring | numberNo
referenced_messagelazyYes
{
  id: string,
  username: string,
  discriminator: string,
  global_name?: string | null,
  avatar?: string | null,
  bot?: boolean,
  system?: boolean,
  email?: string | null,
  verified?: boolean,
  locale?: string,
  premium_type?: number,
  public_flags?: number,
  flags?: number
}
{
  id: string,
  username: string,
  discriminator: string,
  global_name?: string | null,
  avatar?: string | null,
  bot?: boolean,
  system?: boolean,
  email?: string | null,
  verified?: boolean,
  locale?: string,
  premium_type?: number,
  public_flags?: number,
  flags?: number
}[]
{
  id: string,
  filename: string,
  description?: string,
  content_type?: string,
  size: number,
  url: string,
  proxy_url: string,
  height?: number | null,
  width?: number | null
}[]
{
  title?: string,
  description?: string,
  url?: string,
  color?: number,
  fields?: {
    name: string,
    value: string,
    inline?: boolean
  }[],
  footer?: {
    text: string,
    icon_url?: string
  },
  image?: {
    url: string
  },
  thumbnail?: {
    url: string
  },
  author?: {
    name: string,
    url?: string,
    icon_url?: string
  },
  timestamp?: string
}[]
{
  count: number,
  me: boolean,
  emoji: {
    id?: string | null,
    name: string
  }
}[]
{
  message_id?: string,
  channel_id?: string,
  guild_id?: string
}
{
  id: string,
  type: number,
  guild_id?: string,
  name?: string | null,
  topic?: string | null,
  position?: number,
  parent_id?: string | null,
  last_message_id?: string | null,
  owner_id?: string,
  thread_metadata?: {
    archived: boolean,
    auto_archive_duration: number,
    archive_timestamp: string,
    locked: boolean,
    invitable?: boolean
  }
}

Reactions

add

reactions.add Add a reaction to a message Risk: write
await corsair.discord.api.reactions.add({});
Input
NameTypeRequiredDescription
channel_idstringYes
message_idstringYes
emojistringYes
Output
NameTypeRequiredDescription
successtrueYes

list

reactions.list List reactions on a message Risk: read
await corsair.discord.api.reactions.list({});
Input
NameTypeRequiredDescription
channel_idstringYes
message_idstringYes
emojistringYes
limitnumberNo
afterstringNo
Output: object[]
{
  id: string,
  username: string,
  discriminator: string,
  global_name?: string | null,
  avatar?: string | null,
  bot?: boolean,
  system?: boolean,
  email?: string | null,
  verified?: boolean,
  locale?: string,
  premium_type?: number,
  public_flags?: number,
  flags?: number
}[]

remove

reactions.remove Remove a reaction from a message Risk: write
await corsair.discord.api.reactions.remove({});
Input
NameTypeRequiredDescription
channel_idstringYes
message_idstringYes
emojistringYes
Output
NameTypeRequiredDescription
successtrueYes

Threads

create

threads.create Create a new thread in a channel Risk: write
await corsair.discord.api.threads.create({});
Input
NameTypeRequiredDescription
channel_idstringYes
namestringYes
auto_archive_duration60 | 1440 | 4320 | 10080No
typenumberNo
invitablebooleanNo
Output
NameTypeRequiredDescription
idstringYes
typenumberYes
guild_idstringNo
namestringNo
topicstringNo
positionnumberNo
parent_idstringNo
last_message_idstringNo
owner_idstringNo
thread_metadataobjectNo
{
  archived: boolean,
  auto_archive_duration: number,
  archive_timestamp: string,
  locked: boolean,
  invitable?: boolean
}

createFromMessage

threads.createFromMessage Create a thread from an existing message Risk: write
await corsair.discord.api.threads.createFromMessage({});
Input
NameTypeRequiredDescription
channel_idstringYes
message_idstringYes
namestringYes
auto_archive_duration60 | 1440 | 4320 | 10080No
Output
NameTypeRequiredDescription
idstringYes
typenumberYes
guild_idstringNo
namestringNo
topicstringNo
positionnumberNo
parent_idstringNo
last_message_idstringNo
owner_idstringNo
thread_metadataobjectNo
{
  archived: boolean,
  auto_archive_duration: number,
  archive_timestamp: string,
  locked: boolean,
  invitable?: boolean
}