Didit Case Assignment API

The Case Assignment API from Didit — 6 operation(s) for case assignment.

Operations 10

GET /v3/organization/{organization_id}/application/{application_id}/cases/teams/ List review teams #
POST /v3/organization/{organization_id}/application/{application_id}/cases/teams/ Create review team #
GET /v3/organization/{organization_id}/application/{application_id}/cases/routing-rules/{record_uuid}/ Retrieve routing rule #
PATCH /v3/organization/{organization_id}/application/{application_id}/cases/routing-rules/{record_uuid}/ Update routing rule #
GET /v3/organization/{organization_id}/application/{application_id}/cases/routing-rules/ List routing rules #
POST /v3/organization/{organization_id}/application/{application_id}/cases/routing-rules/ Create routing rule #
GET /v3/organization/{organization_id}/application/{application_id}/cases/teams/{record_uuid}/ Retrieve review team #
PATCH /v3/organization/{organization_id}/application/{application_id}/cases/teams/{record_uuid}/ Update review team #
POST /v3/organization/{organization_id}/application/{application_id}/cases/routing-rules/preview/ Test case routing #
GET /v3/organization/{organization_id}/application/{application_id}/cases/reviewers/ List eligible case reviewers #

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/didit:didit-case-assignment-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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

didit-case-assignment-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 3.0.0
  title: Didit Verification Case Assignment API
  description: Identity verification API. Authenticate with x-api-key header.
servers:
- url: https://verification.didit.me
tags:
- name: Case Assignment
paths:
  /v3/organization/{organization_id}/application/{application_id}/cases/teams/:
    get:
      summary: List review teams
      description: Requires `list:cases` for the requested application.
      operationId: list_case_teams
      tags:
      - Case Assignment
      parameters:
      - name: organization_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Organization UUID.
      - name: application_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Application UUID.
      - name: limit
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 50
      - name: offset
        in: query
        schema:
          type: integer
          minimum: 0
          maximum: 1000000
          default: 0
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/CaseReviewTeam'
                  count:
                    type: integer
                    description: Matching count, capped at 100. Follow next to continue beyond the cap.
                  next:
                    type:
                    - string
                    - 'null'
                  previous:
                    type:
                    - string
                    - 'null'
        '400':
          description: Invalid input.
        '403':
          description: Insufficient permission.
    post:
      summary: Create review team
      description: Requires `write:cases` for the requested application.
      operationId: create_case_teams
      tags:
      - Case Assignment
      parameters:
      - name: organization_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Organization UUID.
      - name: application_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Application UUID.
      responses:
        '201':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CaseReviewTeam'
        '400':
          description: Invalid input.
        '403':
          description: Insufficient permission.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CaseReviewTeamCreate'
  /v3/organization/{organization_id}/application/{application_id}/cases/routing-rules/{record_uuid}/:
    get:
      summary: Retrieve routing rule
      description: Requires `read:cases` for the requested application.
      operationId: retrieve_case_routing_rules
      tags:
      - Case Assignment
      parameters:
      - name: organization_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Organization UUID.
      - name: application_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Application UUID.
      - name: record_uuid
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CaseRoutingRule'
        '400':
          description: Invalid input.
        '403':
          description: Insufficient permission.
        '404':
          description: Record not found in this application.
    patch:
      summary: Update routing rule
      description: Requires `write:cases` for the requested application.
      operationId: update_case_routing_rules
      tags:
      - Case Assignment
      parameters:
      - name: organization_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Organization UUID.
      - name: application_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Application UUID.
      - name: record_uuid
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CaseRoutingRule'
        '400':
          description: Invalid input.
        '403':
          description: Insufficient permission.
        '404':
          description: Record not found in this application.
        '409':
          description: The routing rule changed since expected_version. Review the latest rule before retrying.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CaseRoutingRuleUpdate'
  /v3/organization/{organization_id}/application/{application_id}/cases/routing-rules/:
    get:
      summary: List routing rules
      description: Requires `list:cases` for the requested application.
      operationId: list_case_routing_rules
      tags:
      - Case Assignment
      parameters:
      - name: organization_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Organization UUID.
      - name: application_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Application UUID.
      - name: limit
        in: query
        schema:
          type: integer
          minimum: 1
          maximum: 100
          default: 50
      - name: offset
        in: query
        schema:
          type: integer
          minimum: 0
          maximum: 1000000
          default: 0
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/CaseRoutingRule'
                  count:
                    type: integer
                    description: Matching count, capped at 100. Follow next to continue beyond the cap.
                  next:
                    type:
                    - string
                    - 'null'
                  previous:
                    type:
                    - string
                    - 'null'
        '400':
          description: Invalid input.
        '403':
          description: Insufficient permission.
    post:
      summary: Create routing rule
      description: Requires `write:cases` for the requested application. Set publish=false to create an unpublished draft; Publish creates its first live version. Discarding a never-published draft deletes it.
      operationId: create_case_routing_rules
      tags:
      - Case Assignment
      parameters:
      - name: organization_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Organization UUID.
      - name: application_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Application UUID.
      responses:
        '201':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CaseRoutingRule'
        '400':
          description: Invalid input.
        '403':
          description: Insufficient permission.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CaseRoutingRuleCreate'
  /v3/organization/{organization_id}/application/{application_id}/cases/teams/{record_uuid}/:
    get:
      summary: Retrieve review team
      description: Requires `read:cases` for the requested application.
      operationId: retrieve_case_teams
      tags:
      - Case Assignment
      parameters:
      - name: organization_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Organization UUID.
      - name: application_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Application UUID.
      - name: record_uuid
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CaseReviewTeam'
        '400':
          description: Invalid input.
        '403':
          description: Insufficient permission.
        '404':
          description: Record not found in this application.
    patch:
      summary: Update review team
      description: Requires `write:cases` for the requested application.
      operationId: update_case_teams
      tags:
      - Case Assignment
      parameters:
      - name: organization_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Organization UUID.
      - name: application_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Application UUID.
      - name: record_uuid
        in: path
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CaseReviewTeam'
        '400':
          description: Invalid input.
        '403':
          description: Insufficient permission.
        '404':
          description: Record not found in this application.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CaseReviewTeamUpdate'
  /v3/organization/{organization_id}/application/{application_id}/cases/routing-rules/preview/:
    post:
      summary: Test case routing
      description: Requires `read:cases` for the requested application. Evaluates current rules or a supplied draft against current reviewer access, availability, skills and capacity. It does not save the draft or reserve reviewer capacity.
      operationId: preview_case_routing
      tags:
      - Case Assignment
      parameters:
      - name: organization_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Organization UUID.
      - name: application_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Application UUID.
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CaseRoutingPreview'
        '400':
          description: Invalid input.
        '403':
          description: Insufficient permission.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CaseRoutingPreviewRequest'
  /v3/organization/{organization_id}/application/{application_id}/cases/reviewers/:
    get:
      summary: List eligible case reviewers
      description: Requires `list:cases` for the requested application.
      operationId: list_case_reviewers
      tags:
      - Case Assignment
      parameters:
      - name: organization_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Organization UUID.
      - name: application_id
        in: path
        required: true
        schema:
          type: string
          format: uuid
        description: Application UUID.
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  results:
                    type: array
                    items:
                      type: object
                      properties:
                        user_id:
                          type: string
                          format: uuid
                        email:
                          type: string
                          format: email
                        name:
                          type: string
        '400':
          description: Invalid input.
        '403':
          description: Insufficient permission.
        '503':
          description: Reviewer access could not be verified. Retry later.
