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

# List AI traffic daily rollups

> Reads AI traffic daily rollups in the selected workspace. Filter with `q`, a JSON object of field matches. Reads only: writes through this route are refused for every entity and every credential.



## OpenAPI

````yaml /openapi.json get /api/entities/AiTrafficDaily
openapi: 3.1.0
info:
  title: Reputably API
  version: 1.0.0
  description: >-
    The HTTP surface an agent credential can reach. It is read plus safe writes:
    you can read your reputation data, generate drafts, queue reports and run
    first-time tracking setup. You cannot send anything to an external platform,
    trigger syncs, touch billing or manage credentials.


    The same endpoints back the MCP server, so anything documented here is
    reachable both ways.
servers:
  - url: https://app.reputably.net
    description: Reputably
  - url: https://your-domain.example
    description: Your own verified white-label domain
security:
  - agentKey: []
tags:
  - name: Businesses
    description: The locations you track, their plan usage and AI-generated insights.
  - name: Reviews
    description: Google and Facebook reviews, including which still need a reply.
  - name: Brand mentions
    description: Mentions across X, Reddit, YouTube, Facebook communities and the open web.
  - name: Brand tracking
    description: The trackers that find mentions, and competitor share of voice.
  - name: Leads
    description: Buying signals detected in mentions, with the public post to reply to.
  - name: AI Visibility
    description: >-
      Whether AI assistants recommend the business, what they cite, and how it
      moves.
  - name: AI Traffic
    description: Which AI crawlers read the website, and who arrives from an AI answer.
  - name: Posts
    description: Google Business Profile posts and drafts.
  - name: Reports
    description: Queued report renders and their CSV output.
  - name: Setup
    description: First-time tracking configuration.
  - name: Account
    description: Workspaces, notifications, sync status and prospect audits.
paths:
  /api/entities/AiTrafficDaily:
    get:
      tags:
        - AI Traffic
      summary: List AI traffic daily rollups
      description: >-
        Reads AI traffic daily rollups in the selected workspace. Filter with
        `q`, a JSON object of field matches. Reads only: writes through this
        route are refused for every entity and every credential.
      operationId: listAiTrafficDaily
      parameters:
        - name: q
          in: query
          required: false
          schema:
            type: string
          description: JSON filter object, for example {"needs_response":true}.
        - name: sort_by
          in: query
          required: false
          schema:
            type: string
          description: Field to sort on.
        - name: limit
          in: query
          required: false
          schema:
            type: integer
          description: Maximum rows to return.
        - name: skip
          in: query
          required: false
          schema:
            type: integer
          description: Rows to skip, for paging.
        - name: X-Workspace-Id
          in: header
          required: false
          schema:
            type: string
          description: >-
            Which workspace to read. Omit it and you get the account’s home
            workspace, which on an agency account is often not where the live
            businesses are. A workspace this credential cannot read is refused
            with 403 rather than quietly answered from the default.
      responses:
        '200':
          description: Matching AI traffic daily rollups.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AiTrafficDaily'
        '401':
          description: Missing or invalid credential.
        '403':
          description: Not readable by this credential, or not in this workspace.
components:
  schemas:
    AiTrafficDaily:
      type: object
      title: AiTrafficDaily
      properties:
        id:
          type: string
          description: Unique id.
        site_id:
          type: string
        location_id:
          type: string
          description: >-
            Denormalized from the site so the business-scope clamp
            (lib/businessScope.js) is a single-field query, same reason
            VisibilityRun carries it.
        date:
          type: string
        crawler_hits:
          type: integer
        verified_hits:
          type: integer
          description: >-
            Hits whose source IP was inside the operator's published CIDR ranges
            (lib/aiCrawlerRanges.js). The IP itself is checked at ingest and
            discarded — it is never stored anywhere.
        spoofed_hits:
          type: integer
          description: >-
            Hits where we HAD the operator's ranges and the source IP was not in
            them — i.e. something wearing the crawler's user-agent. Distinct
            from unchecked (no IP reported, or the operator publishes no
            ranges), which is crawler_hits - verified_hits - spoofed_hits.
        unique_agents:
          type: integer
        by_agent:
          type: object
          description: >-
            { 'GPTBot': { hits, verified, spoofed, category, operator }, ... } —
            only user-agents lib/aiCrawlers.js could identify. Unclassified
            traffic is dropped, never bucketed as 'other'.
        by_category:
          type: object
          description: >-
            { ai_answers, search_index, training, other_ai } hit counts.
            ai_answers is the closest thing to an impression; training is
            high-volume and least actionable.
        top_paths:
          type: array
          description: >-
            [{ path, hits }] capped at 25, descending. Capped because an
            unbounded path map on a large site is what would blow up the row
            size this schema exists to control.
        paths_by_category:
          type: object
          description: >-
            { ai_answers: [{ path, hits }], search_index: [...], ... } — each
            category independently capped at 12, so a low-volume category still
            shows its own pages instead of being crowded out. Per CATEGORY and
            not per agent on purpose: 11 bots x 25 paths would be ~275 extra
            entries a row, four buckets x 12 is ~48. Page data can therefore
            narrow to a category but never to a single crawler.
        referral_visits:
          type: integer
        by_referrer:
          type: object
          description: >-
            { 'chatgpt.com': 8, ... } — humans who clicked through from an AI
            assistant. Only the browser beacon can see these.
        referral_paths:
          type: array
          description: '[{ path, visits }] capped at 25, descending.'
  securitySchemes:
    agentKey:
      type: http
      scheme: bearer
      description: >-
        An agent key (`rpk_...`) created in Settings → API & MCP, sent as
        `Authorization: Bearer rpk_...`. Bearer only: a cookie session can never
        drive this API. An OAuth 2.1 access token obtained from the same host
        works identically and lands on the same ceiling.

````