> ## 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.

# List Cases

> List cases for the application, newest first. Supports filtering, search, and sorting; see query parameters. Paginated with `limit`/`offset`.

export const AgentPromptAccordion = ({prompt, title = "AI Agent Integration Prompt"}) => {
  const [copied, setCopied] = React.useState(false);
  const handleCopy = e => {
    e.stopPropagation();
    if (!prompt) return;
    navigator.clipboard.writeText(prompt.trim()).then(() => {
      setCopied(true);
      setTimeout(() => setCopied(false), 2000);
    });
  };
  const agents = ["Claude Code", "Codex", "Cursor", "Devin", "Windsurf", "GitHub Copilot"];
  return <div className="didit-agent-card">
      {}
      <div className="didit-agent-titlebar">
        <div className="didit-agent-dots" aria-hidden="true">
          <span className="didit-agent-dot didit-agent-dot-red"></span>
          <span className="didit-agent-dot didit-agent-dot-yellow"></span>
          <span className="didit-agent-dot didit-agent-dot-green"></span>
        </div>
        <span className="didit-agent-filename">{title}</span>
        <button type="button" className={`didit-agent-copy ${copied ? "didit-agent-copy-copied" : ""}`} onClick={handleCopy} title="Copy prompt to clipboard" aria-label={copied ? "Copied!" : "Copy prompt to clipboard"}>
          {copied ? <>
              <svg width="13" height="13" viewBox="0 0 16 16" fill="none">
                <path d="M3 8.5l3.5 3.5L13 4" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" />
              </svg>
              <span>Copied</span>
            </> : <>
              <svg width="13" height="13" viewBox="0 0 16 16" fill="none">
                <rect x="5" y="5" width="9" height="9" rx="1.5" stroke="currentColor" strokeWidth="1.5" />
                <path d="M11 5V3.5A1.5 1.5 0 0 0 9.5 2h-6A1.5 1.5 0 0 0 2 3.5v6A1.5 1.5 0 0 0 3.5 11H5" stroke="currentColor" strokeWidth="1.5" />
              </svg>
              <span>Copy</span>
            </>}
        </button>
      </div>

      {}
      <pre className="didit-agent-body"><code>{prompt.trim()}</code></pre>

      {}
      <div className="didit-agent-footer">
        <span className="didit-agent-footer-label">Paste into</span>
        <div className="didit-agent-chips">
          {agents.map(name => <span key={name} className="didit-agent-chip">{name}</span>)}
        </div>
      </div>
    </div>;
};

