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

# List findings

> Returns the findings for the project associated with your API key, most recently
qualified first.

Only findings with status `candidate` or `open` are listed. Quiet findings,
dismissed findings, and findings from sources Kapso does not read evidence from
yet are omitted. To read a quiet or dismissed finding, fetch it by ID.

Findings that belong to the same group are returned together on the same page,
so a page can hold slightly more than `limit` items.




## OpenAPI

````yaml /api/platform/v1/openapi-platform.yaml get /findings
openapi: 3.1.0
info:
  title: Kapso Platform API
  version: 0.2.0
  description: >
    Build WhatsApp messaging into your product. Manage customers, connect phone
    numbers, send broadcasts, and handle conversations.
servers:
  - url: https://api.kapso.ai/platform/v1
    description: Production
security:
  - ApiKeyAuth: []
tags:
  - name: Customers
    description: Manage customer accounts
  - name: Setup Links
    description: WhatsApp onboarding via embedded signup
  - name: Phone Numbers
    description: Connect and manage WhatsApp numbers
  - name: Webhooks
    description: Subscribe to WhatsApp events
  - name: Display Names
    description: Update WhatsApp business display names
  - name: Broadcasts
    description: |
      Send template messages at scale

      **Alpha**: This API is in alpha and subject to change
  - name: Conversations
    description: Manage conversation state
  - name: Media
    description: Upload media files for WhatsApp messaging
  - name: Users
    description: Manage project team members
  - name: Inbox Embeds
    description: Create and manage embeddable inbox access links
  - name: Webhook Deliveries
    description: View webhook delivery attempts and their status
  - name: External API Logs
    description: View logs of external API calls made by the project
  - name: Log Search
    description: Search log events across API, Meta, workflow, and webhook sources
  - name: Events
    description: Emit and query project-scoped events
  - name: Provider Models
    description: List available AI provider models
  - name: WhatsApp Flows
    description: Build interactive WhatsApp Flows for surveys and forms
  - name: Contacts
    description: Manage WhatsApp contacts
  - name: Findings
    description: Detect recurring problems in conversations and investigate them with AI
paths:
  /findings:
    get:
      tags:
        - Findings
      summary: List findings
      description: >
        Returns the findings for the project associated with your API key, most
        recently

        qualified first.


        Only findings with status `candidate` or `open` are listed. Quiet
        findings,

        dismissed findings, and findings from sources Kapso does not read
        evidence from

        yet are omitted. To read a quiet or dismissed finding, fetch it by ID.


        Findings that belong to the same group are returned together on the same
        page,

        so a page can hold slightly more than `limit` items.
      operationId: listFindings
      parameters:
        - name: limit
          in: query
          description: >
            Findings per page. Must be between 1 and 25. Any other value returns
            `400`;

            it is not clamped.
          schema:
            type: integer
            minimum: 1
            maximum: 25
            default: 20
        - name: after
          in: query
          description: >
            Opaque cursor from a previous response's `paging.next`. Cannot be
            combined

            with `before`.
          schema:
            type: string
        - name: before
          in: query
          description: >
            Opaque cursor from a previous response's `paging.previous`. Cannot
            be combined

            with `after`.
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FindingListResponse'
              example:
                data:
                  - id: 8f14e45f-ceea-467a-9e1a-1b2c3d4e5f60
                    signal_name: conversation.user_frustrated
                    direction: rising
                    status: open
                    affected_count: 42
                    affected_unit: conversations
                    last_observed_at: '2026-08-26T09:12:00.000000Z'
                    related_findings_count: 2
                    investigation:
                      status: completed
                      retryable: false
                      retry_reason: null
                      completed_at: '2026-08-26T10:04:00.000000Z'
                      error_message: null
                      cause_title: Checkout step asks for the order number twice
                      summary: >-
                        Users repeat themselves when the workflow loses the
                        order number.
                    verification: null
                paging:
                  cursors:
                    before: >-
                      eyJ2ZXJzaW9uIjoxLCJ2YWx1ZXMiOlsiMjAyNi0wOC0yNlQwOToxMjowMC4wMDAwMDBaIl19
                    after: >-
                      eyJ2ZXJzaW9uIjoxLCJ2YWx1ZXMiOlsiMjAyNi0wOC0yNVQwODowMDowMC4wMDAwMDBaIl19
                  next: >-
                    eyJ2ZXJzaW9uIjoxLCJ2YWx1ZXMiOlsiMjAyNi0wOC0yNVQwODowMDowMC4wMDAwMDBaIl19
                  previous: null
        '400':
          description: Invalid `limit` or cursor, or `after` and `before` used together
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FindingsErrorResponse'
              example:
                error: Invalid limit parameter
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          description: Findings is not enabled for this project
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FindingsErrorResponse'
              example:
                error: Findings is not enabled for this project.
                code: findings_not_enabled
