sanctions.io Monitoring API

Continuous monitoring entries, alerts, and result review.

OpenAPI Specification

sanctions-io-monitoring-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: sanctions.io Account Management Monitoring API
  description: The sanctions.io API provides sanctions, PEP (politically exposed persons), and criminal watchlist screening for AML compliance. It covers the Screening API (v2.3) - real-time single search, batch screening of up to 10,000 records per request, adverse media search, data source listing, and full database export - and the Monitoring API (v3.1) for continuous monitoring with alerts, plus account management (tokens, company and webhook configuration, users, plans, usage). All requests require a Bearer API token in the Authorization header; the API version is selected with the Accept header, for example "application/json; version=2.3" (the adverse media endpoint requires version=3.0). Sign up for a self-serve 7-day free trial at https://api.sanctions.io/users/signup to obtain a key.
  version: '2.3'
  contact:
    name: sanctions.io
    url: https://www.sanctions.io
    email: info@sanctions.io
  termsOfService: https://www.sanctions.io/terms-of-service
servers:
- url: https://api.sanctions.io
  description: Production
security:
- bearerAuth: []
tags:
- name: Monitoring
  description: Continuous monitoring entries, alerts, and result review.
paths:
  /monitoring/:
    get:
      operationId: getMonitoringList
      tags:
      - Monitoring
      summary: List monitoring entries
      description: Returns the list of monitored entities. Supports pagination and search, filtering by alerts, review status, and combined filters.
      parameters:
      - $ref: '#/components/parameters/acceptVersion'
      - $ref: '#/components/parameters/page'
      - name: page_size
        in: query
        required: false
        description: Number of entries per page.
        schema:
          type: integer
      - name: search
        in: query
        required: false
        description: Search term to filter monitoring entries.
        schema:
          type: string
      - name: alerts
        in: query
        required: false
        description: Filter entries by whether they have open alerts.
        schema:
          type: boolean
      - name: review_status
        in: query
        required: false
        description: Filter entries by review status.
        schema:
          type: string
      responses:
        '200':
          description: Paginated list of monitoring entries.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedList'
        '401':
          $ref: '#/components/responses/Unauthorized'
    post:
      operationId: createMonitoringEntry
      tags:
      - Monitoring
      summary: Create a monitoring entry
      description: Adds an entity to continuous monitoring. The entity is re-screened against the selected data sources as lists update, and new matches or record changes raise alerts (deliverable by webhook).
      parameters:
      - $ref: '#/components/parameters/acceptVersion'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MonitoringEntryCreate'
            example:
              min_score: 0.88
              data_source: sdn,nonsdn
              name: Walter White
              country: US
              entity_type: individual
              date_of_birth: '1956-01-01'
              external_identifier: ABC123
      responses:
        '201':
          description: Monitoring entry created.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /monitoring/{monitoring_entry_id}/:
    get:
      operationId: getMonitoringEntryDetail
      tags:
      - Monitoring
      summary: Get a monitoring entry
      description: Retrieves a monitoring entry and its current match state by ID.
      parameters:
      - $ref: '#/components/parameters/acceptVersion'
      - $ref: '#/components/parameters/monitoringEntryId'
      responses:
        '200':
          description: Monitoring entry detail.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteMonitoringEntry
      tags:
      - Monitoring
      summary: Delete a monitoring entry
      description: Removes an entity from continuous monitoring.
      parameters:
      - $ref: '#/components/parameters/acceptVersion'
      - $ref: '#/components/parameters/monitoringEntryId'
      responses:
        '204':
          description: Monitoring entry deleted.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
  /monitoring/result/{monitoring_result_id}/:
    get:
      operationId: getMonitoringResultDetail
      tags:
      - Monitoring
      summary: Get a monitoring result
      description: Retrieves the detail of a monitoring result (a match raised for a monitored entity) by ID.
      parameters:
      - $ref: '#/components/parameters/acceptVersion'
      - $ref: '#/components/parameters/monitoringResultId'
      responses:
        '200':
          description: Monitoring result detail.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      operationId: updateMonitoringResult
      tags:
      - Monitoring
      summary: Update a monitoring result
      description: Reviews or resolves a monitoring result, for example marking it as a Real Positive with reviewer notes.
      parameters:
      - $ref: '#/components/parameters/acceptVersion'
      - $ref: '#/components/parameters/monitoringResultId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                status:
                  type: string
                  example: Real Positive
                text:
                  type: string
                  example: Entity matches with sanctions record
      responses:
        '200':
          description: Monitoring result updated.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  parameters:
    monitoringEntryId:
      name: monitoring_entry_id
      in: path
      required: true
      description: The monitoring entry identifier.
      schema:
        type: string
    acceptVersion:
      name: Accept
      in: header
      required: false
      description: Selects the API version, e.g. "application/json; version=2.3". Without the header, version 1.0 is used by default.
      schema:
        type: string
        example: application/json; version=2.3
    monitoringResultId:
      name: monitoring_result_id
      in: path
      required: true
      description: The monitoring result identifier.
      schema:
        type: string
    page:
      name: page
      in: query
      required: false
      description: Page number for paginated results.
      schema:
        type: integer
        example: 1
  responses:
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Authentication credentials were not provided or are invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            detail: Authentication credentials were not provided.
  schemas:
    Error:
      type: object
      properties:
        detail:
          type: string
    PaginatedList:
      type: object
      properties:
        count:
          type: integer
        next:
          type: string
          nullable: true
        previous:
          type: string
          nullable: true
        results:
          type: array
          items:
            type: object
    MonitoringEntryCreate:
      type: object
      required:
      - name
      - min_score
      - data_source
      properties:
        min_score:
          type: number
          format: float
          example: 0.88
        data_source:
          type: string
          example: sdn,nonsdn
        name:
          type: string
          example: Walter White
        country:
          type: string
          example: US
        entity_type:
          type: string
          enum:
          - individual
          - entity
          - vessel
          - aircraft
        date_of_birth:
          type: string
          format: date
          example: '1956-01-01'
        identifier:
          type: string
        external_identifier:
          type: string
          example: ABC123
        name_match_boosting_threshold:
          type: number
          format: float
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'API token from the sanctions.io user portal, passed as "Authorization: Bearer {token}". The token may also be sent as a URL parameter, but the Authorization header is recommended.'