ComplyAdvantage Searches API

Create and manage AML screening searches against sanctions, PEP, warning, and adverse media data.

OpenAPI Specification

complyadvantage-searches-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: ComplyAdvantage Case Management Searches API
  description: 'The ComplyAdvantage REST API screens people and companies against sanctions and watchlists, warnings and fitness-probity lists, politically exposed persons (PEPs and RCAs), and adverse media, and keeps them under ongoing monitoring. It covers searches (create, list, retrieve, update, delete, certificates, entities), monitored searches (start/stop monitoring, differences, acknowledge), case management (assignment, match status, risk level, comments, tags), and account users. Authentication is an api key sent as "Authorization: Token YOUR_API_KEY"; keys are generated inside the ComplyAdvantage web platform, so an account is required. Standard contracts allow 600 API calls per minute (sandbox 300), with 429 responses requiring exponential backoff (start at 2 seconds, cap at 60). Webhook events match_status_updated, search_status_updated, and monitored_search_updated push changes to your systems. This document was modeled from the public API reference at docs.complyadvantage.com; the endpoint paths are documented publicly, while request/response schemas are summarized rather than exhaustive.'
  version: '1.0'
  contact:
    name: ComplyAdvantage
    url: https://complyadvantage.com
servers:
- url: https://api.complyadvantage.com
  description: EU (default)
- url: https://api.us.complyadvantage.com
  description: US
- url: https://api.ap.complyadvantage.com
  description: APAC
security:
- apiKeyAuth: []
tags:
- name: Searches
  description: Create and manage AML screening searches against sanctions, PEP, warning, and adverse media data.
