ComplyAdvantage Users API

List the users on your ComplyAdvantage account so searches and cases can be assigned to the right analyst by user ID.

OpenAPI Specification

complyadvantage-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: ComplyAdvantage 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.
  - name: Monitored Searches
    description: Ongoing monitoring of searches, change differences, and acknowledgement.
  - name: Case Management
    description: Comments, tags, assignment, and match status workflow on searches.
  - name: Users
    description: Users on your ComplyAdvantage account.
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
        - Case Management
      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
        - Case Management
      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'
  /searches/{id}/monitors:
    get:
      operationId: getMonitoredSearch
      tags:
        - Monitored Searches
      summary: Get monitored search details
      description: Retrieves the monitoring configuration and state of a search.
      parameters:
        - $ref: '#/components/parameters/SearchId'
      responses:
        '200':
          description: Monitoring details for the search.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MonitorEnvelope'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      operationId: updateMonitoredSearch
      tags:
        - Monitored Searches
      summary: Update monitored search details
      description: Starts or stops ongoing monitoring for a search.
      parameters:
        - $ref: '#/components/parameters/SearchId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                is_monitored:
                  type: boolean
      responses:
        '200':
          description: The updated monitoring state.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MonitorEnvelope'
        '404':
          $ref: '#/components/responses/NotFound'
  /searches/{id}/search-profile:
    patch:
      operationId: updateSearchProfile
      tags:
        - Monitored Searches
      summary: Update the associated search profile
      description: Updates which search profile a monitored search uses.
      parameters:
        - $ref: '#/components/parameters/SearchId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                search_profile:
                  type: string
      responses:
        '200':
          description: The updated search.
        '404':
          $ref: '#/components/responses/NotFound'
  /searches/{id}/monitor/differences:
    get:
      operationId: getMonitoredSearchDifferences
      tags:
        - Monitored Searches
      summary: Retrieve monitored search changes
      description: >-
        Retrieves what changed on a monitored search - new, updated, and
        removed matching entities since the last acknowledgement.
      parameters:
        - $ref: '#/components/parameters/SearchId'
      responses:
        '200':
          description: The differences since last acknowledgement.
        '404':
          $ref: '#/components/responses/NotFound'
  /searches/{id}/monitor/acknowledge:
    post:
      operationId: acknowledgeMonitoredSearchChanges
      tags:
        - Monitored Searches
      summary: Acknowledge monitored search changes
      description: Acknowledges the pending changes on a monitored search.
      parameters:
        - $ref: '#/components/parameters/SearchId'
      responses:
        '200':
          description: Acknowledgement confirmation.
        '404':
          $ref: '#/components/responses/NotFound'
  /searches/{id}/comments:
    post:
      operationId: createSearchComment
      tags:
        - Case Management
      summary: Create a comment on a search
      description: Adds an analyst comment to a search for case audit trails.
      parameters:
        - $ref: '#/components/parameters/SearchId'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                comment:
                  type: string
      responses:
        '200':
          description: The created comment.
        '404':
          $ref: '#/components/responses/NotFound'
    get:
      operationId: listSearchComments
      tags:
        - Case Management
      summary: Retrieve comments on a search
      description: Lists the comments attached to a search.
      parameters:
        - $ref: '#/components/parameters/SearchId'
      responses:
        '200':
          description: The comments on the search.
        '404':
          $ref: '#/components/responses/NotFound'
  /searches/{id}/tags/{tag_name}:
    delete:
      operationId: detachSearchTag
      tags:
        - Case Management
      summary: Detach a tag from a search
      description: Removes a key-value tag from a search.
      parameters:
        - $ref: '#/components/parameters/SearchId'
        - name: tag_name
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Tag removal confirmation.
        '404':
          $ref: '#/components/responses/NotFound'
  /users:
    get:
      operationId: listUsers
      tags:
        - Users
      summary: List account users
      description: Lists the users on your ComplyAdvantage account for search and case assignment.
      responses:
        '200':
          description: The users on the account.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                  content:
                    type: object
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  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.'
  parameters:
    SearchId:
      name: id
      in: path
      required: true
      schema:
        type: string
      description: The search ID or ref.
  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.
  schemas:
    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]
    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'
    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
    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'
    MonitorEnvelope:
      type: object
      properties:
        status:
          type: string
        content:
          type: object
          properties:
            is_monitored:
              type: boolean