<AgentPromptAccordion
  title="List Cases API Prompt"
  prompt={`List compliance cases for my Didit application through the Management API.

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

Authentication:
Use the x-api-key header with my Didit API key.

Goal:
- Retrieve cases with the same filtering the Console's Cases list offers: status, priority, source, blueprint, assignee, tag, created-date range, due-before, and overdue. Paginated with limit/offset.

Useful query params:
- status__in=OPEN,AWAITING_USER,RESOLVED (comma-separated)
- priority=LOW,MEDIUM,HIGH (comma-separated)
- source__in=MANUAL,AML_SCREENING,TRANSACTION_RULE,WORKFLOW_BUILDER
- blueprint=<uuid>, assigned_to=<uuid>, unassigned=true|false, tag=<string>
- search=<string> - matches title, case_number, tag, subject name/UUID/external ID, linked session UUID, linked transaction UUID
- date_from=YYYY-MM-DD, date_to=YYYY-MM-DD (created_at range), due_before=<ISO datetime>, overdue=true
- ordering=created_at|-created_at|due_at|-due_at (default -created_at)

Example call:
curl -X GET "https://verification.didit.me/v3/organization/{organization_id}/application/{application_id}/cases/?status__in=OPEN,AWAITING_USER&ordering=-due_at" \\
-H "x-api-key: YOUR_API_KEY"

Response shape:
{"count": int, "next": url|null, "previous": url|null, "results": [CaseListItem, ...]}
count is exact up to 100 and capped at 100 beyond that for performance - rely on next being null to detect the last page, never on count.
Each CaseListItem has uuid, case_number, title, status, resolution, priority, source, tags, subject {type, uuid, name, external_id}, assigned_to {uuid, full_name, email}, blueprint {uuid, name}, links_count, notes_count, due_at, resolved_at, created_at, updated_at.

Failure modes:
- 401 - missing or malformed x-api-key.
- 403 - API key role lacks list:cases.

Side effects: none, pure read.

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

List cases for the application, newest first by default. Every filter and sort option available in the Console's Cases list is exposed as a query parameter, including full-text `search` across the subject, tags, case number, and linked session or transaction IDs.

## Related

* [Create case](/management-api/cases/create)
* [Case analytics](/management-api/cases/statistics)
* [Cases (Console)](/console/case-management/cases)


## OpenAPI

````yaml GET /v3/organization/{organization_id}/application/{application_id}/cases/
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/:
    get:
      tags:
        - Cases
      summary: List cases
      description: >-
        List cases for the application, newest first. Supports filtering,
        search, and sorting; see query parameters. Paginated with
        `limit`/`offset`.
      operationId: list_cases
      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
            default: 50
            minimum: 1
          description: Page size. Defaults to 50.
        - name: offset
          in: query
          schema:
            type: integer
            default: 0
            minimum: 0
          description: Zero-based offset of the first record.
        - name: status__in
          in: query
          schema:
            type: string
          description: Comma-separated statuses to include, e.g. OPEN,AWAITING_USER.
        - name: priority
          in: query
          schema:
            type: string
          description: Comma-separated priorities to include.
        - name: source__in
          in: query
          schema:
            type: string
          description: Comma-separated sources to include.
        - name: blueprint
          in: query
          schema:
            type: string
            format: uuid
          description: Filter to cases on this blueprint.
        - name: assigned_to
          in: query
          schema:
            type: string
            format: uuid
          description: Filter to cases assigned to this user.
        - name: unassigned
          in: query
          schema:
            type: boolean
          description: true for unassigned cases, false for assigned cases.
        - name: tag
          in: query
          schema:
            type: string
          description: Filter to cases carrying this exact tag.
        - name: search
          in: query
          schema:
            type: string
          description: >-
            Matches title, case_number, tag, subject name/UUID/external ID,
            linked session UUID, or linked transaction UUID.
        - name: date_from
          in: query
          schema:
            type: string
            format: date
          description: Created-at lower bound (inclusive).
        - name: date_to
          in: query
          schema:
            type: string
            format: date
          description: Created-at upper bound (inclusive).
        - name: due_before
          in: query
          schema:
            type: string
            format: date-time
          description: due_at upper bound.
        - name: overdue
          in: query
          schema:
            type: boolean
          description: true to return only overdue open/awaiting-user cases.
        - name: ordering
          in: query
          schema:
            type: string
            enum:
              - created_at
              - '-created_at'
              - due_at
              - '-due_at'
            default: '-created_at'
          description: Sort order. due_at sorts nulls last.
      responses:
        '200':
          description: Paginated case list.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    type: integer
                    description: >-
                      Number of matching rows. Exact up to 100, capped at 100
                      beyond that for performance. Rely on `next` being null to
                      detect the last page.
                  next:
                    type: string
                    nullable: true
                    description: Absolute URL of the next page, or null.
                  previous:
                    type: string
                    nullable: true
                    description: Absolute URL of the previous page, or null.
                  results:
                    type: array
                    items:
                      $ref: '#/components/schemas/CaseListItem'
      x-codeSamples:
        - lang: curl
          label: curl
          source: >-
            curl -X GET
            'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/?status__in=OPEN,AWAITING_USER&ordering=-due_at'
            \
              -H 'x-api-key: YOUR_API_KEY'
        - lang: python
          label: Python
          source: |-
            import os

            import requests

            resp = requests.get(
                'https://verification.didit.me/v3/organization/11111111-2222-3333-4444-555555555555/application/aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee/cases/',
                headers={'x-api-key': os.environ['DIDIT_API_KEY']},
                params={'status__in': 'OPEN,AWAITING_USER', 'ordering': '-due_at'},
                timeout=10,
            )
            resp.raise_for_status()
            for case in resp.json()['results']:
                print(case['case_number'], case['title'], case['priority'], case['due_at'])
components:
  schemas:
    CaseListItem:
      type: object
      properties:
        uuid:
          type: string
          format: uuid
        case_number:
          type: string
          nullable: true
          description: Auto-assigned, e.g. CS-0001.
        title:
          type: string
        status:
          type: string
          enum:
            - OPEN
            - AWAITING_USER
            - RESOLVED
        resolution:
          type: string
          enum:
            - FALSE_POSITIVE
            - VALID_THREAT
          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
        due_at:
          type: string
          format: date-time
          nullable: true
        resolved_at:
          type: string
          format: date-time
          nullable: true
        created_by_email:
          type: string
          nullable: true
        created_by_name:
          type: string
          nullable: true
        blueprint:
          $ref: '#/components/schemas/CaseBlueprintSummary'
        links_count:
          type: integer
        notes_count:
          type: integer
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        application_id:
          type: string
          format: uuid
        application_name:
          type: string
        organization_id:
          type: string
          format: uuid
        organization_name:
          type: string
    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.
    CaseAssignee:
      type: object
      nullable: true
      properties:
        uuid:
          type: string
          format: uuid
        full_name:
          type: string
        email:
          type: string
          format: email
    CaseBlueprintSummary:
      type: object
      nullable: true
      properties:
        uuid:
          type: string
          format: uuid
        name:
          type: string
          maxLength: 24

````