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

# List narratives

> See the storylines AI platforms build around the brand for one Scan, each with the brand's standing where available. Filter by the classification vocabulary, platform, region, and scanId. Each narrative's id opens its claims.



## OpenAPI

````yaml /openapi/public-api-v1.json get /v1/sites/{siteId}/reports/narratives
openapi: 3.0.0
info:
  title: Onsomble API
  description: >-
    Connect Onsomble to your reporting and operational workflows. Read
    discoverability results or start a Scan from another system.
  version: 1.0.0
  contact: {}
servers:
  - url: https://api.onsomble.ai
    description: Production
security:
  - apiKeyAuth: []
tags:
  - name: Sites
    description: Sites connected to your account.
  - name: Clients
    description: Clients managed by agency accounts.
  - name: Scans
    description: Scan history, status, and controls.
  - name: Reports
    description: AI discoverability results.
paths:
  /v1/sites/{siteId}/reports/narratives:
    get:
      tags:
        - Reports
      summary: List narratives
      description: >-
        See the storylines AI platforms build around the brand for one Scan,
        each with the brand's standing where available. Filter by the
        classification vocabulary, platform, region, and scanId. Each
        narrative's id opens its claims.
      operationId: getNarratives
      parameters:
        - name: siteId
          required: true
          in: path
          schema:
            type: string
        - name: promptId
          required: false
          in: query
          description: Repeat to limit to these prompts (promptIds).
          schema:
            type: array
            items:
              type: string
              format: uuid
        - name: tag
          required: false
          in: query
          description: Repeat to limit to prompts with these tags.
          schema:
            example:
              - pricing
            type: array
            items:
              type: string
        - name: category
          required: false
          in: query
          description: Repeat to limit to prompts in these categories.
          schema:
            example:
              - comparison
            type: array
            items:
              type: string
        - name: product
          required: false
          in: query
          description: Repeat to limit to prompts about these products.
          schema:
            example:
              - Car Insurance
            type: array
            items:
              type: string
        - name: persona
          required: false
          in: query
          description: Repeat to limit to prompts targeting these personas.
          schema:
            example:
              - Landlords
            type: array
            items:
              type: string
        - name: stage
          required: false
          in: query
          description: Repeat to limit to prompts in these journey stages.
          schema:
            example:
              - Decision
            type: array
            items:
              type: string
        - name: brandMention
          required: false
          in: query
          description: Limit to prompts that do, or do not, mention the tracked brand.
          schema:
            type: string
            enum:
              - mentions_tracked_brand
              - does_not_mention_tracked_brand
        - name: scanId
          required: false
          in: query
          description: >-
            Scan to read. Omit for the latest completed Scan; the response
            echoes the resolved scanId and scanDate.
          schema:
            type: string
            format: uuid
        - name: platform
          required: false
          in: query
          description: Repeat to select AI platforms. Omit for every platform.
          schema:
            type: array
            items:
              type: string
              enum:
                - claude_api
                - chatgpt_api
                - gemini_api
                - perplexity_sonar_pro
                - chatgpt_app
                - gemini_app
                - google_ai_summaries_app
                - google_ai_mode_app
                - microsoft_copilot_app
                - perplexity_app
        - name: region
          required: false
          in: query
          description: Repeat to select region codes. Omit for all regions.
          schema:
            example:
              - NZ:auckland
            type: array
            items:
              type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NarrativesReportResponseDto'
        '404':
          description: Site not found.
components:
  schemas:
    NarrativesReportResponseDto:
      type: object
      properties:
        scanId:
          type: string
          format: uuid
          nullable: true
        scanDate:
          type: string
          nullable: true
          example: '2026-09-10'
          description: >-
            The UTC calendar day of the Scan. Use `scanCompletedAt` for the
            exact time, to show the day in your user's time zone.
        scanCompletedAt:
          type: string
          nullable: true
          format: date-time
          example: '2026-09-10T09:42:00.000Z'
          description: >-
            When the Scan finished, as an ISO 8601 UTC timestamp. Format it in
            your user's time zone to show the day. Null when not known.
        data:
          type: array
          items:
            $ref: '#/components/schemas/NarrativeSummaryDto'
      required:
        - scanId
        - scanDate
        - data
    NarrativeSummaryDto:
      type: object
      properties:
        narrativeId:
          type: string
          format: uuid
          description: Stable narrative id. Pass it to the claims endpoint.
        name:
          type: string
          example: Interest, rates and pricing
        relevance:
          type: string
          enum:
            - high
            - medium
            - low
          example: high
        claimCount:
          type: number
          example: 42
          description: Claims for this narrative in the filtered scope.
        modelCount:
          type: number
          example: 2
          description: Distinct AI platforms the narrative appears across.
        leadingClaim:
          type: string
          nullable: true
          description: The most relevant claim, as a preview.
        standing:
          nullable: true
          description: >-
            The tracked brand's standing on this narrative, from the Scan's
            readings. Null when the Scan predates the readings model or the
            filter does not match a computed scope.
          type: object
          allOf:
            - $ref: '#/components/schemas/NarrativeStandingDto'
      required:
        - narrativeId
        - name
        - relevance
        - claimCount
        - modelCount
        - leadingClaim
        - standing
    NarrativeStandingDto:
      type: object
      properties:
        level:
          type: number
          example: 2
          minimum: 0
          maximum: 4
          description: >-
            Where the tracked brand sits on the five-rung ladder (0 Absent, 1
            Criticised, 2 Mentioned, 3 Cited as authority, 4 Recommended).
        label:
          type: string
          example: Mentioned
          enum:
            - Absent
            - Criticised
            - Mentioned
            - Cited as authority
            - Recommended
        previousLevel:
          type: number
          nullable: true
          example: 1
        previousLabel:
          type: string
          nullable: true
          example: Criticised
        trend:
          type: number
          nullable: true
          example: 1
          description: level − previousLevel; null when there is no previous Scan.
        topRivalId:
          type: string
          format: uuid
          nullable: true
          description: The rival brand best placed on this narrative, when identified.
        counts:
          $ref: '#/components/schemas/NarrativeStandingCountsDto'
      required:
        - level
        - label
        - previousLevel
        - previousLabel
        - trend
        - topRivalId
        - counts
    NarrativeStandingCountsDto:
      type: object
      properties:
        narrativeCells:
          type: number
          example: 449
          description: Answers in scope that carry this narrative.
        answersInScope:
          type: number
          example: 645
        mentionedCells:
          type: number
          example: 51
        citedCells:
          type: number
          example: 45
        criticisedCells:
          type: number
          example: 8
        recommendedCells:
          type: number
          example: 98
      required:
        - narrativeCells
        - answersInScope
        - mentionedCells
        - citedCells
        - criticisedCells
        - recommendedCells
  securitySchemes:
    apiKeyAuth:
      scheme: bearer
      bearerFormat: ons_…
      type: http
      description: An API key created in Settings → Account → API Keys.

````

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