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

# Get finding evidence

> Returns the evidence behind a finding: daily history, source events, affected
and comparison conversation IDs, co-occurring events, and the same data for any
grouped findings.

Evidence is bounded to 100 source events, 50 affected conversations,
20 comparison conversations, 20 co-occurring event types, and 25 grouped findings.
Those budgets are shared across the finding and its grouped findings, not applied
per finding. The `coverage` object reports what was returned against those limits.

When evidence cannot be read for the finding's source, this still returns `200`
with an object carrying `error` instead of the evidence fields.




## OpenAPI

````yaml /api/platform/v1/openapi-platform.yaml get /findings/{finding_id}/evidence
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/{finding_id}/evidence:
    get:
      tags:
        - Findings
      summary: Get finding evidence
      description: >
        Returns the evidence behind a finding: daily history, source events,
        affected

        and comparison conversation IDs, co-occurring events, and the same data
        for any

        grouped findings.


        Evidence is bounded to 100 source events, 50 affected conversations,

        20 comparison conversations, 20 co-occurring event types, and 25 grouped
        findings.

        Those budgets are shared across the finding and its grouped findings,
        not applied

        per finding. The `coverage` object reports what was returned against
        those limits.


        When evidence cannot be read for the finding's source, this still
        returns `200`

        with an object carrying `error` instead of the evidence fields.
      operationId: getFindingEvidence
      parameters:
        - name: finding_id
          in: path
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FindingEvidenceResponse'
              example:
                data:
                  finding:
                    id: 8f14e45f-ceea-467a-9e1a-1b2c3d4e5f60
                    source_type: project_event
                    source_key: conversation.user_frustrated
                    signal_name: conversation.user_frustrated
                    direction: rising
                    status: open
                    window_start_at: '2026-08-19T00:00:00.000000Z'
                    window_end_at: '2026-08-26T00:00:00.000000Z'
                    affected_count: 42
                    baseline_count: 11
                    current_rate: 0.18
                    baseline_rate: 0.05
                    last_observed_at: '2026-08-26T09:12:00.000000Z'
                  event_definition:
                    id: 2b3c4d5e-6f70-4819-a2b3-c4d5e6f70819
                    name: conversation.user_frustrated
                    display_name: User frustrated
                    description: The user showed frustration during the conversation.
                    property_schema: null
                  coverage:
                    source_event_count: 128
                    source_events_returned: 100
                    affected_conversations_returned: 50
                    comparison_conversations_returned: 20
                    source_event_limit: 100
                    affected_conversation_limit: 50
                    comparison_conversation_limit: 20
                    note: Source events were truncated to the limit.
                  workflow:
                    id: c0ffee00-1111-4222-8333-444455556666
                    name: Order support
                  daily_history:
                    - bucket_on: '2026-08-25'
                      event_count: 19
                      conversation_count: 17
                  source_events:
                    - id: 7d1f0e2a-3b4c-4d5e-9f60-718293a4b5c6
                      name: conversation.user_frustrated
                      occurred_at: '2026-08-25T14:02:00.000000Z'
                      conversation_id: 9e8d7c6b-5a49-4382-b1c0-fedcba987654
                      properties:
                        turn: 6
                      whatsapp_config:
                        id: 3c4d5e6f-7081-49a2-b3c4-d5e6f7081920
                        kind: whatsapp_cloud
                        name: Support line
                        business_phone_number: '+16266694464'
                        meta_phone_number_id: '123456789012345'
                      source_workflow:
                        workflow_id: c0ffee00-1111-4222-8333-444455556666
                        execution_id: 4d5e6f70-8192-4ab3-c4d5-e6f708192031
                        snapshot_id: 5e6f7081-9203-4bc4-d5e6-f70819203142
                        snapshot_version: 12
                        test_mode: false
                  affected_conversation_ids:
                    - 9e8d7c6b-5a49-4382-b1c0-fedcba987654
                  comparison_conversation_ids:
                    - 1f2e3d4c-5b6a-4798-8a90-0b1c2d3e4f50
                  co_occurring_events:
                    - name: conversation.handoff_requested
                      event_count: 14
                  grouped_findings: []
                  evidence_by_finding: []
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '404':
          description: >
            Finding not found (`finding_not_found`), or Findings is not enabled
            for this

            project (`findings_not_enabled`). Read `code` to tell them apart.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FindingsErrorResponse'
              example:
                error: Finding not found in this project.
                code: finding_not_found
components:
  schemas:
    FindingEvidenceResponse:
      type: object
      required:
        - data
      properties:
        data:
          oneOf:
            - $ref: '#/components/schemas/FindingEvidence'
            - $ref: '#/components/schemas/FindingEvidenceUnavailable'
    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.
    FindingEvidence:
      type: object
      required:
        - finding
        - event_definition
        - coverage
        - workflow
        - daily_history
        - source_events
        - affected_conversation_ids
        - comparison_conversation_ids
        - co_occurring_events
        - grouped_findings
        - evidence_by_finding
      properties:
        finding:
          $ref: '#/components/schemas/FindingEvidenceFinding'
        event_definition:
          oneOf:
            - $ref: '#/components/schemas/FindingEvidenceEventDefinition'
            - type: 'null'
        coverage:
          $ref: '#/components/schemas/FindingEvidenceCoverage'
        workflow:
          type:
            - object
            - 'null'
          properties:
            id:
              type: string
              format: uuid
            name:
              type: string
        daily_history:
          type: array
          items:
            $ref: '#/components/schemas/FindingEvidenceDailyHistoryEntry'
        source_events:
          type: array
          items:
            $ref: '#/components/schemas/FindingEvidenceSourceEvent'
        affected_conversation_ids:
          type: array
          items:
            type: string
            format: uuid
        comparison_conversation_ids:
          type: array
          description: Conversations without the signal, for comparison.
          items:
            type: string
            format: uuid
        co_occurring_events:
          type: array
          items:
            $ref: '#/components/schemas/FindingEvidenceCoOccurringEvent'
        grouped_findings:
          type: array
          items:
            $ref: '#/components/schemas/FindingEvidenceFinding'
        evidence_by_finding:
          type: array
          items:
            $ref: '#/components/schemas/FindingEvidenceGroup'
    FindingEvidenceUnavailable:
      type: object
      description: >
        Returned with `200` when evidence cannot be read for this finding's
        source.

        Tell it apart from `FindingEvidence` by the presence of `error`.
      required:
        - error
        - source_type
        - source_key
      properties:
        error:
          type: string
        source_type:
          type:
            - string
            - 'null'
        source_key:
          type:
            - string
            - 'null'
    ErrorResponse:
      type: object
      required:
        - error
      properties:
        error:
          type: string
    FindingEvidenceFinding:
      type: object
      required:
        - id
        - source_type
        - source_key
        - signal_name
        - direction
        - status
        - window_start_at
        - window_end_at
        - affected_count
        - baseline_count
        - current_rate
        - baseline_rate
        - last_observed_at
      properties:
        id:
          type: string
          format: uuid
        source_type:
          type: string
          enum:
            - project_event
        source_key:
          type: string
        signal_name:
          type: string
        direction:
          type: string
          enum:
            - rising
            - falling
            - recurring
        status:
          type: string
          enum:
            - candidate
            - open
            - quiet
        window_start_at:
          type: string
          format: date-time
        window_end_at:
          type: string
          format: date-time
        affected_count:
          type: integer
        baseline_count:
          type:
            - integer
            - 'null'
        current_rate:
          type:
            - number
            - 'null'
        baseline_rate:
          type:
            - number
            - 'null'
        last_observed_at:
          type: string
          format: date-time
    FindingEvidenceEventDefinition:
      type: object
      required:
        - id
        - name
        - display_name
        - description
        - property_schema
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        display_name:
          type:
            - string
            - 'null'
        description:
          type:
            - string
            - 'null'
        property_schema:
          type:
            - object
            - 'null'
          additionalProperties: true
    FindingEvidenceCoverage:
      type: object
      description: How much of the underlying evidence this response contains.
      required:
        - source_event_count
        - source_events_returned
        - affected_conversations_returned
        - comparison_conversations_returned
        - source_event_limit
        - affected_conversation_limit
        - comparison_conversation_limit
        - note
      properties:
        source_event_count:
          type: integer
        source_events_returned:
          type: integer
        affected_conversations_returned:
          type: integer
        comparison_conversations_returned:
          type: integer
        source_event_limit:
          type: integer
        affected_conversation_limit:
          type: integer
        comparison_conversation_limit:
          type: integer
        note:
          type:
            - string
            - 'null'
    FindingEvidenceDailyHistoryEntry:
      type: object
      required:
        - bucket_on
        - event_count
        - conversation_count
      properties:
        bucket_on:
          type: string
          format: date
        event_count:
          type: integer
        conversation_count:
          type: integer
    FindingEvidenceSourceEvent:
      type: object
      required:
        - id
        - name
        - occurred_at
        - conversation_id
        - properties
        - whatsapp_config
        - source_workflow
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
        occurred_at:
          type: string
          format: date-time
        conversation_id:
          type:
            - string
            - 'null'
          format: uuid
        properties:
          type: object
          description: Flat event properties object.
          additionalProperties:
            oneOf:
              - type: string
              - type: number
              - type: boolean
              - type: 'null'
        whatsapp_config:
          type:
            - object
            - 'null'
          properties:
            id:
              type: string
              format: uuid
            kind:
              type: string
            name:
              type:
                - string
                - 'null'
            business_phone_number:
              type:
                - string
                - 'null'
            meta_phone_number_id:
              type:
                - string
                - 'null'
        source_workflow:
          type:
            - object
            - 'null'
          properties:
            workflow_id:
              type:
                - string
                - 'null'
              format: uuid
            execution_id:
              type:
                - string
                - 'null'
              format: uuid
            snapshot_id:
              type:
                - string
                - 'null'
              format: uuid
            snapshot_version:
              type:
                - integer
                - 'null'
            test_mode:
              type:
                - boolean
                - 'null'
    FindingEvidenceCoOccurringEvent:
      type: object
      required:
        - name
        - event_count
      properties:
        name:
          type: string
        event_count:
          type: integer
    FindingEvidenceGroup:
      type: object
      description: Evidence for one finding grouped with the requested one.
      required:
        - finding
        - event_definition
        - daily_history
        - source_events
        - affected_conversation_ids
        - co_occurring_events
      properties:
        finding:
          $ref: '#/components/schemas/FindingEvidenceFinding'
        event_definition:
          oneOf:
            - $ref: '#/components/schemas/FindingEvidenceEventDefinition'
            - type: 'null'
        daily_history:
          type: array
          items:
            $ref: '#/components/schemas/FindingEvidenceDailyHistoryEntry'
        source_events:
          type: array
          items:
            $ref: '#/components/schemas/FindingEvidenceSourceEvent'
        affected_conversation_ids:
          type: array
          items:
            type: string
            format: uuid
        co_occurring_events:
          type: array
          items:
            $ref: '#/components/schemas/FindingEvidenceCoOccurringEvent'
  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

````