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

# List Cases

> List all cases



## OpenAPI

````yaml /api_schema.yaml get /api/cases/
openapi: 3.0.3
info:
  title: Sphinx API
  version: 1.0.0
  description: >
    Automated compliance API for KYC/AML workflows. Sphinx handles PEP
    screening, sanctions checks, adverse media monitoring, and document
    verification with AI-powered decisions.


    **Quick Start:**

    1. **Upload Documents** (Optional) - Required for KYB, KYC EDD, and
    transaction monitoring. Not required for AML checks (PEP, Sanctions, Adverse
    Media).

    2. **Create a Case** - The case creation endpoint combines customer details
    and checks (typically a single alert) into one request.

    3. **Receive Webhook** - Results are sent to your webhook URL when
    processing completes.


    **Authentication:** All API requests require a bearer token. Include it in
    the Authorization header: `Authorization: Token <YOUR_API_KEY>`


    **Outcomes:** Each check returns an outcome (ACCEPTED, REJECTED, or PENDING)
    with detailed reasoning, risk scores (0.0-1.0), and audit-ready case notes
    in Markdown format.


    For detailed documentation, visit
    [docs.sphinxhq.com](https://docs.sphinxhq.com).
servers:
  - url: https://app.sphinxhq.com
    description: Production server (US)
  - url: https://eu.sphinxhq.com
    description: Production server (EU)
security: []
tags:
  - name: Cases
    description: >-
      Cases represent compliance reviews for a customer. Create a case, add
      checks, then start processing.
  - name: Checks
    description: >-
      Individual compliance checks within a case (e.g., PEP, Sanctions, Document
      Verification).
  - name: Customers
    description: >-
      Customer records linked to cases. Store customer details, type
      (individual/company), and external IDs.
  - name: Documents
    description: >-
      Upload and manage documents for cases and checks. Used for identity
      verification and document-based checks.


      **Allowed file types:** PDF, PNG, JPG, CSV, XLSX, DOCX, MD.
  - name: Events
    description: >-
      Timeline of activity on cases and checks: comments, outcome changes,
      assignments, status changes, reruns, and document activity.
paths:
  /api/cases/:
    get:
      tags:
        - Cases
      summary: List Cases
      description: List all cases
      operationId: cases_list
      parameters:
        - in: query
          name: archived
          schema:
            type: boolean
          description: Return archived cases instead of active ones. Defaults to false.
        - in: query
          name: customer_id
          schema:
            type: integer
          description: Filter by customer ID
        - in: query
          name: external_id
          schema:
            type: string
          description: Filter by external ID (exact match).
        - in: query
          name: has_webhook
          schema:
            type: boolean
          description: Filter cases with webhook URLs
        - in: query
          name: is_started
          schema:
            type: boolean
          description: >-
            Filter by whether processing has started. is_started=false lists
            cases that need to be launched via the start endpoint. A case is
            considered started while processing with activity in the last 30
            minutes, and permanently once a decision has been made. Failed or
            stalled cases return to the not-started list so they can be retried
        - in: query
          name: outcome
          schema:
            type: string
            enum:
              - ACCEPTED
              - PENDING
              - REJECTED
          description: Filter by outcome
        - name: page
          required: false
          in: query
          description: A page number within the paginated result set.
          schema:
            type: integer
        - name: page_size
          required: false
          in: query
          description: Number of results to return per page.
          schema:
            type: integer
        - in: query
          name: updated_after
          schema:
            type: string
            format: date-time
          description: >-
            Only return cases updated at or after this ISO 8601 timestamp (e.g.
            2026-06-29T00:00:00Z). Use for polling cases changed since a
            previous sync. When set, results are ordered by
            most-recently-updated first.
        - in: query
          name: updated_before
          schema:
            type: string
            format: date-time
          description: Only return cases updated at or before this ISO 8601 timestamp.
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedGenericCaseReadList'
          description: ''
      security:
        - OAuthToken: []
        - tokenAuth: []
        - tokenAuth: []
components:
  schemas:
    PaginatedGenericCaseReadList:
      type: object
      required:
        - count
        - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=4
        previous:
          type: string
          nullable: true
          format: uri
          example: http://api.example.org/accounts/?page=2
        results:
          type: array
          items:
            $ref: '#/components/schemas/GenericCaseRead'
    GenericCaseRead:
      type: object
      description: Read-only serializer for GenericCase with related objects.
      properties:
        id:
          type: integer
          readOnly: true
        external_id:
          type: string
          readOnly: true
          description: >-
            External ID for the case. Auto-generated UUID if not provided.
            Stable across reruns.
        origin_url:
          type: string
          readOnly: true
          nullable: true
          description: Deprecated alias for external_id.
        customer:
          allOf:
            - $ref: '#/components/schemas/GenericCaseCustomer'
          readOnly: true
        webhook_url:
          type: string
          nullable: true
          description: Webhook sent on case completion.
          maxLength: 511
        note:
          type: string
          readOnly: true
          nullable: true
        risk_score:
          type: number
          format: double
          readOnly: true
          nullable: true
          description: Risk score (max of check risk scores for the case).
        outcome:
          enum:
            - ACCEPTED
            - REJECTED
            - PENDING
            - null
          type: string
          description: |-
            * `ACCEPTED` - Accepted
            * `REJECTED` - Rejected
            * `PENDING` - Pending
          x-spec-enum-id: 313afc0526efe9a0
          readOnly: true
          nullable: true
        is_started:
          type: boolean
          readOnly: true
        is_complete:
          type: boolean
          readOnly: true
        failed:
          type: boolean
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
        checks:
          type: array
          items:
            $ref: '#/components/schemas/NestedCheckRead'
          readOnly: true
        delete_after:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
          description: Days until deletion. -1 means never delete.
        rfi:
          type: object
          nullable: true
          properties:
            body:
              type: string
              description: The RFI message body.
            title:
              type: string
              nullable: true
              description: Optional title.
            details:
              type: object
              nullable: true
              description: Additional structured fields (e.g. product, required_documents).
          required:
            - body
          readOnly: true
        metadata:
          type: object
          nullable: true
          description: Case-specific metadata in JSON format.
        sync_platforms:
          type: object
          nullable: true
          description: >-
            External platform references for outbound sync. List of dicts, e.g.
            [{"domain": "bofi--dev.sandbox.my.salesforce.com", "id":
            "500WA..."}]
      required:
        - checks
        - created_at
        - customer
        - external_id
        - failed
        - id
        - is_complete
        - is_started
        - note
        - origin_url
        - outcome
        - rfi
        - risk_score
        - updated_at
    GenericCaseCustomer:
      type: object
      description: Nested customer serializer for GenericCase responses.
      properties:
        id:
          type: integer
          readOnly: true
        external_id:
          type: string
          nullable: true
          description: ID from the source system, for lookups.
          maxLength: 255
        full_name:
          type: string
          maxLength: 255
        customer_type:
          enum:
            - INDIVIDUAL
            - COMPANY
            - ''
            - null
          type: string
          description: |-
            * `INDIVIDUAL` - Individual
            * `COMPANY` - Company
          x-spec-enum-id: 7b9c847b681214ac
          nullable: true
      required:
        - full_name
        - id
    NestedCheckRead:
      type: object
      description: Read-only serializer for Check, for nesting inside Case.
      properties:
        id:
          type: integer
          readOnly: true
        input_details:
          type: object
          nullable: true
          description: >-
            Flexible JSON input data for this check, scoped to its own case:
            external-system data (e.g. the name and date of birth of a watchlist
            hit), ingested infractions, and enrichment-produced context — which
            may include this case's customer data such as transaction history.
            Must never contain data about other customers or cases, or any
            credentials/secrets. Note: this field is exposed via the case read
            API and webhooks.
        check_type:
          enum:
            - UBO_RESOLUTION
            - SIGNING_AUTHORITY
            - BANK_STATEMENT
            - BALANCE_SHEETS
            - INCOME_STATEMENTS
            - TAX_DOCUMENTS
            - AUTHORIZATION_FORM
            - ARTICLES_OF_ASSOCIATION
            - COMMERCIAL_EXTRACT
            - ONBOARDING_FORM
            - SHAREHOLDER_LIST
            - EDD_QUESTIONNAIRE
            - USER_RISK_REPORT
            - RISK_DECISION
            - INCORPORATION_DOCUMENT
            - MEETING_MINUTES
            - PROOF_OF_IDENTITY
            - FULL_IDV
            - SOURCE_OF_FUNDS
            - NAME_CHECK
            - PROOF_OF_ADDRESS
            - RDC_VERIFICATION
            - KYB_PROOF_OF_IDENTITY
            - KYB_BANK_STATEMENT
            - KYB_PROOF_OF_ADDRESS
            - KYB_TAX_DOCUMENTS
            - CLEAN_SCREENING
            - CRA
            - WEB_PRESENCE
            - FINANCIAL_LICENSE
            - AML_POLICY
            - WOLFSBERG_QUESTIONNAIRE
            - PEP
            - SANCTIONS
            - ADVERSE_MEDIA
            - BLACKLIST
            - NAME_MATCHING
            - MULTI_WATCHLIST
            - PEP_SEARCH
            - SANCTIONS_SEARCH
            - ADVERSE_MEDIA_SEARCH
            - BLACKLIST_SEARCH
            - DOCUMENT_FRAUD
            - TM_CRYPTO
            - TM_CLASSIC
            - IDV
            - TRANSACTION_MONITORING
            - INFO_BLOCK
            - ''
            - null
          type: string
          description: |-
            * `UBO_RESOLUTION` - UBO Resolution
            * `SIGNING_AUTHORITY` - Signing Authority
            * `BANK_STATEMENT` - Bank Statements
            * `BALANCE_SHEETS` - Balance Sheets
            * `INCOME_STATEMENTS` - Income Statements
            * `TAX_DOCUMENTS` - Tax Documents
            * `AUTHORIZATION_FORM` - Authorization Form
            * `ARTICLES_OF_ASSOCIATION` - Articles of Association
            * `COMMERCIAL_EXTRACT` - Commercial Extract
            * `ONBOARDING_FORM` - Onboarding Form
            * `SHAREHOLDER_LIST` - Shareholder List
            * `EDD_QUESTIONNAIRE` - Enhanced Due Diligence Questionnaire
            * `USER_RISK_REPORT` - User Risk Report
            * `RISK_DECISION` - Risk Decision
            * `INCORPORATION_DOCUMENT` - Incorporation Document
            * `MEETING_MINUTES` - Meeting Minutes
            * `PROOF_OF_IDENTITY` - Proof of Identity
            * `FULL_IDV` - Full IDV
            * `SOURCE_OF_FUNDS` - Source of Funds
            * `NAME_CHECK` - Name Check
            * `PROOF_OF_ADDRESS` - Proof of Address
            * `RDC_VERIFICATION` - RDC Verification
            * `KYB_PROOF_OF_IDENTITY` - Proof of Identity
            * `KYB_BANK_STATEMENT` - Bank Statements
            * `KYB_PROOF_OF_ADDRESS` - Proof of Address
            * `KYB_TAX_DOCUMENTS` - Tax Documents
            * `CLEAN_SCREENING` - Clean Screening
            * `CRA` - Customer Risk Assessment
            * `WEB_PRESENCE` - Web Presence
            * `FINANCIAL_LICENSE` - Financial License
            * `AML_POLICY` - AML Policy Documents
            * `WOLFSBERG_QUESTIONNAIRE` - Wolfsberg Questionnaire
            * `PEP` - PEP
            * `SANCTIONS` - Sanctions
            * `ADVERSE_MEDIA` - Adverse Media
            * `BLACKLIST` - Blacklist
            * `NAME_MATCHING` - Name Matching
            * `MULTI_WATCHLIST` - Multi-Watchlist
            * `PEP_SEARCH` - PEP Search
            * `SANCTIONS_SEARCH` - Sanctions Search
            * `ADVERSE_MEDIA_SEARCH` - Adverse Media Search
            * `BLACKLIST_SEARCH` - Blacklist Search
            * `DOCUMENT_FRAUD` - Document Fraud
            * `TM_CRYPTO` - Transaction Monitoring (Crypto)
            * `TM_CLASSIC` - Transaction Monitoring (Fiat)
            * `IDV` - IDV
            * `TRANSACTION_MONITORING` - Transaction Monitoring
            * `INFO_BLOCK` - Information
          x-spec-enum-id: fdcfec228d86d419
          nullable: true
        risk_score:
          type: number
          format: double
          readOnly: true
          nullable: true
          description: >-
            Risk score (total or average of CRA field scores, depending on
            aggregation method).
        title:
          type: string
          readOnly: true
          nullable: true
          description: >-
            Short title generated by the check. For a watchlist hit, this
            typically corresponds to the name of the hit indvidual.
        note:
          type: string
          readOnly: true
          nullable: true
          description: 1-2 paragraph case note for audit purposes, Markdown format
        reasoning:
          type: array
          items:
            type: string
          readOnly: true
          nullable: true
          description: >-
            Detailed reasoning steps, in Markdown. More comprehensive than the
            note.
        outcome:
          enum:
            - ACCEPTED
            - REJECTED
            - PENDING
            - null
          type: string
          x-spec-enum-id: 313afc0526efe9a0
          readOnly: true
          nullable: true
          description: |-
            The agent's decision.

            * `ACCEPTED` - Accepted
            * `REJECTED` - Rejected
            * `PENDING` - Pending
        status:
          enum:
            - PENDING
            - DECIDING
            - DECIDED
            - SUBMITTED
            - SKIPPED
            - ERROR
          type: string
          description: |-
            * `PENDING` - Pending
            * `DECIDING` - Deciding
            * `DECIDED` - Decided
            * `SUBMITTED` - Submitted
            * `SKIPPED` - Skipped
            * `ERROR` - Error
          x-spec-enum-id: 06dfc845bd26379d
          readOnly: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
        delete_after:
          type: integer
          maximum: 2147483647
          minimum: -2147483648
          description: Days until deletion. -1 means never delete.
      required:
        - created_at
        - id
        - note
        - outcome
        - reasoning
        - risk_score
        - status
        - title
        - updated_at
  securitySchemes:
    OAuthToken:
      type: http
      scheme: bearer
      description: >-
        OAuth2 access token obtained from POST /api/oauth/token/ using client
        credentials.
    tokenAuth:
      type: http
      scheme: bearer

````