Bluesky Moderation API

Operations for content moderation reporting.

OpenAPI Specification

bluesky-moderation-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Bluesky Social Actor Profiles Moderation API
  description: "The Bluesky Social API provides programmatic access to the Bluesky social network built on the AT Protocol. \n\nThis API enables developers to:\n- Manage user profiles and preferences\n- Create, read, and interact with posts and feeds\n- Handle social graph operations (follows, blocks, mutes)\n- Process notifications and conversations\n- Moderate content and manage labels\n- Synchronize repository data\n\nAuthentication is handled via Bearer tokens. Public endpoints can be accessed directly at https://public.api.bsky.app, while authenticated requests should be made to the user's Personal Data Server (PDS).\n\nFor more information, visit the [Bluesky API Documentation](https://docs.bsky.app)."
  version: 1.0.0
  contact:
    name: Bluesky Support
    url: https://bsky.app
  license:
    name: MIT
    url: https://opensource.org/licenses/MIT
servers:
- url: https://bsky.social/xrpc
  description: Bluesky Social PDS
- url: https://public.api.bsky.app/xrpc
  description: Public Bluesky AppView API (unauthenticated endpoints)
tags:
- name: Moderation
  description: Operations for content moderation reporting.
paths:
  /xrpc/com.atproto.moderation.createReport:
    post:
      operationId: moderationCreateReport
      summary: Bluesky Submit a moderation report regarding an atproto account or record.
      description: '*To learn more about calling atproto API endpoints like this one, see the [API Hosts and Auth](/docs/advanced-guides/api-directory) guide.*


        Submit a moderation report regarding an atproto account or record. Implemented by moderation services (with PDS proxying), and requires auth.'
      tags:
      - Moderation
      x-microcks-operation:
        delay: 100
        dispatcher: FALLBACK
        dispatcherRules: ''
      security:
      - Bearer: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - reasonType
              - subject
              properties:
                reasonType:
                  $ref: '#/components/schemas/ComAtprotoModerationDefsReasonType'
                reason:
                  type: string
                  description: Additional context about the content and violation.
                  maxLength: 20000
                subject:
                  oneOf:
                  - $ref: '#/components/schemas/ComAtprotoAdminDefsRepoRef'
                  - $ref: '#/components/schemas/ComAtprotoRepoStrongRef'
            examples:
              ModerationCreateReportRequestExample:
                $ref: '#/components/examples/ModerationCreateReportRequestExample'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                required:
                - id
                - reasonType
                - subject
                - reportedBy
                - createdAt
                properties:
                  id:
                    type: integer
                  reasonType:
                    $ref: '#/components/schemas/ComAtprotoModerationDefsReasonType'
                  reason:
                    type: string
                    maxLength: 20000
                  subject:
                    oneOf:
                    - $ref: '#/components/schemas/ComAtprotoAdminDefsRepoRef'
                    - $ref: '#/components/schemas/ComAtprotoRepoStrongRef'
                  reportedBy:
                    type: string
                    format: did
                  createdAt:
                    type: string
                    format: date-time
              examples:
                ModerationCreateReportResponse200Example:
                  $ref: '#/components/examples/ModerationCreateReportResponse200Example'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    type: string
                    enum:
                    - InvalidRequest
                    - ExpiredToken
                    - InvalidToken
                  message:
                    type: string
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                type: object
                required:
                - error
                - message
                properties:
                  error:
                    const: AuthMissing
                  message:
                    type: string
components:
  schemas:
    ComAtprotoModerationDefsReasonRude:
      type: string
      format: token
      description: Rude, harassing, explicit, or otherwise unwelcoming behavior
    ComAtprotoModerationDefsReasonSpam:
      type: string
      format: token
      description: 'Spam: frequent unwanted promotion, replies, mentions'
    ComAtprotoRepoStrongRef:
      type: object
      required:
      - uri
      - cid
      properties:
        uri:
          type: string
          format: at-uri
        cid:
          type: string
          format: cid
    ComAtprotoModerationDefsReasonMisleading:
      type: string
      format: token
      description: Misleading identity, affiliation, or content
    ComAtprotoAdminDefsRepoRef:
      type: object
      required:
      - did
      properties:
        did:
          type: string
          format: did
    ComAtprotoModerationDefsReasonOther:
      type: string
      format: token
      description: 'Other: reports not falling under another report category'
    ComAtprotoModerationDefsReasonSexual:
      type: string
      format: token
      description: Unwanted or mislabeled sexual content
    ComAtprotoModerationDefsReasonViolation:
      type: string
      format: token
      description: Direct violation of server rules, laws, terms of service
    ComAtprotoModerationDefsReasonAppeal:
      type: string
      format: token
      description: 'Appeal: appeal a previously taken moderation action'
    ComAtprotoModerationDefsReasonType:
      oneOf:
      - $ref: '#/components/schemas/ComAtprotoModerationDefsReasonSpam'
      - $ref: '#/components/schemas/ComAtprotoModerationDefsReasonViolation'
      - $ref: '#/components/schemas/ComAtprotoModerationDefsReasonMisleading'
      - $ref: '#/components/schemas/ComAtprotoModerationDefsReasonSexual'
      - $ref: '#/components/schemas/ComAtprotoModerationDefsReasonRude'
      - $ref: '#/components/schemas/ComAtprotoModerationDefsReasonOther'
      - $ref: '#/components/schemas/ComAtprotoModerationDefsReasonAppeal'
  examples:
    ModerationCreateReportResponse200Example:
      summary: Successful response for moderationCreateReport
      value:
        id: 50
        reasonType: example-token
        subject:
          did: did:plc:example123abc
        reportedBy: did:plc:example123abc
        createdAt: '2024-01-15T12:00:00.000Z'
        reason: Example reason
    ModerationCreateReportRequestExample:
      summary: Example request for moderationCreateReport
      value:
        reasonType: example-token
        subject:
          did: did:plc:example123abc
        reason: Example reason
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer