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

# Update Case

> Update the case's title, priority, due date, tags, or owning review team. Send only the fields you want to change; fields you omit keep their value. `tags` replaces the whole tag list. `team` takes the uuid of an active review team of this application (list them with `GET .../cases/teams/`), or null to clear the team. Requires a full-access API key, or `write:cases` for a console member: a key with restricted access gets 403. Logs PRIORITY_CHANGED, DUE_DATE_CHANGED, TAG_ADDED, TAG_REMOVED and TEAM_CHANGED events as applicable; a title change is saved without a timeline event. Returns the updated case.



Update Case API Prompt
        Copy prompt to clipboard



      
      

\<pre>

\`Update a case's title, priority, due date, tags or owning review team through the Management API.

Endpoint:
PATCH https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/

Authentication:
Use the x-api-key header with my Didit API key.
Cases endpoints need a full-access API key: a key with restricted access gets 403.

Request body (partial: send only the fields to change, omitted fields keep their value):
\{"priority": "HIGH", "due_at": "2026-11-01T00:00:00Z", "team": "<review-team-uuid>"}
\- title - string, at most 255 characters.
\- priority - LOW | MEDIUM | HIGH.
\- due_at - ISO 8601 datetime, or null to clear the deadline.
\- tags - array of strings. Replaces the whole tag list, so send every tag the case should keep.
\- team - uuid of an active review team of this application, or null to clear the team.

Getting a team uuid:
GET https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/cases/teams/ (same full-access key; a console member token needs list:cases) returns results[] with uuid, name and is_active. Only a team with is_active true is accepted.

Behavior:
\- Logs PRIORITY_CHANGED, DUE_DATE_CHANGED, TAG_ADDED, TAG_REMOVED and TEAM_CHANGED events on the case when the value changes.
\- A title change is saved without a timeline event.
\- A TEAM_CHANGED event records the previous and new team as {uuid, name} in its metadata.
\- Changing the team does not reassign the case.

Example call:
curl -X PATCH "https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/" \
-H "x-api-key: YOUR_API_KEY" -H "Content-Type: application/json" \
-d '{"team": "<review-team-uuid>"}'

Response 200: the updated CaseDetail, the same shape as get case, including team {uuid, name} or null.

Failure modes:
\- 400: a field failed validation, keyed by field. Example: {"team": ["Choose an active team of this application."]} when the team is inactive, deleted, or belongs to another application.
\- 401/403: auth/permission errors. A key with restricted access gets 403 {"detail": "This API key has no access to this endpoint."} (cases need a full-access key). A console member token needs write:cases.
\- 404: case not found in this application.

For the full integration shape, see /integration/integration-prompt.`

\</pre>



      
      

Paste into

