Discord has a reporting system that allows users to report messages or profiles that violate Discord's Terms of Service or Community Guidelines .
When a user creates a report, it is sent to Discord's Trust and Safety team for review. The team evaluates the report and takes appropriate action, which may include warning the user, temporarily suspending their account, or permanently banning them from the platform.
There are multiple versions of the reporting API:
V1 : The original version of the reporting API, also known as dirt. Supports reporting messages and users.V2 : An updated version of the original reporting API that includes detailed report types and saves a snapshot of the reported message for review. Supports reporting messages only.V3 : The latest version of the reporting API, known as in-app reports, that includes additional report types and improved functionality. Supports reporting messages, users, guilds, scheduled events, and more.DSA : A special version of reports V3 that can be used by users living in the European Union to comply with the Digital Services Act .When using the reporting API, keep the following in mind:
Only resources you have access to can be reported. For example, you cannot report a message in a private channel you cannot access. You must have a verified email on your account to create reports. You cannot report your own messages or profile. Reports are anonymous. The user being reported will not be notified of who reported them. Abuse of the reporting system may result in action being taken against your account. The original version of the reporting API, also known as "dirt". Supports reporting messages and users.
Returns a list of report reason objects that can be used when creating a report for a message or user.
Either and , or must be provided.
Field Type Description message_id snowflake The ID of the message to report channel_id snowflake The ID of the channel the message is in user_id snowflake The ID of the user to report
Field Type Description reason integer A unique identifier for the reason label string The display name of the reason description string A brief description of the reason
{
"reason" : 2 ,
"label" : "Spam or Phishing Links" ,
"description" : "Fake links, invites to a server via bot, malicious links or attachments."
}
Creates a report for a message or user.
Field Type Description message_id 1 snowflake The ID of the message to report channel_id 1 snowflake The ID of the channel the message is in user_id 1 snowflake The ID of the user to report reason integer The report reason identifier
1 Either and , or must be provided.
Field Type Description id snowflake The ID of the created report
An updated version of the original reporting API that includes detailed report types and saves a snapshot of the reported message for review. Supports reporting messages only.
Returns a list of report option objects that can be used when creating a report for a message.
Field Type Description value string A unique identifier for the report option label string The display name of the report option description string A brief description of the report option sub_question? string Prompt to ask the user for in order to select a sub-type sub_types? array[report option sub-type object] Sub-types for the report option
Field Type Description value string A unique identifier for the sub-type label string The display name of the report sub-type
{
"value" : "spamming" ,
"label" : "Spamming" ,
"description" : "Unsolicited advertisements" ,
"sub_question" : "How is this spam?" ,
"sub_types" : [
{
"value" : "sub_spam" ,
"label" : "User is sending spam messages or requests"
} ,
{
"value" : "sub_spambot" ,
"label" : "This is a spambot account"
}
]
}
POST/reports/channels/{channel.id}/messages/{message.id}Test
Stages a report for a message, returning a token that can be used to create the report containing the serialized message data.
Field Type Description token string The signed report token
Creates a report for a message, including a snapshot of the message for review. Requires the permission if the channel is in a guild. Returns a 204 empty response on success.
Field Type Description token string The signed report token report_type string The report option value report_subtype? string The report option sub-type value subject string The subject of the report (max 300 characters) description string Additional details for the report (max 800 characters)
The latest version of the reporting API, known as "in-app reports", that includes additional report types and improved functionality. Supports reporting messages, users, guilds, scheduled events, and more.
A special version of reports V3 that can be used by users living in the European Union to comply with the Digital Services Act .
Unlike regular reports, DSA reports do not require an account to submit. Instead, users simply need to verify an email address .
Additionally, instead of the standard report menu types , DSA reporters fetch their allowed report types from a separate endpoint .
Note that the unauthenticated reporting endpoints require that either authentication or a fingerprint is provided for experiment tracking purposes.
Field Type Description name string The type of report menu version string The version of the report menu schema (currently ) variant string The variant of the menu postback_url string The API URL endpoint for submitting the report language? string The language code for the menu (default ) root_node_id integer The ID of the starting node in the menu flow success_node_id integer The ID of the node shown on successful submission fail_node_id integer The ID of the node shown on failed submission nodes map[integer, report node object] A map of node IDs to their corresponding node objects
Field Type Description id 1 integer The unique identifier for the node report_type? string The report type identifier if this is a submission node key string A unique key identifier for the node header string The main header text displayed for this node subheader? string Optional secondary header text info? string Optional informational text or warning children array[report node child object] Child options that lead to other nodes elements array[report element object] UI elements to display on this node button? report button objectThe action button for this node is_multi_select_required boolean Whether multi-select elements require at least one selection is_auto_submit boolean Whether this node automatically submits without user interaction
1 Node IDs are unique across all report menu types and often reused in multiple menus.
Field Type Description type string The type of button target ?integer The target node ID for navigation (only applicable for buttons)
Value Description next Navigates to the next node in the report flow submit Submits the report done Exits the modal successfully cancel Exits the modal without submitting the report
This object is represented as an array of the following fields:
Field Type Description name string The display label for the child option target_node_id integer The node ID this option navigates to
Field Type Description name string The name identifier for the element type string The type of element data object Element-specific data, varies by type should_submit_data boolean Whether this element's data should be included in the submission skip_if_unlocalized boolean Whether to skip this element if not localized is_localized boolean Whether this element has been localized
Value Description Receive Data Send Data checkbox A checkbox input element array[array[string]] 1 array[array[string]] 1 dropdown A dropdown select input element dropdown element objectstring free_text A free text input element free text element objectstring radioA radio button input elementsuccess A success element null fail A fail element null breadcrumbs The user's progress through the report flow null text_line_resource A phone number for the user to text text line resource element objecttext A block of text text resource element objectexternal_link An external link reference external link element objectmore_you_can_doAdditional actions that can be takenblock_users An option to block the reported user null ignore_users An option to ignore the reported user null mute_users An option to mute the reported user null delete_message An option to delete the reported message null leave_guild An option to leave the reported guild null deauthorize_app An option to deauthorize the reported app null share_with_parents An option to share the report with parents null settings_upsells Additional settings actions that can be taken null guild_preview Displays a preview of the reported guild null guild_discovery_preview Displays a preview of the reported guild listing null guild_directory_entry_preview Displays a preview of the reported directory entry null guild_scheduled_event_preview Displays a preview of the reported scheduled event null message_preview Displays a preview of the reported message null channel_preview Displays a preview of the reported channel null user_preview Displays a preview of the reported user null app_preview Displays a preview of the reported application null widget_preview Displays a preview of the reported profile widget null
1 Nested array is in the format (name, label, description?).
Field Type Description title string The title of the dropdown element options array[dropdown option object] The selectable options in the dropdown
Field Type Description value string The unique identifier for the option label string The display name of the option
Field Type Description title? string The title of the free text element subtitle? string An subtitle for the element placeholder? string Placeholder text for the input field rows integer The number of visible text rows character_limit integer The maximum number of characters allowed pattern? string A regex pattern that the input must match
Field Type Description title string The title of the text line resource body string The body text of the text line resource sms string The SMS number to text sms_body? string Example SMS message to send is_localized boolean Whether this element has been localized
Field Type Description header string The header text of the text resource body string The body text of the text resource is_localized boolean Whether this element has been localized
Field Type Description url string The URL for the external link link_text string The display text for the external link link_description? string A description of the link's purpose is_localized boolean Whether this element has been localized
Value Description guild Report a guild guild_discovery Report a guild discovery listing guild_directory_entry Report a guild directory entry guild_scheduled_event Report a guild scheduled event message Report a message stage_channel Report a stage channel first_dm Report the first message in a DM user Report a user application Report an application widget Report a profile widget
{
"name" : "user" ,
"variant" : "3" ,
"version" : "1.0" ,
"postback_url" : "/api/reporting/user" ,
"root_node_id" : 1 ,
"success_node_id" : 1 ,
"fail_node_id" : 1 ,
"nodes" : {
"1" : {
"id" : 1 ,
"key" : "GENERIC_SUBMIT" ,
"header" : "Report Summary" ,
"subheader" : "Review your report before submitting." ,
"info" : null ,
"button" : {
"type" : "submit" ,
"target" : null
} ,
"elements" : [
{
"name" : "breadcrumbs" ,
"type" : "breadcrumbs" ,
"data" : null ,
"should_submit_data" : false ,
"skip_if_unlocalized" : false ,
"is_localized" : true
}
] ,
"report_type" : null ,
"children" : [ ] ,
"is_multi_select_required" : false ,
"is_auto_submit" : false
}
}
}
GET/reporting/menu/{type}Test
Returns a report menu object for the specified type . The menu contains a hierarchical tree of nodes that guide users through the reporting process, including questions, options, and submission steps.
Field Type Description variant? string The version variant of the menu to retrieve (max 256 characters, default latest)
POST/reporting/{type}Test
Submits a completed report based on the user's navigation through a report menu. This endpoint processes the collected information from the menu flow and creates a formal report for review by Discord's Trust and Safety team.
Field Type Description version string The version of the report menu schema that was used variant string The variant of the menu that was used name string The report menu type language string The language code used for the report breadcrumbs array[integer] Node IDs clicked in the report menu flow, representing the user's path through the menu elements? map[string, array[string]] Map of element names to their selected values (for checkboxes and other inputs) channel_id? snowflake The ID of the channel being reported (required for , , , and report menus ) message_id? snowflake The ID of the message being reported (required for and report menus ) guild_id? snowflake The ID of the guild being reported (required for , , , , and report menus ) stage_instance_id? snowflake The ID of the stage instance being reported (required for report menus ) guild_scheduled_event_id? snowflake The ID of the scheduled event being reported (required for report menus ) reported_user_id? snowflake The ID of the user being reported (required for report menus ) application_id? snowflake The ID of the application being reported (required for report menus ) user_id? snowflake The ID of the user being reported (required for report menus ) widget_id? snowflake The ID of the profile widget being reported (required for report menus )
Field Type Description report_id snowflake The ID of the created report
GET/reporting/unauthenticated/experimentTest
Queries whether the user can use unauthenticated reporting. Returns an empty object on success.
GET/reporting/unauthenticated/capabilitiesTest
Returns the report menu types available for unauthenticated reporting.
Field Type Description capabilities array[string] The available report menu types
POST/reporting/unauthenticated/{type}/codeTest
Sends a verification code to the user's email address to initiate the unauthenticated reporting process for the specified type (must be one of the types returned by Get Unauthenticated Report Capabilities ). Returns an empty object on success.
Field Type Description name string The report menu type (same as the path parameter) email string The email address to send the verification code to (max 320 characters)
POST/reporting/unauthenticated/{type}/verifyTest
Verifies the email code sent to the user to confirm their email address for unauthenticated reporting for the specified type (must be one of the types returned by Get Unauthenticated Report Capabilities ).
Field Type Description name string The report menu type (same as the path parameter) email string The email address used to request the code code string The verification code sent to the email (max 6 characters)
Field Type Description token string The email verification token
GET/reporting/unauthenticated/menu/{type}Test
Returns a report menu object for the specified type (must be one of the types returned by Get Unauthenticated Report Capabilities ).
The menu contains a hierarchical tree of nodes that guide users through the reporting process, including questions, options, and submission steps.
Field Type Description variant? string The version variant of the menu to retrieve (max 256 characters, default latest)
POST/reporting/unauthenticated/{type}Test
Submits a completed unauthenticated report based on the user's navigation through a report menu. This endpoint processes the collected information from the menu flow and creates a formal report for review by Discord's Trust and Safety team.
Field Type Description version string The version of the report menu schema that was used variant string The variant of the menu that was used name string The report menu type language string The language code used for the report breadcrumbs array[integer] Node IDs clicked in the report menu flow, representing the user's path through the menu elements? map[string, array[string]] Map of element names to their selected values (for checkboxes and other inputs) email_token string The verification token obtained from the Verify Unauthenticated Report endpoint
POST/reporting/reviewTest
Submits a request to have a report on your account reviewed. Report review links are present in emails sent informing you of actions taken on your account.
When clicked, these links redirect to , where the token can be used with this endpoint to request a review.
Returns an empty object on success.
Field Type Description token string The report review token obtained from the report review link