components:
  schemas:
    FindingListResponse:
      type: object
      required:
        - data
        - paging
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/FindingSummary'
        paging:
          type: object
          required:
            - cursors
            - next
            - previous
          properties:
            cursors:
              type: object
              required:
                - before
                - after
              properties:
                before:
                  type:
                    - string
                    - 'null'
                  description: >-
                    Opaque cursor (Base64 encoded) for the first item on this
                    page.
                after:
                  type:
                    - string
                    - 'null'
                  description: >-
                    Opaque cursor (Base64 encoded) for the last item on this
                    page.
            next:
              type:
                - string
                - 'null'
              description: >
                Opaque cursor, not a URL. Pass it back as `after` to fetch the
                next page.

                `null` when this is the last page.
            previous:
              type:
                - string
                - 'null'
              description: >
                Opaque cursor, not a URL. Pass it back as `before` to fetch the
                previous page.

                `null` when this is the first page.
    FindingsErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          type: string
        code:
          type: string
          enum:
            - findings_not_enabled
            - finding_not_found
            - investigation_unavailable
          description: >
            Machine-readable reason. Present on both `404` cases and on an
            ineligible

            investigation. Absent on validation and pagination errors.
    FindingSummary:
      type: object
      required:
        - id
        - signal_name
        - direction
        - status
        - affected_count
        - affected_unit
        - last_observed_at
        - related_findings_count
        - investigation
        - verification
      properties:
        id:
          type: string
          format: uuid
        signal_name:
          type: string
          description: Project event name behind the finding.
          example: conversation.user_frustrated
        direction:
          type: string
          enum:
            - rising
            - falling
            - recurring
        status:
          type: string
          enum:
            - candidate
            - open
          description: >
            Listing only returns `candidate` and `open` findings. Quiet findings
            are

            reachable through `GET /findings/{finding_id}`.
        affected_count:
          type: integer
        affected_unit:
          type: string
          enum:
            - conversations
            - events
        last_observed_at:
          type: string
          format: date-time
        related_findings_count:
          type: integer
          description: Number of other findings grouped with this one.
        investigation:
          oneOf:
            - $ref: '#/components/schemas/FindingSummaryInvestigation'
            - type: 'null'
        verification:
          oneOf:
            - $ref: '#/components/schemas/FindingSummaryVerification'
            - type: 'null'
    ErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          type: string
    FindingSummaryInvestigation:
      type: object
      required:
        - status
        - retryable
        - retry_reason
        - completed_at
        - error_message
        - cause_title
        - summary
      properties:
        status:
          type: string
          enum:
            - queued
            - investigating
            - completed
            - failed
            - timed_out
        retryable:
          type: boolean
          description: Whether a new investigation can be started for this finding.
        retry_reason:
          type:
            - string
            - 'null'
          description: Why a retry is available, when it is.
        completed_at:
          type:
            - string
            - 'null'
          format: date-time
        error_message:
          type:
            - string
            - 'null'
          description: Truncated to 200 characters.
        cause_title:
          type:
            - string
            - 'null'
          description: Title of the top cause, truncated to 100 characters.
        summary:
          type:
            - string
            - 'null'
          description: Investigation summary, truncated to 200 characters.
    FindingSummaryVerification:
      type: object
      required:
        - status
        - trigger_type
        - completed_at
      properties:
        status:
          type: string
          enum:
            - monitoring
            - resolved
            - not_improved
            - dismissed
        trigger_type:
          type: string
          enum:
            - workflow_version
            - regression
            - manual
        completed_at:
          type:
            - string
            - 'null'
          format: date-time
  responses:
    UnauthorizedError:
      description: Missing or invalid API key
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key

````