---
title: "Monitor analytics"
method: GET
path: "/api/v1/analytics/monitors"
tags: ["analytics"]
---

# Monitor analytics

`GET /api/v1/analytics/monitors`

## Request

- Base URL: `https://pineprompt.com`
- URL: `https://pineprompt.com/api/v1/analytics/monitors`
- Auth: HTTP bearer

Returns per-monitor aggregates across the filter window, scoped to a single brand. The response is paginated.

## Query parameters

- `start_date` string, date, required
- `end_date` string, date, required
- `brand_id` integer, required
- `platforms` string[]
- `countries` string[]
- `monitors` integer[]
- `segments` integer[]
- `tags` integer[]
- `page` integer
- `per_page` integer
- `sort_by` 'visibility' | 'share_of_voice' | 'sentiment' | 'position'
- `sort_order` 'asc' | 'desc'

## Headers

- `Pineprompt-Project-Id` integer, required

## Response `200`

OK

- MonitorAnalyticsList
  - `data` MonitorAnalytics[]
    - `monitor` Monitor: A monitor is a configured daily run: a set of prompts bound to one or more AI platforms in a chosen country and language. While a monitor is active, Pineprompt runs it once per day on your behalf.
      - `id` integer: The unique ID of the monitor.
      - `project_id` integer: The ID of the project this monitor runs under.
      - `name` string: The display name of the monitor.
      - `platforms` string[]: The AI platforms the monitor runs against.
      - `country` string: The ISO 3166-1 alpha-2 country code.
      - `language` string: The language the monitor runs in.
      - `is_active` boolean: Whether the monitor will run on its next daily run.
      - `project` Project: A project represents a single brand or site you monitor. Its `brand_id` names the own brand, the brand every core metric is computed for.
        - `id` integer: The unique ID of the project.
        - `organization_id` integer: The ID of the organization that owns the project.
        - `name` string: The display name of the project.
        - `brand_id` integer, nullable: The ID of the project's own brand, or null while none has been designated.
        - `organization` Organization: An organization is the top-level billing entity and tenant boundary in Pineprompt. Every project, member, and API key belongs to exactly one organization.
          - `id` integer: The unique ID of the organization.
          - `name` string: The display name of the organization.
          - `created_at` string, date-time: When the organization was created.
          - `updated_at` string, date-time: When the organization was last updated.
        - `created_at` string, date-time: When the project was created.
        - `updated_at` string, date-time: When the project was last updated.
      - `created_at` string, date-time: When the monitor was created.
      - `updated_at` string, date-time: When the monitor was last updated.
    - `brand` Brand: A brand is an entity Pineprompt matches against platform answers: your own brand, a competitor you track, or a brand discovered in an answer. Matches are found through the display name, the aliases, and the domains.
      - `id` integer: The unique ID of the brand.
      - `project_id` integer: The ID of the project the brand belongs to.
      - `display_name` string: The canonical display name of the brand.
      - `aliases` string[]: Alternative names that the brand is referred to by.
      - `domains` string[]: The web domains associated with the brand.
      - `kind` 'own' | 'competitor' | 'discovered' | 'ignored': The brand's classification, derived from its context rather than stored: the brand the project's `brand_id` points at is `own`, a brand with `ignored_at` set is `ignored`, a brand attached to any segment is a `competitor`, and a brand with none of those is `discovered`. This field is read-only.
      - `color` string: A hex color used to color the brand consistently across charts. It is derived from the brand's favicon, or assigned automatically when no color can be derived. This field is read-only and is always present.
      - `ignored_at` string, date-time, nullable: When the brand was ignored, or null while it is not. Set and cleared through the `ignored` field on the update endpoint.
      - `project` Project: A project represents a single brand or site you monitor. Its `brand_id` names the own brand, the brand every core metric is computed for.
        - `id` integer: The unique ID of the project.
        - `organization_id` integer: The ID of the organization that owns the project.
        - `name` string: The display name of the project.
        - `brand_id` integer, nullable: The ID of the project's own brand, or null while none has been designated.
        - `organization` Organization: An organization is the top-level billing entity and tenant boundary in Pineprompt. Every project, member, and API key belongs to exactly one organization.
          - `id` integer: The unique ID of the organization.
          - `name` string: The display name of the organization.
          - `created_at` string, date-time: When the organization was created.
          - `updated_at` string, date-time: When the organization was last updated.
        - `created_at` string, date-time: When the project was created.
        - `updated_at` string, date-time: When the project was last updated.
      - `created_at` string, date-time: When the brand was created.
      - `updated_at` string, date-time: When the brand was last updated.
    - `visibility` integer: The percentage of analyzed responses on this monitor that mention the brand.
    - `visibility_change` integer: The difference in visibility compared with the equal-length period immediately preceding the window.
    - `share_of_voice` integer: This brand's share of the mentions of the brands in the filter scope on this monitor. A segment filter narrows the scope to the segment's brands.
    - `share_of_voice_change` integer: The difference in share of voice compared with the preceding period.
    - `sentiment` integer, nullable: The average sentiment score on a 0-100 scale. `null` when the brand had no mentions through this monitor.
    - `sentiment_change` integer, nullable: The difference in sentiment compared with the preceding period. `null` when either period lacks data.
    - `position` number, float, nullable: The average position of the brand within the responses on this monitor that mention it. A lower value is better. `null` when the brand had no mentions through this monitor.
    - `position_change` number, float, nullable: The difference in position compared with the preceding period. A negative value indicates an improvement. `null` when either period lacks data.
  - `links` PaginationLinks
    - `first` string, nullable
    - `last` string, nullable
    - `prev` string, nullable
    - `next` string, nullable
  - `meta` PaginationMeta
    - `current_page` integer
    - `from` integer, nullable
    - `last_page` integer
    - `path` string
    - `per_page` integer
    - `to` integer, nullable
    - `total` integer
    - `links` PaginationLink[]: The page-link rows, in display order from the first page through the last. The set always opens with a previous link and closes with a next link.
      - `url` string, nullable: The URL for this link, or `null` for the disabled previous and next boundaries.
      - `label` string: The label for this link, either a page number or a localized previous or next caption.
      - `page` integer, nullable: The page number this link points to, or `null` for the disabled previous and next boundaries.
      - `active` boolean: Whether this link is the page currently being returned.

## Other responses

- `400`: Missing project header
- `401`: Unauthorized
- `403`: Missing ability
- `404`: Project not in this organization
- `422`: Validation failed

---

[API](https://skmtc.dev/pineprompt/apis/pineprompt-api.md) · [All operations](https://skmtc.dev/pineprompt/apis/pineprompt-api/llms.txt) · [OpenAPI document](https://skmtc.dev/pineprompt/apis/pineprompt-api/revisions/05dbb5241a27?raw)
