Riot Breaches API

The Breaches API from Riot — 3 operation(s) for breaches.

Operations 3

GET /v1/breaches List breaches #
GET /v1/breaches/statistics Get breaches statistics #
GET /v1/breaches/{breach_id}/compromised-employees List compromised employees for a breach #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/riot-breaches-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

riot-breaches-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  description: '## Overview

    The Riot API is a (mostly) RESTful API.'
  title: Riot Breaches API
  version: v1
servers:
- url: https://public-api.tryriot.com/
security:
- apiKeyAuth: []
tags:
- name: Breaches
paths:
  /v1/breaches:
    get:
      description: 'Lists all breaches for a workspace with their affected employees count and status.


        **Scopes required:**

        - breaches:read'
      operationId: breaches_get_paginated_FAUE35Y
      parameters:
      - in: header
        name: x-item-limit
        required: false
        schema:
          default: 50
          deprecated: true
          maximum: 100
          minimum: 1
          type: integer
      - in: header
        name: x-next-cursor
        required: false
        schema:
          deprecated: true
          type: string
      - in: query
        name: cursor
        required: false
        schema:
          type: string
      - in: query
        name: limit
        required: false
        schema:
          default: 50
          maximum: 100
          minimum: 1
          type: integer
      - in: query
        name: workspace_id
        required: true
        schema:
          format: uuid
          type: string
      - explode: false
        in: query
        name: status
        required: false
        schema:
          items:
            $ref: '#/components/schemas/BreachStatusSchema'
          minItems: 1
          type: array
          uniqueItems: true
        style: form
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  data:
                    items:
                      $ref: '#/components/schemas/PaginatedBreachPayload'
                    type: array
                  metadata:
                    properties:
                      limit:
                        type: integer
                      next_cursor:
                        type:
                        - string
                        - 'null'
                    required:
                    - next_cursor
                    - limit
                    type: object
                required:
                - data
                type: object
          description: Breaches list
          headers:
            link:
              description: 'Link header with rel="next" pointing to the next page URL. Format: `<url>; rel="next"`'
              required: false
              schema:
                type: string
            x-next-cursor:
              description: Pagination cursor for the next page
              required: false
              schema:
                deprecated: true
                type: string
        '401':
          $ref: '#/components/responses/UnauthorizedErrorResponse'
        '403':
          $ref: '#/components/responses/ForbiddenErrorResponse'
        '422':
          $ref: '#/components/responses/UnprocessableContentErrorResponse'
        '429':
          $ref: '#/components/responses/RateLimitExceededErrorResponse'
      security:
      - apiKeyAuth:
        - breaches:read
      summary: List breaches
      tags:
      - Breaches
      x-riot-team-ownership: simulation
  /v1/breaches/statistics:
    get:
      description: 'Retrieves statistics about breaches for a given workspace, including impacted employees count, acknowledged employees count, and warned employees count.


        **Scopes required:**

        - breaches:read'
      operationId: breaches_get_statistics_FAUE35Y
      parameters:
      - in: query
        name: workspace_id
        required: true
        schema:
          format: uuid
          type: string
      - in: query
        name: breached_after
        required: false
        schema:
          format: date-time
          type: string
      - in: query
        name: breached_before
        required: false
        schema:
          format: date-time
          type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  data:
                    $ref: '#/components/schemas/BreachesStatisticsPayload'
                required:
                - data
                type: object
          description: Breaches statistics
        '401':
          $ref: '#/components/responses/UnauthorizedErrorResponse'
        '403':
          $ref: '#/components/responses/ForbiddenErrorResponse'
        '422':
          $ref: '#/components/responses/UnprocessableContentErrorResponse'
        '429':
          $ref: '#/components/responses/RateLimitExceededErrorResponse'
      security:
      - apiKeyAuth:
        - breaches:read
      summary: Get breaches statistics
      tags:
      - Breaches
      x-riot-team-ownership: simulation
  /v1/breaches/{breach_id}/compromised-employees:
    get:
      description: 'Lists all employees affected by a specific breach, ordered by their compromise date in descending order (most recent first).

        The breach notification and acknowledgement dates, and breached email accounts are provided.


        **Scopes required:**

        - breaches:read'
      operationId: breaches_get_breach_compromised_employees_FAUE35Y
      parameters:
      - in: header
        name: x-item-limit
        required: false
        schema:
          default: 50
          deprecated: true
          maximum: 100
          minimum: 1
          type: integer
      - in: header
        name: x-next-cursor
        required: false
        schema:
          deprecated: true
          type: string
      - in: query
        name: cursor
        required: false
        schema:
          type: string
      - in: query
        name: limit
        required: false
        schema:
          default: 50
          maximum: 100
          minimum: 1
          type: integer
      - in: path
        name: breach_id
        required: true
        schema:
          format: uuid
          type: string
      - in: query
        name: workspace_id
        required: true
        schema:
          format: uuid
          type: string
      - in: query
        name: warned
        required: false
        schema:
          type: boolean
      - in: query
        name: acknowledged
        required: false
        schema:
          type: boolean
      responses:
        '200':
          content:
            application/json:
              schema:
                properties:
                  data:
                    items:
                      $ref: '#/components/schemas/PaginatedBreachCompromisedEmployeePayload'
                    type: array
                  metadata:
                    properties:
                      limit:
                        type: integer
                      next_cursor:
                        type:
                        - string
                        - 'null'
                    required:
                    - next_cursor
                    - limit
                    type: object
                required:
                - data
                type: object
          description: Compromised employees list for a breach
          headers:
            link:
              description: 'Link header with rel="next" pointing to the next page URL. Format: `<url>; rel="next"`'
              required: false
              schema:
                type: string
            x-next-cursor:
              description: Pagination cursor for the next page
              required: false
              schema:
                deprecated: true
                type: string
        '401':
          $ref: '#/components/responses/UnauthorizedErrorResponse'
        '403':
          $ref: '#/components/responses/ForbiddenErrorResponse'
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BreachNotFoundErrorResponse'
          description: no description
        '422':
          $ref: '#/components/responses/UnprocessableContentErrorResponse'
        '429':
          $ref: '#/components/responses/RateLimitExceededErrorResponse'
      security:
      - apiKeyAuth:
        - breaches:read
      summary: List compromised employees for a breach
      tags:
      - Breaches
      x-riot-team-ownership: simulation
