Safety Hub

Safety Hub is a feature that provides users with information about their account's standing, trust & safety violations, and actions taken against them.

Safety Hub Object

Safety Hub Structure
FieldTypeDescription
classificationsarray[classification object]User infractions
guild_classificationsarray[classification object]Guild infractions
account_standingaccount standing objectCurrent standing of the user's account
is_dsa_eligiblebooleanIndicates if the user is eligible for DSA appeal
is_appeal_eligiblebooleanIndicates if the user is eligible to appeal any classifications
usernamestringThe username of the user
appeal_eligibilityarray[integer]Appeal types the user is eligible for
Account Standing Structure
FieldTypeDescription
stateintegerCurrent account standing state
Account Standing State
ValueNameDescription
100ALL_GOODAccount is in good standing
200LIMITEDAccount is limited
300VERY_LIMITEDAccount is very limited
400AT_RISKAccount is at risk
500SUSPENDEDAccount is suspended
Appeal Eligibility
ValueNameDescription
1DSA_ELIGIBLEUser is eligible for DSA appeal
2IN_APP_ELIGIBLEUser is eligible for in-app appeal
3AGE_VERIFY_ELIGIBLEUser is eligible for age verification appeal

Classification Object

Classification Structure
FieldTypeDescription
idsnowflakeThe ID of the classification
classification_typeintegerThe classification type
descriptionstringA brief description of the classification
explainer_linkstringURL to a detailed explanation of the classification
actionsarray[action object]Actions taken as part of the classification
max_expiration_time?ISO8601 timestampWhen the classification will expire
flagged_contentarray[flagged content object]Content that was flagged as part of the classification
appeal_status?appeal status objectStatus of an appeal related to the classification
is_coppa 1booleanWhether the classification is a COPPA violation
is_spam 1booleanWhether the classification is a spam violation
appeal_ingestion_type 1integerHow a nominal appeal should be submitted
guild_metadata? 2guild metadata objectMetadata related to the guild where the classification was applied

1 Classifications that are marked as spam or COPPA violations cannot be appealed in-app.

2 Only present on guild classifications.

Action Structure
FieldTypeDescription
idsnowflakeThe ID of the action
action_typeintegerThe type of action taken
descriptionsarray[string]Human-friendly descriptions of the action
Action Type
ValueNameDescription
0BANPermanent ban from the platform
1TEMP_BANTemporary ban from the platform
2GLOBAL_QUARANTINEGlobal quarantine of the user
3REQUIRE_VERIFICATIONUser must verify their account
4USER_WARNINGWarning issued to the user
5USER_SPAMMERUser marked as a spammer
6CHANNEL_SPAMChannel marked for spam
7MESSAGE_SPAMMessage marked as spam
8DISABLE_SUSPICIOUS_ACTIVITYAccount disabled for suspicious activity
9LIMITED_ACCESSUser has limited access to features
10CHANNEL_SCHEDULE_DELETEChannel scheduled for deletion
11MESSAGE_CONTENT_REMOVALMessage content removed
12GUILD_DISABLE_INVITEGuild invites disabled
13USER_CONTENT_REMOVALUser content removed
14USER_USERNAME_MANGLEDOffending username was cleared
15GUILD_LIMITED_ACCESSGuild has limited access to features
16USER_MESSAGE_REMOVALUser's message has been removed
20GUILD_DELETEGuild has been deleted
22USER_PROFILE_MANGLEDOffending profile was cleared
Flagged Content Structure
FieldTypeDescription
typestringThe type of content (currently always message)
idsnowflakeThe ID of the message that was flagged
contentstringThe content that was flagged
attachmentsarray[attachment object]Attachments related to the flagged content
Appeal Status Structure
FieldTypeDescription
statusintegerCurrent status of the appeal
Appeal Status
ValueNameDescription
1REVIEW_PENDINGAppeal pending
2CLASSIFICATION_UPHELDAppeal denied, classification remains
3CLASSIFICATION_INVALIDATEDAppeal accepted, classification removed
Guild Metadata Structure
FieldTypeDescription
namestringThe name of the guild
icon?stringThe guild's icon hash
member_typeintegerType of member associated with the classification
Guild Member Type
ValueNameDescription
1OWNEROwner of the guild
2MEMBERRegular member
Classification Type
ValueNameDescription
1UNKNOWNClassification type is unknown
100UNSOLICITED_PORNOGRAPHYUnsolicited pornography content
200NONCONSENSUAL_PORNOGRAPHYNon-consensual pornography content
210GLORIFYING_VIOLENCEContent glorifying violence
220HATE_SPEECHHate speech content
230CRACKED_ACCOUNTSContent related to cracked accounts
240ILLICIT_GOODSContent related to illicit goods
250SOCIAL_ENGINEERINGContent related to social engineering
280CHILD_SAFETYContent related to child safety
290HARRASMENT_AND_BULLYINGHarrasment and bullying content
310HARRASMENT_AND_BULLYING_2Harassment and bullying content
320HATEFUL_CONDUCTHateful conduct
390HARRASMENT_AND_BULLYING_3Harassment and bullying content
600CHILD_SAFETY_2Content related to child safety
650CHILD_SAFETY_3Content related to child safety
711IMPERSONATIONUser has been impersonating a different user
720BAN_EVASIONUser has been evading an account suspension
3010MALICIOUS_CONDUCTUser has tried phishing someone
3030SPAMSpam content
4000NONCONSENSUAL_ADULT_CONTENTContent related to non-consensual adult content
4010FRAUDFraudulent content
4130DOXXING_GUILD_OWNERUser owned a doxxing content guild
4140COPYRIGHT_INFRINGEMENT_GUILD_OWNERUser owned a copyright infringement content guild
5010CHILD_SAFETY_4Content related to child safety
5090CHILD_SELF_ENDANGERMENTContent related to child self-harm
5245HARASSMENT_AND_BULLYING_GUILD_MEMBERUser was in a harassment and bullying content guild
5305DOXXING_GUILD_MEMBERUser was in a doxxing content guild
5411UNDERAGEUser was banned for being underage
5440COPYRIGHT_INFRINGEMENT_GUILD_MEMBERUser was in a copyright infringement content guild
5485COPYRIGHT_INFRINGEMENT_3Copyright infringement content
Appeal Ingestion Type
ValueNameDescription
0WEBFORMAppeal should be submitted via webform
1AGE_VERIFYAppeal should be submitted via age verification
2IN_APPAppeal should be submitted in-app
Appeal Ingestion Signal
ValueNameDescription
0DIDNT_VIOLATE_POLICYUser believes they did not violate policy
1TOO_STRICT_UNFAIRUser believes the action was too strict or unfair
2DONT_AGREE_PENALTYUser does not agree with the penalty
3SOMETHING_ELSEUser is appealing for a different reason