Change a case's title, priority, due date, tags or owning review team.
Send only the fields you want to change; the fields you omit keep their value.
`tags` replaces the whole tag list, so send every tag the case should keep.## Change the owning teamSet `team` to the uuid of an active review team of this application, or to `null` to clear it.
To find a team's uuid, call `GET /v3/organization/{organization_id}/application/{application_id}/cases/teams/` and read `results[].uuid`.
A team that is inactive, deleted, or belongs to another application returns `400` with `{"team": ["Choose an active team of this application."]}`.
Each change adds a `TEAM_CHANGED` event to the case timeline with the previous and new team.
Changing the team does not change who the case is assigned to.## Timeline eventsA change to the priority, due date, tags or team adds a `PRIORITY_CHANGED`, `DUE_DATE_CHANGED`, `TAG_ADDED`, `TAG_REMOVED` or `TEAM_CHANGED` event to the case timeline.
A title change is saved without a timeline event.
Sending a field with its current value adds no event.## AccessCases endpoints need a full-access [API key](/console/api-keys.md).
A key with restricted access receives `403`.
A console member token needs `write:cases`.## Related- [Get case](/management-api/cases/get.md)
- [List cases](/management-api/cases/list.md)
- [Assignment and review teams (Console)](/console/case-management/assignment.md#teams)


## OpenAPI

````yaml PATCH /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/
openapi: 3.0.0
info:
  version: 3.0.0
  title: Didit Verification API
  description: Identity verification API. Authenticate with x-api-key header.
servers:
  - url: https://verification.didit.me
security: []
tags: []
paths:
  /v3/organization/{organization_id}/application/{application_id}/cases/{case_uuid}/:
    patch:
      tags:
        - Cases
      summary: Update case
      description: >-
        Update the case's title, priority, due date, tags, or owning review
        team. Send only the fields you want to change; fields you omit keep
        their value. `tags` replaces the whole tag list. `team` takes the uuid
        of an active review team of this application (list them with `GET
        .../cases/teams/`), or null to clear the team. Requires a full-access
        API key, or `write:cases` for a console member: a key with restricted
        access gets 403. Logs PRIORITY_CHANGED, DUE_DATE_CHANGED, TAG_ADDED,
        TAG_REMOVED and TEAM_CHANGED events as applicable; a title change is
        saved without a timeline event. Returns the updated case.
      operationId: update_case
      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: case_uuid
          in: path
          required: true
          schema:
            type: string
            format: uuid
            example: c1a5e000-0000-4000-8000-000000000001
          description: Case UUID.
      requestBody:
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                title:
                  type: string
                  maxLength: 255
                  description: New case title.
                priority:
                  type: string
                  enum:
                    - LOW
                    - MEDIUM
                    - HIGH
                due_at:
                  type: string
                  format: date-time
                  nullable: true
                  description: New deadline. Send null to clear it.
                tags:
                  type: array
                  items:
                    type: string
                  description: The complete tag list. It replaces the current tags.
                team:
                  type: string
                  format: uuid
                  nullable: true
                  description: >-
                    UUID of the review team that owns the case. It must be an
                    active team of this application. Send null to clear the
                    team.
            examples:
              Change priority and deadline:
                value:
                  priority: HIGH
                  due_at: '2026-11-01T00:00:00Z'
              Move the case to a team:
                value:
                  team: 3fa85f64-5717-4562-b3fc-2c963f66afa6
              Clear the team:
                value:
                  team: null
      responses:
        '200':
          description: Updated case.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CaseDetail'
        '400':
          description: >-
            A field failed validation. The body is keyed by field name. `team`
            is rejected when it is not an active review team of this
            application.
          content:
            application/json:
              schema:
                type: object
                additionalProperties:
                  type: array
                  items:
                    type: string
              examples:
                Team not active in this application:
                  value:
                    team:
                      - Choose an active team of this application.
                Invalid priority:
                  value:
                    priority:
                      - '"URGENT" is not a valid choice.'
        '403':
          description: >-
            The API key belongs to another application, or it is a key with
            restricted access: Cases endpoints need a full-access key. A console
            member token needs `write:cases`.
          content:
            application/json:
              examples:
                Restricted API Key:
                  summary: API key with restricted access
                  value:
                    detail: This API key has no access to this endpoint.
                Missing Privilege:
                  summary: >-
                    Console member without write:cases, or a key of another
                    application
                  value:
                    detail: You do not have permission to perform this action.
        '404':
          description: Case not found in this application.
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              example:
                detail: No Case matches the given query.
      security:
        - ApiKeyAuth: []
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X PATCH
            'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/'
            \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"priority": "HIGH", "due_at": "2026-08-01T00:00:00Z"}'
        - lang: curl
          label: curl (change team)
          source: >-
            curl -X PATCH
            'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/c1a5e000-0000-4000-8000-000000000001/'
            \
              -H 'x-api-key: YOUR_API_KEY' \
              -H 'Content-Type: application/json' \
              -d '{"team": "3fa85f64-5717-4562-b3fc-2c963f66afa6"}'
