---
title: "Query Looker Studio report data"
method: POST
path: "/api/v1/looker-studio/data"
tags: ["Analytics"]
---

# Query Looker Studio report data

`POST /api/v1/looker-studio/data`

## Request

- Base URL: `https://api.athenahq.ai`
- URL: `https://api.athenahq.ai/api/v1/looker-studio/data`
- Auth: API key in header `x-api-key`

Return report rows for one website and streaming schedule. filters.schedule_id accepts default or a custom schedule UUID; omission selects Default. The retired manual token is accepted as an alias of default. Schedule selection applies to every metric and dimension and is part of the report cache key. Archived schedules retain history. Response-grain reports are bounded before response text hydration; narrow the filters if the row limit is exceeded.

## Request body

- object
  - `website_id` string, uuid, required
  - `dimensions` string[], required
  - `metrics` string[], required
  - `filters` object, required: Filters for querying responses and metrics. Pass location filters in the JSON body as `filters.location_ids`.
    - `schedule_id` union: Select one streaming schedule. Use the selection returned by GET /api/v1/prompt-schedules. Default includes all pre-cutover history and ad hoc runs; archived schedules retain results. The retired manual token is accepted as an alias of default. This field takes one schedule; a list returns 400.
      - 'default' | 'manual'
      - string, uuid
    - `start_date` string, date-time, required: Filter start date (UTC)
    - `end_date` string, date-time, required: Filter end date (UTC)
    - `models` string[]: Filter by AI models
    - `prompt_ids` string[]: Filter by specific prompt IDs
    - `competitor_ids` string[]: Filter by specific competitor IDs
    - `location_ids` string[]: Filter by location IDs. Pass this in the JSON body as `filters.location_ids`, even when filtering by a single location. Use IDs returned by `GET /api/v1/locations`.
    - `prompt_status` 'active' | 'paused': Filter by prompt status
    - `prompt_type` 'branded' | 'non_branded': Filter by prompt type
    - `prompt_tags` union[]
      - union
        - string, uuid
        - 'type:discovery' | 'type:high_intent'
    - `prompt_tags_operator` 'is_any_of' | 'has_all_of'
  - `looker_studio_filters` array[], required
    - object[]
      - `fieldName` 'date' | 'model' | 'company_name' | 'is_self' | 'location' | 'topic_name' | 'prompt' | 'response' | 'citation_rate' | 'mention_rate' | 'share_of_voice' | 'position' | 'mentions' | 'citations' | 'total_responses', required
      - `operator` 'EQUALS' | 'CONTAINS' | 'REGEXP_PARTIAL_MATCH' | 'REGEXP_EXACT_MATCH' | 'IN_LIST' | 'IS_NULL' | 'BETWEEN' | 'NUMERIC_GREATER_THAN' | 'NUMERIC_GREATER_THAN_OR_EQUAL' | 'NUMERIC_LESS_THAN' | 'NUMERIC_LESS_THAN_OR_EQUAL', required
      - `type` 'INCLUDE' | 'EXCLUDE', required
      - `value` string[], required

## Response `200`

Report rows

- object
  - `data` object[], required
    - `date` string
    - `model` string
    - `company_name` string
    - `is_self` boolean
    - `location` string
    - `topic_name` string
    - `prompt` string
    - `response` string
    - `citation_rate` number
    - `mention_rate` number
    - `share_of_voice` number
    - `position` number
    - `mentions` number
    - `citations` number
    - `total_responses` number

## Other responses

- `400`: Invalid request or response report row limit exceeded
- `401`: Authentication required
- `403`: Website or filter resource access denied
- `404`: Website not found

## Changes

- **2026-11-03** `2d1d86d5e067`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/athenahq/apis/athenahq-api/changes/api/v1/looker-studio/data/post.md)

---

[API](https://skmtc.dev/athenahq/apis/athenahq-api.md) - [All operations](https://skmtc.dev/athenahq/apis/athenahq-api/llms.txt) - [OpenAPI document](https://skmtc.dev/athenahq/apis/athenahq-api/revisions/6cf9ca58edf6?raw)