components:
  schemas:
    CaseRoutingPreview:
      type: object
      properties:
        rule_uuid:
          type:
          - string
          - 'null'
          format: uuid
        rule_name:
          type:
          - string
          - 'null'
        rule_version:
          type:
          - integer
          - 'null'
        blueprint_uuid:
          type:
          - string
          - 'null'
          format: uuid
        team_uuid:
          type:
          - string
          - 'null'
          format: uuid
        assignee_user_id:
          type:
          - string
          - 'null'
          format: uuid
        reason:
          type: string
        candidates:
          type: array
          items:
            type: object
            properties:
              user_id:
                type: string
                format: uuid
              eligible:
                type: boolean
              active_cases:
                type:
                - integer
                - 'null'
              reason:
                type:
                - string
                - 'null'
        matched_rules:
          type: array
          items:
            type: object
            properties:
              uuid:
                type: string
                format: uuid
              name:
                type: string
              priority:
                type: integer
    CaseReviewTeamUpdate:
      type: object
      properties:
        name:
          type: string
          maxLength: 100
        description:
          type: string
          maxLength: 500
        members:
          type: array
          items:
            $ref: '#/components/schemas/CaseReviewTeamMember'
          maxItems: 250
        is_active:
          type: boolean
    CaseReviewTeamCreate:
      type: object
      properties:
        name:
          type: string
          maxLength: 100
        description:
          type: string
          maxLength: 500
        members:
          type: array
          items:
            $ref: '#/components/schemas/CaseReviewTeamMember'
          maxItems: 250
        is_active:
          type: boolean
      required:
      - name
      - members
    CaseRoutingCondition:
      type: object
      properties:
        field:
          type: string
          enum:
          - source
          - priority
          - tags
        operator:
          type: string
          enum:
          - equals
          - in
          - contains
        value:
          oneOf:
          - type: string
          - type: array
            items:
              type: string
      required:
      - field
      - operator
      - value
      description: Source and priority support equals or in with supported values. Tags support contains with one non-empty tag.
    CaseRoutingPreviewRequest:
      type: object
      properties:
        source:
          type: string
          enum:
          - MANUAL
          - AML_SCREENING
          - TRANSACTION_RULE
          - WORKFLOW_BUILDER
        priority:
          type: string
          enum:
          - LOW
          - MEDIUM
          - HIGH
          default: MEDIUM
        tags:
          type: array
          items:
            type: string
            maxLength: 64
          maxItems: 50
        rule_uuid:
          type: string
          format: uuid
        draft:
          $ref: '#/components/schemas/CaseRoutingRuleCreate'
      required:
      - source
    CaseRoutingRuleUpdate:
      type: object
      properties:
        name:
          type: string
          maxLength: 100
        description:
          type: string
          maxLength: 500
        priority:
          type: integer
          minimum: 0
        conditions:
          type: array
          items:
            $ref: '#/components/schemas/CaseRoutingCondition'
          maxItems: 20
        required_skills:
          type: array
          items:
            type: string
            maxLength: 64
          maxItems: 25
        blueprint:
          type: string
          format: uuid
        team:
          type:
          - string
          - 'null'
          format: uuid
        is_active:
          type: boolean
        expected_version:
          type: integer
          minimum: 1
          writeOnly: true
          description: Version opened by the editor. When supplied, stale writes return 409 without changing the rule.
    CaseReviewTeam:
      type: object
      properties:
        name:
          type: string
          maxLength: 100
        description:
          type: string
          maxLength: 500
        members:
          type: array
          items:
            $ref: '#/components/schemas/CaseReviewTeamMember'
          maxItems: 250
        is_active:
          type: boolean
        uuid:
          type: string
          format: uuid
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
    CaseReviewTeamMember:
      type: object
      properties:
        user_id:
          type: string
          format: uuid
        availability:
          type: string
          enum:
          - available
          - unavailable
          default: available
        capacity:
          type: integer
          minimum: 1
          maximum: 1000
          default: 10
        skills:
          type: array
          items:
            type: string
            maxLength: 64
          maxItems: 25
        available_from:
          type:
          - string
          - 'null'
          format: date-time
        available_until:
          type:
          - string
          - 'null'
          format: date-time
      required:
      - user_id
    CaseRoutingRule:
      type: object
      properties:
        name:
          type: string
          maxLength: 100
        description:
          type: string
          maxLength: 500
        priority:
          type: integer
          minimum: 0
        conditions:
          type: array
          items:
            $ref: '#/components/schemas/CaseRoutingCondition'
          maxItems: 20
        required_skills:
          type: array
          items:
            type: string
            maxLength: 64
          maxItems: 25
        blueprint:
          type: string
          format: uuid
        team:
          type:
          - string
          - 'null'
          format: uuid
        is_active:
          type: boolean
        uuid:
          type: string
          format: uuid
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
        version:
          type: integer
          readOnly: true
        blueprint_name:
          type: string
          readOnly: true
        team_name:
          type:
          - string
          - 'null'
          readOnly: true
    CaseRoutingRuleCreate:
      type: object
      properties:
        name:
          type: string
          maxLength: 100
        description:
          type: string
          maxLength: 500
        priority:
          type: integer
          minimum: 0
        conditions:
          type: array
          items:
            $ref: '#/components/schemas/CaseRoutingCondition'
          maxItems: 20
        required_skills:
          type: array
          items:
            type: string
            maxLength: 64
          maxItems: 25
        blueprint:
          type: string
          format: uuid
        team:
          type:
          - string
          - 'null'
          format: uuid
        is_active:
          type: boolean
        publish:
          type: boolean
          writeOnly: true
          description: Set false to save a never-published draft. The record remains inactive at version 0 until the draft is explicitly published. Omitting this field preserves immediate creation for existing integrations.
      required:
      - name
      - conditions
      - blueprint
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
      description: 'Your application''s API key, from Developers -> API keys in the Business Console. The primary key has full access. A named key can be scoped: none, read or write per resource, limited to some workflows or to approved sessions, to a list of IP addresses, and to an expiry date. 401 means the key is missing, wrong, revoked or expired; 403 means the key has no access to this resource or action, or the request came from an address outside its IP list; 404 on a session route means the session is outside the key''s workflows or statuses. A key without media access receives image, video and PDF URLs as null, and a key without sessions write receives session links and tokens as null. See https://docs.didit.me/console/api-keys.'
    TransactionTokenAuth:
      type: apiKey
      in: header
      name: X-Transaction-Token
      description: Short-lived scoped token minted by your backend via POST /v3/transactions/sdk-token/. Used by the Didit SDKs on the device-facing /v1/transactions/ endpoints.
    SessionTokenAuth:
      type: apiKey
      in: header
      name: Session-Token
      description: Short-lived token returned in the `session_token` field of POST /v3/session/. Used by the hosted verification flow (and custom sandbox UIs) to call session-scoped endpoints on behalf of the verifying user, without your server-side API key.
    BearerAuth:
      type: http
      scheme: bearer
      description: The application's client-credentials access token.
    CaseRequestToken:
      type: apiKey
      in: header
      name: X-Case-Request-Token
      description: Request-specific credential from the secure link. Grants access only to this request.