components:
  schemas:
    CaseDetail:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        case_number:
          type: string
          nullable: true
        title:
          type: string
        status:
          type: string
          enum:
            - OPEN
            - AWAITING_USER
            - RESOLVED
        resolution:
          type: string
          enum:
            - FALSE_POSITIVE
            - VALID_THREAT
            - INCONCLUSIVE
            - REQUIREMENTS_NOT_MET
            - REQUIREMENTS_SATISFIED
          nullable: true
        resolution_notes:
          type: string
          nullable: true
        priority:
          type: string
          enum:
            - LOW
            - MEDIUM
            - HIGH
        source:
          type: string
          enum:
            - MANUAL
            - AML_SCREENING
            - TRANSACTION_RULE
            - WORKFLOW_BUILDER
        tags:
          type: array
          items:
            type: string
        subject:
          $ref: '#/components/schemas/CaseSubject'
        assigned_to:
          $ref: '#/components/schemas/CaseAssignee'
        assigned_at:
          type: string
          format: date-time
          nullable: true
        team:
          $ref: '#/components/schemas/CaseTeamSummary'
        due_at:
          type: string
          format: date-time
          nullable: true
        resolved_at:
          type: string
          format: date-time
          nullable: true
        resolved_by_email:
          type: string
          nullable: true
        pending_resolution:
          type: object
          nullable: true
          description: >-
            Set only while a 4-eyes resolution is staged on the checker
            blueprint, awaiting approve or reject-approval.
          properties:
            resolution:
              type: string
              enum:
                - FALSE_POSITIVE
                - VALID_THREAT
                - INCONCLUSIVE
                - REQUIREMENTS_NOT_MET
                - REQUIREMENTS_SATISFIED
            resolution_notes:
              type: string
              nullable: true
            maker_email:
              type: string
              format: email
              nullable: true
              description: >-
                Email of the officer who submitted the resolution. Null when an
                API key submitted it: that resolution has no recorded maker, so
                approve and reject-approval return 403 for every caller.
            maker_name:
              type: string
              nullable: true
            maker_user_id:
              type: string
              format: uuid
              nullable: true
              description: >-
                Member user uuid of the officer who submitted the resolution.
                Null when an API key submitted it. That member cannot be named
                as `checker`.
            maker_blueprint_id:
              type: string
              format: uuid
            staged_at:
              type: string
              format: date-time
        checker:
          $ref: '#/components/schemas/CaseChecker'
        metadata:
          type: object
        blueprint:
          $ref: '#/components/schemas/CaseBlueprintDetail'
        notes:
          type: array
          items:
            $ref: '#/components/schemas/CaseNote'
          description: Newest 50 notes.
        events:
          type: array
          items:
            $ref: '#/components/schemas/CaseEvent'
          description: Newest 100 events.
        links:
          type: array
          items:
            $ref: '#/components/schemas/CaseLink'
        links_count:
          type: integer
        notes_count:
          type: integer
        checklist_items:
          type: array
          items:
            $ref: '#/components/schemas/CaseChecklistItem'
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
    CaseSubject:
      type: object
      nullable: true
      description: The single user or business the case is anchored to.
      properties:
        type:
          type: string
          enum:
            - user
            - business
        uuid:
          type: string
          format: uuid
        name:
          type: string
        external_id:
          type: string
          nullable: true
          description: The subject's vendor_data.
        country:
          type: string
          nullable: true
          description: >-
            Three-letter country code of the subject (ISO 3166-1 alpha-3), or
            null when it is not known. For a business, its country of
            incorporation. For a person, the issuing country of an identity
            document from their verifications; a person with documents from
            several countries shows one of them, and ICAO document codes such as
            `XXA` can appear.
          example: ESP
        portrait:
          type: string
          format: uri
          nullable: true
          description: >-
            Short-lived signed URL of the person's portrait image. Always null
            for a business, and null for a person without a portrait. The URL
            expires, so download the image when you read the case instead of
            storing the URL.
    CaseAssignee:
      type: object
      nullable: true
      properties:
        uuid:
          type: string
          format: uuid
        full_name:
          type: string
        email:
          type: string
          format: email
    CaseTeamSummary:
      type: object
      nullable: true
      description: >-
        The review team that owns the case, or null when no team owns it.
        Routing sets it when a routing rule places the case with one of its
        teams. Change or clear it with `PATCH .../cases/{case_uuid}/` (`team`).
      properties:
        uuid:
          type: string
          format: uuid
        name:
          type: string
    CaseChecker:
      type: object
      nullable: true
      description: >-
        The member named to approve or reject the pending resolution. Set only
        while a four-eyes resolution waits on a named checker. Null when nothing
        is pending, while the pending resolution waits on the checker queue, and
        once the resolution is approved, rejected, or returned for a new review
        because the evidence changed.
      properties:
        member_uuid:
          type: string
          format: uuid
          description: >-
            The member's user uuid: the value you pass as `checker` when you
            resolve the case.
        name:
          type: string
          nullable: true
          description: The member's full name, or null when it is not known.
        email:
          type: string
          format: email
    CaseBlueprintDetail:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        name:
          type: string
          maxLength: 24
        description:
          type: string
          nullable: true
        assignment_method:
          type: string
          enum:
            - MANUAL
            - AUTOMATIC
        assignee_pool:
          type: array
          items:
            type: string
            format: uuid
        max_active_cases:
          type: integer
          nullable: true
        escalation_enabled:
          type: boolean
        transfer_enabled:
          type: boolean
        require_resolution_note:
          type: boolean
        is_active:
          type: boolean
        preset_key:
          type: string
          nullable: true
        created_at:
          type: string
          format: date-time
        escalation_blueprint:
          type: string
          format: uuid
          nullable: true
        escalation_blueprint_name:
          type: string
          nullable: true
        four_eyes_checker_blueprint:
          type: string
          format: uuid
          nullable: true
        four_eyes_checker_blueprint_name:
          type: string
          nullable: true
        content_config:
          type: object
          description: >-
            The six togglable sections that drive which tabs and fields appear
            on the case page. Unknown sections or keys are rejected.
          properties:
            checklist:
              type: object
              properties:
                enabled:
                  type: boolean
                optional:
                  type: boolean
                  description: >-
                    When true, a case can be resolved with incomplete checklist
                    items.
                items:
                  type: array
                  items:
                    type: object
                    properties:
                      label:
                        type: string
                        maxLength: 255
                      order:
                        type: integer
            aml_control:
              type: object
              properties:
                enabled:
                  type: boolean
                financial:
                  type: boolean
                identity:
                  type: boolean
            identity:
              type: object
              properties:
                enabled:
                  type: boolean
                personal_information:
                  type: boolean
                applicant_tags:
                  type: boolean
                contact_information:
                  type: boolean
                risk_overview:
                  type: boolean
                poi_documents:
                  type: boolean
                poa_documents:
                  type: boolean
            verifications:
              type: object
              properties:
                enabled:
                  type: boolean
                summary:
                  type: boolean
            reporting:
              type: object
              properties:
                enabled:
                  type: boolean
                fiu_reports:
                  type: boolean
            financial:
              type: object
              properties:
                enabled:
                  type: boolean
                payment_methods:
                  type: boolean
                transactions:
                  type: boolean
        creation_sources:
          type: array
          description: Connectors currently routing new cases into this blueprint.
          items:
            type: object
            properties:
              kind:
                type: string
                enum:
                  - aml
                  - rule
                  - workflow
              id:
                type: string
              name:
                type: string
        receives_escalation_from:
          type: array
          description: Other blueprints whose Escalation target points at this one.
          items:
            type: object
            properties:
              id:
                type: string
              name:
                type: string
        updated_at:
          type: string
          format: date-time
        version:
          type: integer
          readOnly: true
        default_deadline_hours:
          type: integer
          nullable: true
          minimum: 1
          maximum: 8760
    CaseNote:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        comment:
          type: string
        actor_email:
          type: string
          format: email
          nullable: true
        actor_name:
          type: string
          nullable: true
        mentioned_emails:
          type: array
          items:
            type: string
            format: email
        is_internal:
          type: boolean
        attachments:
          type: array
          items:
            type: object
            properties:
              s3_key:
                type: string
              filename:
                type: string
              file_size:
                type: integer
              url:
                type: string
                format: uri
        tags:
          type: array
          items:
            type: string
        created_at:
          type: string
          format: date-time
    CaseEvent:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        event_type:
          type: string
          enum:
            - CREATED
            - STATUS_CHANGED
            - ASSIGNED
            - UNASSIGNED
            - RESOLVED
            - REOPENED
            - LINK_ADDED
            - LINK_REMOVED
            - NOTE_ADDED
            - NOTE_PINNED
            - NOTE_UNPINNED
            - PRIORITY_CHANGED
            - DUE_DATE_CHANGED
            - TAG_ADDED
            - TAG_REMOVED
            - ESCALATED
            - TRANSFERRED
            - CHECKLIST_COMPLETED
            - REPORT_CREATED
            - REPORT_FINALIZED
            - SUBMITTED_FOR_APPROVAL
            - APPROVAL_GRANTED
            - APPROVAL_REJECTED
            - ENTITY_ACTION
            - APPROVAL_INVALIDATED
            - CUSTOMER_REQUEST
            - STAGE_CHANGED
            - TEAM_CHANGED
            - CHECKER_ASSIGNED
            - CHECKER_UNASSIGNED
        actor_email:
          type: string
          format: email
          nullable: true
        actor_name:
          type: string
          nullable: true
        previous_status:
          type: string
          enum:
            - OPEN
            - AWAITING_USER
            - RESOLVED
          nullable: true
        new_status:
          type: string
          enum:
            - OPEN
            - AWAITING_USER
            - RESOLVED
          nullable: true
        metadata:
          type: object
        created_at:
          type: string
          format: date-time
    CaseLink:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        linked_entity_type:
          type: string
          enum:
            - session
            - business_session
            - transaction
          nullable: true
        linked_entity_uuid:
          type: string
          format: uuid
          nullable: true
        linked_entity_summary:
          type: object
          nullable: true
          description: >-
            session_id/session_number/status for session and business_session
            links; uuid/txn_id/status for transaction links.
        created_at:
          type: string
          format: date-time
    CaseChecklistItem:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        label:
          type: string
          maxLength: 255
        is_completed:
          type: boolean
        completed_by:
          type: string
          format: email
          nullable: true
        completed_at:
          type: string
          format: date-time
          nullable: true
        order:
          type: integer
  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.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.