https://docs.bsky.app/docs/advanced-guides/moderation

social-card-default.png

Moderation in Bluesky consists of multiple, stackable systems, including:

  1. Network takedowns which filter the content from the APIs
  2. Labels placed on content by moderation services
  3. User controls such as mutes and blocks

Developers building client applications should understand how to apply labels (#2) and user controls (#3). For more complete details, see the Labels Specification.

Labels

Labels are published by moderation services, which are either hardcoded into the application or chosen by the user. They are attached to records in the responses under the labels key.

A label is published with the following information:

{
/** DID of the actor who created this label. */
  src: string
/** AT URI of the record, repository (account), or other resource that this label applies to. */
  uri: string
/** Optionally, CID specifying the specific version of 'uri' resource this label applies to. */
  cid?: string
/** The short string name of the value or type of this label. */
  val: string
/** If true, this is a negation label, overwriting a previous label. */
  neg?: boolean
/** Timestamp when this label was created. */
  cts: string
}

Label values

The value of a label will determine its behavior. Some example label values are porn, gore, and spam.

Label values are strings. They currently must only be lowercase a-z or a dash character ^[a-z-]+$. Some of them start with !, but that can only be used by global label values.

Label values are interpreted by their definitions. Those definitions include these attributes: