> ## Documentation Index
> Fetch the complete documentation index at: https://docs.blindsight.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Population Stability Index per dimension

> Computes PSI between a baseline window (default 30 days) and a
recent window (default 7 days) for eight dimensions: verdict,
direction, source_app, model, provider, pii_category,
injection_label, blocked_reason. PSI > 0.25 is the "model is
missing a new pattern" signal.




## OpenAPI

````yaml /api-reference/openapi-runtime-security.yaml get /api/runtime-security/drift
openapi: 3.1.0
info:
  title: Blindsight Runtime Security API
  version: 1.0.0
  summary: LLM firewall — prompt-injection, PII, and agent tool-call protection.
  description: |
    Drop-in firewall for LLM traffic. Three integration modes:

      * **Scan API** — explicit `/scan/input` and `/scan/output` calls.
      * **Reverse proxy** — wire-compatible with the OpenAI and Anthropic
        SDKs; swap the SDK's `base_url` to enable scanning at the network
        boundary.
      * **Tool-call scan** — sub-millisecond regex check on agent tool
        arguments before execution.

    See `runtime-security-guide.md` for prose docs, SDK examples, and a
    walk-through of verdicts and configuration.
  contact:
    name: Blindsight Support
    url: https://blindsight.example.com/support
  license:
    name: Proprietary
servers:
  - url: https://api.blindsight.example.com
    description: Production
  - url: https://api.staging.blindsight.example.com
    description: Staging
security:
  - ApiKeyAuth: []
  - BlindsightKeyAuth: []
  - SessionCookieAuth: []
tags:
  - name: Scan
    description: Single-call scan endpoints for input, output, batch, and tool calls.
  - name: Proxy
    description: Wire-compatible reverse-proxy endpoints for OpenAI and Anthropic.
  - name: Configuration
    description: Workspace-scoped firewall settings.
  - name: Analytics
    description: Read-only analytics, event log, and drift dashboard endpoints.
  - name: Health
    description: Liveness and ECS service status.
paths:
  /api/runtime-security/drift:
    get:
      tags:
        - Analytics
      summary: Population Stability Index per dimension
      description: |
        Computes PSI between a baseline window (default 30 days) and a
        recent window (default 7 days) for eight dimensions: verdict,
        direction, source_app, model, provider, pii_category,
        injection_label, blocked_reason. PSI > 0.25 is the "model is
        missing a new pattern" signal.
      operationId: getDrift
      parameters:
        - name: baseline_days
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 365
            default: 30
        - name: recent_days
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 90
            default: 7
      responses:
        '200':
          description: Drift report
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DriftResponse'
components:
  schemas:
    DriftResponse:
      type: object
      properties:
        baseline:
          type: object
          properties:
            start:
              type: string
              format: date-time
            end:
              type: string
              format: date-time
            total_events:
              type: integer
        recent:
          type: object
          properties:
            start:
              type: string
              format: date-time
            end:
              type: string
              format: date-time
            total_events:
              type: integer
        dimensions:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              label:
                type: string
              psi:
                type: number
              severity:
                type: string
                enum:
                  - stable
                  - moderate
                  - high
              baseline_distribution:
                type: object
                additionalProperties:
                  type: number
              recent_distribution:
                type: object
                additionalProperties:
                  type: number
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: |
        Blindsight workspace API key (`ak_live_…`). Use this header for the
        scan API and the OpenAI proxy routes. The required permission
        scope is `runtime_security.scan` for scan endpoints,
        `runtime_security.view` for read-only analytics, and
        `runtime_security.manage` for configuration changes.
    BlindsightKeyAuth:
      type: apiKey
      in: header
      name: X-Blindsight-Key
      description: |
        Alternative header for Anthropic proxy callers — `x-api-key` is
        reserved for the upstream provider on those routes. Accepts an
        Blindsight API key or `Bearer <jwt>`.
    SessionCookieAuth:
      type: apiKey
      in: cookie
      name: blindsight_session
      description: In-app dashboard session — for browser callers only.

````