Safety Hub System Messages

Safety Policy Notice

Sent by the official Discord account to notify a user that they have violated Discord's community guidelines.

Safety Policy Notice Embed Structure
FieldTypeDescription
client_version_messagestringThe message that appears if the client is too old
classification_idsnowflakeThe classification ID associated with the notice
incident_timefloatUnix timestamp (in seconds) of when the incident occurred
Example Safety Policy Notice Embed
{
"type": "safety_policy_notice",
"title": "You broke Discord’s community guidelines",
"fields": [
{
"name": "client_version_message",
"value": "To see the details of this violation, please update the app or open Discord in your browser.",
"inline": false
},
{
"name": "classification_id",
"value": "1411751868690075770",
"inline": false
},
{
"name": "incident_time",
"value": "1756658274.0",
"inline": false
}
]
}

Safety System Notification

Sent by the official Discord account to notify a user about a safety-related issue.

Safety System Notification Embed Structure
FieldTypeDescription
client_version_messagestringThe message that appears if the client is too old
classification_idsnowflakeThe classification ID associated with the notice
bodystringThe content of the embed
icon_typestringThe icon to use in the embed
headerstringThe header of the embed
timestampfloatThe Unix timestamp (in seconds) of when the incident occurred
themestringThe theme of the embed (currently always default)
ctasstringComma-separated list of CTAs to display
learn_more_link?stringLink for the "Learn More" CTA
Safety System Notification CTA Type
ValueDescription
learn_more_linkLearn more button will be shown
policy_violation_detailSee Details button will be shown
Example Safety System Notification Embed
{
"type": "safety_system_notification",
"title": "Important message from Discord regarding your account",
"fields": [
{
"name": "client_version_message",
"value": "To see the details of this notification, please update the app or open Discord in your browser.",
"inline": false
},
{
"name": "body",
"value": "We reviewed a violation regarding our minimum age requirements policy and determined it does not violate our community guidelines. We have removed this violation from your account.",
"inline": false
},
{
"name": "icon_type",
"value": "default",
"inline": false
},
{
"name": "header",
"value": "We have removed a violation from your account",
"inline": false
},
{
"name": "timestamp",
"value": "1756658765.703625",
"inline": false
},
{
"name": "theme",
"value": "default",
"inline": false
},
{
"name": "ctas",
"value": "learn_more_link",
"inline": false
},
{
"name": "learn_more_link",
"value": "https://support.discord.com/hc/articles/18210965981847-Discord-Warning-System",
"inline": false
},
{
"name": "classification_id",
"value": "1411751868690075770",
"inline": false
}
]
}

Endpoints

Get User Safety Hub

GET/safety-hub/@me

Returns a safety hub object for the current user.

Get Suspended User Safety Hub

POST/safety-hub/suspended/@me

Returns a safety hub object for a suspended user.

JSON Params
FieldTypeDescription
tokenstringThe suspended user token

Request Classification Review

PUT/safety-hub/request-review/{classification.id}

Requests a review for a specific classification ID.

JSON Params
FieldTypeDescription
signalintegerThe appeal ingestion signal
user_inputstringAdditional user input for the appeal (max 1000 characters)
Response Body
FieldTypeDescription
appeal_idsnowflakeThe ID of the appeal

Request Classification Review for Suspended User

PUT/safety-hub/suspended/request-review/{classification.id}

Requests a review for a specific classification ID.

JSON Params
FieldTypeDescription
tokenstringThe suspended user token
signalintegerThe appeal ingestion signal
user_inputstringAdditional user input for the appeal (max 1000 characters)
Response Body
FieldTypeDescription
appeal_idsnowflakeThe ID of the appeal

Check Age Verification for Suspended User

POST/safety-hub/suspended/check-verification

Checks if the suspended user has verified their age.

JSON Params
FieldTypeDescription
tokenstringThe suspended user token
Response Body
FieldTypeDescription
successbooleanIndicates if the age verification was successful

Request Age Verification for Suspended User

POST/safety-hub/suspended/request-verification

Starts the age verification process using a third-party age verification provider. If the process is successful the user has their underage classifications invalidated.

JSON Params
FieldTypeDescription
tokenstringThe suspended user token
from_classification_id??snowflakeThe classification ID from which the request is made
Response Body
FieldTypeDescription
verification_request_idstringUUID generated by the server to track the current age verification request
verification_vendor_namestringThe third party age verification provider (currently always K_ID)
verification_webview_urlstringThe webview URL to iframe into the client