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

# Daily snapshot series

> Daily snapshot series (bearer-authed)



## OpenAPI

````yaml /api-reference/public-openapi.json get /api/public/v1/brands/{slug}/snapshots
openapi: 3.1.0
info:
  title: FixAEO Customer API
  version: 2026.05.23
  description: >-
    Bearer-authed read API over your FixAEO workspace. Create a key in Settings,
    then send it as `Authorization: Bearer <key>`. Every route is scoped to the
    key's own account.


    Generated from the server's OpenAPI spec — see
    scripts/build-public-openapi.py.
servers:
  - url: https://api.fixaeo.com
security:
  - bearerAuth: []
paths:
  /api/public/v1/brands/{slug}/snapshots:
    get:
      tags:
        - Public API
      summary: Daily snapshot series
      description: Daily snapshot series (bearer-authed)
      parameters:
        - $ref: '#/components/parameters/BrandSlug'
        - $ref: '#/components/parameters/RangeQuery'
      responses:
        '200':
          description: Snapshot series.
          content:
            application/json:
              schema:
                type: object
                properties:
                  brand_slug:
                    type: string
                  range:
                    type: string
                  snapshots:
                    type: array
                    items:
                      $ref: '#/components/schemas/Snapshot'
                  count:
                    type: integer
      security:
        - bearerAuth: []
components:
  parameters:
    BrandSlug:
      name: slug
      in: path
      required: true
      schema:
        type: string
        pattern: ^[a-z0-9-]+$
      description: URL-safe brand identifier (lowercased, hyphenated).
      example: openai
    RangeQuery:
      name: range
      in: query
      schema:
        type: string
        enum:
          - 7d
          - 30d
          - 90d
        default: 30d
      description: Time window for time-series + aggregations.
  schemas:
    Snapshot:
      type: object
      description: >-
        One day of measured visibility for a brand. Field names verified against
        a live response — this schema previously described ai_presence_score and
        per_engine_presence, neither of which exists.
      properties:
        date:
          type: string
          format: date
        citation_rate:
          type: number
          description: >-
            Visibility Score as a fraction between 0 and 1. Multiply by 100 for
            a percentage — 0.55 is 55%. NOTE the inconsistency with
            /api/public/v1/model, whose `score` is already on a 0-100 scale.
          example: 0.55
        brand_mentions:
          type: integer
          description: Answers naming the brand. The numerator of citation_rate.
        total_responses:
          type: integer
          description: >-
            Answers captured that day. The denominator. Errored and empty
            responses are excluded, so an engine outage doesn't read as a
            visibility drop.
        per_engine:
          type: object
          description: >-
            Per-engine mention rate, keyed by engine slug. Same 0-to-1 scale as
            citation_rate.
          additionalProperties:
            type: number
          example:
            chatgpt: 0.57
            gemini: 0.54
        sentiment_avg:
          type: number
          nullable: true
          description: >-
            (positive − negative) / classified, range −1 to +1. Null when
            nothing was classified.
        sentiment_pos:
          type: integer
        sentiment_neu:
          type: integer
        sentiment_neg:
          type: integer
        ranking:
          type: object
          description: Mention counts per brand name across the day's answers.
          additionalProperties:
            type: integer
        ranking_per_engine:
          type: object
          description: The same ranking, split by engine slug.
          additionalProperties:
            type: object
            additionalProperties:
              type: integer
        sentiment_per_competitor:
          type: object
          description: Per-competitor sentiment counts, keyed by brand name.
          additionalProperties:
            type: object
            properties:
              pos:
                type: integer
              neu:
                type: integer
              neg:
                type: integer
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: fxa_
      description: |
        API keys generated via `POST /api/v1/me/api-keys`. Format:
        `Authorization: Bearer fxa_<32-char-secret>`. Only accepted on
        `/api/public/v1/*`. Cookie auth is rejected on that surface.

````