---
name: track-ai-visibility
description: "Measure how often AI answers mention and cite a brand: create a GEO monitor that asks ChatGPT, Gemini, Perplexity, Google AI Overviews, Google AI Mode and Naver AI a fixed set of buyer questions on a schedule, then read mention rate, citation rate, share of voice, cited sources and the answers behind each number. Each run costs prompts x engine credits."
---

# Track AI visibility with querying.ai monitors

A monitor asks the same questions on a schedule and scores every answer for your brand, your domains and your competitors. The report compares each period with the one before it.

Send `Authorization: Bearer $QUERYING_API_KEY` on every request to https://api.querying.ai. Getting a key, and the 500 credits a new account starts with: https://querying.ai/auth.md

## 1. Read the contract

`GET /v1/monitors/capabilities` returns the engines a monitor schedules, their credit prices, the limits and every metric's definition. Read it before creating anything.

## 2. Create the monitor

```bash
curl -X POST https://api.querying.ai/v1/monitors \
  -H "Authorization: Bearer $QUERYING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name": "Earbuds US", "engines": ["CHATGPT", "GEMINI", "PERPLEXITY"], "prompts": ["best wireless earbuds for commuting", "are cheap earbuds worth it"], "aliases": ["Acme Audio", "Acme"], "domains": ["acme.example"], "country": "US", "intervalHours": 24}'
```

- `prompts`: 1-100 buyer questions without your brand's name. A prompt that names the brand scores 100% and measures nothing.
- `engines`: `CHATGPT`, `GEMINI`, `PERPLEXITY`, `GOOGLE`, `AIMODE`, `NAVER_AI_BRIEF`, `NAVER_AI_TAB`.
- `aliases` (brand spellings) and `domains` (hosts whose citations count) belong to a brand monitor. `"mode": "CATEGORY"` with `category` follows a market and ranks every brand in it.
- `intervalHours`: 1-168. The first run starts at creation.

Each run submits prompts x engines tasks at each engine's credit price: 12 prompts on ChatGPT (1) and Gemini (1.25) cost 27 credits a run.

## 3. Run and read the report

- `POST /v1/monitors/{id}/run`: run now; the answers arrive within a few minutes.
- `GET /v1/monitors/{id}/analytics?days=30`: `stats` (`mentionRate`, `citationRate`), `changes` against the previous 30 days, `engineRates`, `brands` with `shareOfVoice`, `prompts` and `opportunities` (answers that named a competitor and skipped you).
- `GET /v1/monitors/{id}/sources?groupBy=page`: the pages the engines cite; follow `nextCursor` until it is null.
- `GET /v1/monitors/{id}/results?mentioned=false`, then `GET /v1/monitors/{id}/answers/{taskId}`: the answers behind a gap, with their text and sources.

Report each rate with its sample size: a 50% rate from 30 answers carries a 95% margin of about 18 points.

## Errors

| HTTP | `code` | When |
| --- | --- | --- |
| 401 | `MISSING_API_KEY` | The key is missing, wrong, expired or revoked. |
| 402 | `INSUFFICIENT_CREDITS` | The account balance is below the task's credits. |
| 403 | `KEY_SCOPE_DENIED` | The key is limited to other engines. |
| 422 | `REGION_UNSUPPORTED` | The engine serves other countries; pick another engine or country. |
| 429 | `KEY_DAILY_CREDIT_LIMIT` | The key reached its daily credit limit; `details.retryAfterSec` counts down to the next UTC day. |

## Over MCP

On https://mcp.querying.ai/mcp: `get_monitor_capabilities`, `create_monitor`, `run_monitor`, `get_monitor_analytics`, `get_monitor_sources`, `get_monitor_results`, `get_monitor_answer`, in that order.

Reference: https://docs.querying.ai/monitors