paths:
  /searches:
    post:
      operationId: createSearch
      tags:
      - Searches
      summary: Create a new search
      description: Screens a search term (person, company, organisation, vessel, or aircraft name) against ComplyAdvantage's sanctions, warning, fitness-probity, PEP, and adverse media data, returning matching entities as hits. Supports fuzziness, exact match mode, filters, tags, client references, and pagination via offset/limit.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchRequest'
      responses:
        '200':
          description: The created search with matching hits.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchEnvelope'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '429':
          $ref: '#/components/responses/TooManyRequests'
    get:
      operationId: listSearches
      tags:
      - Searches
      summary: List previous searches
      description: Lists previous searches with filtering (match status, risk level, assignee, searcher, created date range, client reference, tags, monitored state), sorting, and pagination.
      parameters:
      - name: search_term
        in: query
        schema:
          type: string
      - name: client_ref
        in: query
        schema:
          type: string
      - name: monitored
        in: query
        schema:
          type: string
      - name: page
        in: query
        schema:
          type: integer
      - name: per_page
        in: query
        schema:
          type: integer
      responses:
        '200':
          description: A paginated list of searches.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchListEnvelope'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /searches/{id}:
    get:
      operationId: getSearch
      tags:
      - Searches
      summary: Retrieve a search
      description: Retrieves the overview of a single search by ID or ref.
      parameters:
      - $ref: '#/components/parameters/SearchId'
      responses:
        '200':
          description: The search overview.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchEnvelope'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: updateSearch
      tags:
      - Searches
      summary: Update search details
      description: Updates case-management details of a search - the assigned user, match status (no_match, false_positive, potential_match, true_positive, true_positive_approve, true_positive_reject), and risk level (low, medium, high, unknown).
      parameters:
      - $ref: '#/components/parameters/SearchId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                match_status:
                  type: string
                risk_level:
                  type: string
                assignee_id:
                  type: integer
      responses:
        '200':
          description: The updated search.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchEnvelope'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteSearch
      tags:
      - Searches
      summary: Delete a search
      description: Deletes a search from your account.
      parameters:
      - $ref: '#/components/parameters/SearchId'
      responses:
        '200':
          description: Deletion confirmation.
        '404':
          $ref: '#/components/responses/NotFound'
  /searches/{id}/details:
    get:
      operationId: getSearchDetails
      tags:
      - Searches
      summary: Retrieve full search results
      description: Retrieves the full detail of a search including all hits, each with the matched entity document (name, aka, associates, sources, types, fields, media), match types, score, whitelisting, and match status.
      parameters:
      - $ref: '#/components/parameters/SearchId'
      responses:
        '200':
          description: Full search details with hits.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchEnvelope'
        '404':
          $ref: '#/components/responses/NotFound'
  /searches/{ref}/entities/{entity_provider}:
    get:
      operationId: getSearchEntities
      tags:
      - Searches
      summary: Retrieve paginated search entities
      description: Retrieves the matching entities of a search in paginated form.
      parameters:
      - name: ref
        in: path
        required: true
        schema:
          type: string
        description: The search ref.
      - name: entity_provider
        in: path
        required: true
        schema:
          type: string
        description: The entity data provider.
      responses:
        '200':
          description: Paginated entities for the search.
        '404':
          $ref: '#/components/responses/NotFound'
  /searches/{id}/certificate:
    get:
      operationId: getSearchCertificate
      tags:
      - Searches
      summary: Download search certificate
      description: Downloads a PDF certificate of the search for audit and recordkeeping purposes.
      parameters:
      - $ref: '#/components/parameters/SearchId'
      responses:
        '200':
          description: The search certificate PDF.
          content:
            application/pdf:
              schema:
                type: string
                format: binary
        '404':
          $ref: '#/components/responses/NotFound'
  /searches/{id}/entities:
    patch:
      operationId: updateSearchEntities
      tags:
      - Searches
      summary: Update entity details on a search
      description: Updates details of matched entities within a search - whitelist status (suppress recurring false positives), risk level, and per-entity match status.
      parameters:
      - $ref: '#/components/parameters/SearchId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                entities:
                  type: array
                  items:
                    type: string
                is_whitelisted:
                  type: boolean
                match_status:
                  type: string
                risk_level:
                  type: string
      responses:
        '200':
          description: The updated entities.
        '404':
          $ref: '#/components/responses/NotFound'
  /searches/references:
    post:
      operationId: createSearchReferences
      tags:
      - Searches
      summary: Create search references
      description: Creates search references for tracking searches by your own identifiers.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
      responses:
        '200':
          description: The created references.
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    SearchEnvelope:
      type: object
      properties:
        status:
          type: string
        content:
          type: object
          properties:
            data:
              $ref: '#/components/schemas/Search'
    SearchListEnvelope:
      type: object
      properties:
        status:
          type: string
        content:
          type: object
          properties:
            data:
              type: array
              items:
                $ref: '#/components/schemas/Search'
    SearchRequest:
      type: object
      required:
      - search_term
      properties:
        search_term:
          description: The name to screen, either a string (max 255 chars) or an object with last_name (required), first_name, and middle_names.
          oneOf:
          - type: string
          - type: object
            properties:
              first_name:
                type: string
              middle_names:
                type: string
              last_name:
                type: string
        client_ref:
          type: string
          description: Your internal reference; enables client-scoped whitelisting.
        fuzziness:
          type: number
          minimum: 0.0
          maximum: 1.0
          description: Match strictness from 0.0 (exact) to 1.0 (broad).
        exact_match:
          type: boolean
          description: Disables fuzzy matching when true; overrides fuzziness.
        search_profile:
          type: string
          description: ID of a predefined search profile configuration.
        offset:
          type: integer
          default: 0
        limit:
          type: integer
          default: 100
          maximum: 100
        share_url:
          type: integer
          enum:
          - 0
          - 1
          description: Include a publicly shareable URL in the response.
        tags:
          type: object
          description: Key-value pairs using pre-configured tag names.
        filters:
          type: object
          properties:
            types:
              type: array
              items:
                type: string
              description: Risk categories such as sanction, warning, fitness-probity, pep, pep-class-1 through pep-class-4, adverse-media, and adverse media subcategories.
            birth_year:
              type: integer
            remove_deceased:
              type: string
              enum:
              - '0'
              - '1'
            country_codes:
              type: array
              items:
                type: string
              description: ISO 3166-1 alpha-2 codes; applies to PEP entities.
            entity_type:
              type: string
              enum:
              - person
              - company
              - organisation
              - vessel
              - aircraft
    Hit:
      type: object
      properties:
        doc:
          type: object
          description: The matched entity - id, name, entity_type, aka, associates, sources, types, fields, and media references.
        match_types:
          type: array
          items:
            type: string
        match_types_details:
          type: object
        score:
          type: number
        is_whitelisted:
          type: boolean
        match_status:
          type: string
    Search:
      type: object
      properties:
        id:
          type: integer
        ref:
          type: string
        search_term:
          type: string
        match_status:
          type: string
        risk_level:
          type: string
        total_hits:
          type: integer
        total_matches:
          type: integer
        created_at:
          type: string
        updated_at:
          type: string
        tags:
          type: array
          items:
            type: object
        share_url:
          type: string
        hits:
          type: array
          items:
            $ref: '#/components/schemas/Hit'
  responses:
    Unauthorized:
      description: Missing or invalid API key.
    NotFound:
      description: The search or resource was not found.
    TooManyRequests:
      description: Rate limit exceeded (600 calls/minute on standard contracts, 300 on sandbox). Retry with exponential backoff starting at 2 seconds, capped at 60 seconds.
  parameters:
    SearchId:
      name: id
      in: path
      required: true
      schema:
        type: string
      description: The search ID or ref.
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: 'API key sent as: Authorization: Token YOUR_API_KEY. Keys are generated in the ComplyAdvantage web platform.'