---
title: "Web analytics query format (Growth+)"
method: GET
path: "/web_analytics/schema"
tags: ["AI & Agent Traffic"]
---

# Web analytics query format (Growth+)

`GET /web_analytics/schema`

## Request

- Base URL: `https://api.llmpulse.ai/api/v1`
- URL: `https://api.llmpulse.ai/api/v1/web_analytics/schema`
- Auth: API key in header `Authorization`

How to query the web analytics provider connected to the project, live: the provider, the property every query runs on, the native query format it accepts, the allowed top-level fields, the rules the bridge enforces (the connected property is always used, only reads run, row limits), a worked example and, where the provider offers it, its live field list. Cached for an hour. Supported providers: Google Analytics 4, Adobe Analytics or Customer Journey Analytics, Matomo, PostHog, Plausible and Piano, connected on the AI Traffic page. Requires the Growth plan or above; otherwise ERR_PLAN_REQUIRED. Without a connected provider returns ERR_WEB_ANALYTICS_NOT_CONNECTED (404); a provider that refuses the stored credentials returns ERR_WEB_ANALYTICS_ACCESS_REVOKED (403); an unavailable provider, an exhausted provider quota, more than 20 uncached queries a minute or too many running at once for the project returns ERR_WEB_ANALYTICS_UPSTREAM (503): wait for the number of seconds in Retry-After before retrying.

## Query parameters

- `project_id` integer, required

## Response `200`

Query format for the connected provider

- WebAnalyticsSchemaResponse
  - `project_id` integer
  - `provider` 'google_analytics' | 'adobe_analytics' | 'matomo' | 'posthog' | 'plausible' | 'piano': The connected web analytics provider.
  - `property` string: The property, site, report suite (rsid:...), data view (dataview:...) or project every query runs on.
  - `query_language` string: The native query format the provider accepts.
  - `docs_url` string: The provider's reference for that format.
  - `allowed_fields` string[]: Top-level query fields that are forwarded.
  - `rules` string[]: What the bridge enforces and the provider's main constraints.
  - `example` object: A worked query to adapt.
  - `fields` object, nullable: The provider's live field list where it offers one: GA4 dimensions and metrics with custom definitions, Adobe ids, Matomo report methods, PostHog event names, the Plausible catalog. Null when the provider did not return it.
  - `fields_unavailable` string: Present when the field list could not be read; the format and example still apply.
  - `request_id` string

## Other responses

- `403`: Access forbidden
- `404`: Resource not found
- `503`: Upstream provider unavailable, retry after the number of seconds in the Retry-After header: Google's own value when it sent one, otherwise 900 after a quota error and 60 after an outage

## Changes

- **2026-10-10** `bfef7c3dc382`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/llmpulse/apis/llm-pulse-api/changes/web_analytics/schema/get.md)

---

[API](https://skmtc.dev/llmpulse/apis/llm-pulse-api.md) - [All operations](https://skmtc.dev/llmpulse/apis/llm-pulse-api/llms.txt) - [OpenAPI document](https://skmtc.dev/llmpulse/apis/llm-pulse-api/revisions/38a31f123641?raw)