components:
  schemas:
    ForbiddenErrorResponse:
      additionalProperties: false
      properties:
        errors:
          items:
            additionalProperties: false
            properties:
              code:
                const: forbidden
              detail:
                type: string
              source:
                properties:
                  pointer:
                    type: string
                required:
                - pointer
                type: object
              title:
                const: Forbidden
            required:
            - title
            - source
            - detail
            type: object
          type: array
      required:
      - errors
      title: ForbiddenErrorResponse
      type: object
    UnprocessableContentErrorResponse:
      additionalProperties: false
      properties:
        errors:
          items:
            additionalProperties: false
            properties:
              code:
                type: string
              detail:
                type: string
              source:
                properties:
                  pointer:
                    type: string
                required:
                - pointer
                type: object
              title:
                type: string
            required:
            - title
            - source
            - detail
            type: object
          type: array
      required:
      - errors
      title: UnprocessableContentErrorResponse
      type: object
    BreachStatusSchema:
      description: The breach is considered resolved when all impacted employees have acknowledged the breach
      enum:
      - active
      - resolved
      title: BreachStatusSchema
      type: string
    BreachedAccountPayload:
      additionalProperties: false
      properties:
        compromised_at:
          description: When the email was compromised
          format: date-time
          type: string
        email:
          description: The compromised email address
          examples:
          - john.doe@example.com
          type: string
      required:
      - compromised_at
      - email
      title: BreachedAccountPayload
      type: object
    RateLimitExceededErrorResponse:
      additionalProperties: false
      properties:
        errors:
          items:
            additionalProperties: false
            properties:
              code:
                const: too_many_requests
              detail:
                type: string
              source:
                properties:
                  pointer:
                    type: string
                required:
                - pointer
                type: object
              title:
                const: Too Many Requests
            required:
            - title
            - source
            - detail
            type: object
          type: array
      required:
      - errors
      title: RateLimitExceededErrorResponse
      type: object
    EmployeeOverviewSchema:
      additionalProperties: false
      properties:
        id:
          description: UUID of the employee
          format: uuid
          type: string
        name:
          description: Name of the employee
          examples:
          - John Doe
          type:
          - string
          - 'null'
        primary_email_address:
          description: Email address
          examples:
          - john.doe@tryriot.com
          format: email
          type:
          - string
          - 'null'
        username:
          description: Username of the employee
          type:
          - string
          - 'null'
      required:
      - primary_email_address
      - username
      - name
      - id
      title: EmployeeOverviewSchema
      type: object
    BreachesStatisticsPayload:
      additionalProperties: false
      properties:
        acknowledged_employees_count:
          description: Number of employees that have acknowledged breaches
          type: integer
        breaches_count:
          description: Total number of breaches
          type: integer
        impacted_employees_count:
          description: Number of employees impacted by breaches
          type: integer
        warned_employees_count:
          description: Number of employees warned about a breach
          type: integer
      required:
      - breaches_count
      - acknowledged_employees_count
      - warned_employees_count
      - impacted_employees_count
      title: BreachesStatisticsPayload
      type: object
    PaginatedBreachCompromisedEmployeePayload:
      additionalProperties: false
      properties:
        acknowledged_at:
          description: When the employee acknowledged the breach
          format: date-time
          type:
          - string
          - 'null'
        breached_accounts:
          description: List of compromised email accounts
          items:
            $ref: '#/components/schemas/BreachedAccountPayload'
          type: array
        compromised_at:
          description: When the employee was last compromised for the breach domain
          format: date-time
          type: string
        employee:
          $ref: '#/components/schemas/EmployeeOverviewSchema'
        warned_at:
          description: When the employee was warned about the breach
          format: date-time
          type:
          - string
          - 'null'
      required:
      - breached_accounts
      - acknowledged_at
      - warned_at
      - compromised_at
      - employee
      title: PaginatedBreachCompromisedEmployeePayload
      type: object
    UnauthorizedErrorResponse:
      additionalProperties: false
      properties:
        errors:
          items:
            additionalProperties: false
            properties:
              code:
                const: unauthorized
              detail:
                type: string
              source:
                properties:
                  pointer:
                    type: string
                required:
                - pointer
                type: object
              title:
                const: Unauthorized
            required:
            - title
            - source
            - detail
            type: object
          type: array
      required:
      - errors
      title: UnauthorizedErrorResponse
      type: object
    BreachNotFoundErrorResponse:
      additionalProperties: false
      properties:
        error:
          const: Breach not found
      required:
      - error
      title: BreachNotFoundErrorResponse
      type: object
    BreachCriticalitySchema:
      enum:
      - high
      - low
      - medium
      title: BreachCriticalitySchema
      type: string
    PaginatedBreachPayload:
      additionalProperties: false
      properties:
        acknowledged:
          description: Number of employees that have acknowledged this breach
          type: integer
        created_at:
          format: date-time
          type: string
        criticality:
          $ref: '#/components/schemas/BreachCriticalitySchema'
        domain:
          description: The affected domain
          examples:
          - shadow.tech
          type: string
        id:
          format: uuid
          type: string
        impacted:
          description: Number of employees impacted by this breach
          type: integer
        last_breached_at:
          description: When the latest breach occurred
          format: date-time
          type: string
        name:
          description: The name of the breach
          examples:
          - Shadow
          type: string
        status:
          $ref: '#/components/schemas/BreachStatusSchema'
        updated_at:
          format: date-time
          type: string
        warned:
          description: Number of employees that have been warned about this breach
          type: integer
      required:
      - acknowledged
      - warned
      - impacted
      - criticality
      - status
      - name
      - domain
      - last_breached_at
      - updated_at
      - created_at
      - id
      title: PaginatedBreachPayload
      type: object
  responses:
    UnauthorizedErrorResponse:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/UnauthorizedErrorResponse'
      description: Missing API key or the key is invalid
    RateLimitExceededErrorResponse:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/RateLimitExceededErrorResponse'
      description: Rate limit is exceeded
    ForbiddenErrorResponse:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ForbiddenErrorResponse'
      description: Requested resource cannot be accessed
    UnprocessableContentErrorResponse:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/UnprocessableContentErrorResponse'
      description: Unprocessable content
  securitySchemes:
    apiKeyAuth:
      in: header
      name: x-api-key
      type: apiKey