# querying.ai auth.md

querying.ai authenticates every API and MCP request with an **API key** sent as a bearer token: `Authorization: Bearer <key>`. One key works on the API at https://api.querying.ai and on the MCP server at https://mcp.querying.ai/mcp.

## Registration

- Sign up: <https://querying.ai> (Start free)
- Create and manage keys: <https://querying.ai/dashboard/keys>

Signup is self-serve and a key works the moment it is created. Every new account starts with 500 credits before a payment method is added, enough to try every engine and region. Those credits run on the production API, so what you test is what you ship. Plans and credit prices: <https://querying.ai/en/pricing>.

A person signs up and creates the key in the dashboard, then hands it to the agent, for example as the environment variable `QUERYING_API_KEY`. For machine-to-machine onboarding of an agent platform, write to contact@querying.ai.

### Readable with no key

- The [AI Index](https://querying.ai/en/ai-index), a weekly public board built on this API, and its data as JSON at <https://api.querying.ai/v1/ai-index>. It shows the shape of the answers and brand rates the API returns.
- Engine status: <https://status.querying.ai>
- Documentation: <https://docs.querying.ai>
- Every file under [Discovery](#discovery).

## Identity type

- **API key**: an opaque bearer token that starts with `vt_`. It belongs to one account; the tasks, monitors and credits it touches are that account's. The account owner creates, limits, rotates and revokes keys in the dashboard.

The MCP server takes the same key on every request, `initialize` and `tools/list` included. A request without it gets `401` with a `WWW-Authenticate: Bearer` challenge. The [server card](https://querying.ai/.well-known/mcp/server-card.json) lists the tools for a client deciding whether to connect.

## Credentials

- **Type**: bearer token
- **Header**: `Authorization: Bearer <key>`
- **Storage**: on your server, in a secret manager or an environment variable
- **Rotation**: <https://querying.ai/dashboard/keys>. Rotating issues a new key with the same name, engines, daily limit and expiry, and revokes the old key in the same step.
- **Revocation**: <https://querying.ai/dashboard/keys>. A revoked key stops working within 5 seconds.

A missing, wrong, expired or revoked key returns:

```json
{ "success": false, "error": { "code": "MISSING_API_KEY", "message": "Missing or invalid API key", "timestamp": "2026-10-04T07:00:00.000Z" } }
```

## Scopes

A key reaches every endpoint in the [OpenAPI description](https://querying.ai/openapi.json) for its own account. Three optional settings narrow it:

- **Engines**: the key submits tasks and schedules monitors only on the listed task types, such as `CHATGPT` and `PERPLEXITY`. Other task types return `403 KEY_SCOPE_DENIED`.
- **Daily credit limit**: the most credits the key spends per UTC day. A task past it returns `429 KEY_DAILY_CREDIT_LIMIT` with `details.retryAfterSec`.
- **Expiry**: the key stops working at the date you set, with `401 MISSING_API_KEY`.

## Credits

A task is charged when it completes, and the credits held for a task that fails are released. A short balance returns `402 INSUFFICIENT_CREDITS` at submit time.

| `taskType` | Returns | Credits |
| --- | --- | --- |
| `CHATGPT` | ChatGPT | 1 |
| `GEMINI` | Gemini | 1.25 |
| `PERPLEXITY` | Perplexity | 1 |
| `BING_COPILOT` | Microsoft Copilot | 1 |
| `META_AI` | Meta AI | 1 |
| `QWEN` | Qwen (千问, China) | 1.25 |
| `DOUBAO` | Doubao (豆包, China) | 1.25 |
| `GOOGLE` | Google AI Overviews | 1.25 |
| `AIMODE` | Google AI Mode | 1.25 |
| `NAVER_AI_BRIEF` | Naver AI Brief | 1.25 |
| `NAVER_AI_TAB` | Naver AI Tab | 1.25 |
| `GOOGLE_SERP` | Google search results | 1 |
| `NAVER_SERP` | Naver search results | 1 |
| `COMMERCE_SERP` | Product rankings on one of 21 storefronts per task, with numeric prices, currency, ratings and review counts | 3 |
| `COMMERCE_PRODUCT` | One product page on 18 storefronts: price, stock, gallery and description images, specs and options | 3 |
| `BING_SEARCH` | Bing search results | 1 |
| `REDDIT` | Reddit posts and comments | 1 |
| `WEB_SCRAPE` | Web page as Markdown | 1 |
| `WEB_MAP` | Site page addresses | 1 |
| `WEB_CRAWL` | Site pages as Markdown (per page) | 1 |
| `PROMPT_RESEARCH` (`POST /v1/prompt-research`) | Questions people ask AI assistants, ranked by search demand | 11 |
| `KEYWORD_VOLUME` | Monthly search volume for up to 100 keywords in one country | 3 |
| `GEO_SCORE` (`POST /v1/geo-score`) | How much of one page ChatGPT search keeps and ChatGPT reads when it opens it, and what keeps the rest from it | 10 per page, 5 per image read, 2 per image whose reading from the last 90 days is reused |
| AI Rendering (`POST /v1/ai-rendering/sites/{id}/pages`) | A page rendered for AI agents, with its image text in alt text, that the site's CDN keeps and serves them | 5 per render, 5 per image read, 2 per image whose reading from the last 90 days is reused |
| Product Lookup (`POST /v1/product-lookup`) | Merchant listings, prices and cited pages for a product and its competitors on the AI shopping engines | 10 per product, 5 per shopper prompt |

## Discovery

- API catalog (RFC 9727): <https://querying.ai/.well-known/api-catalog>
- OpenAPI 3.1: <https://querying.ai/openapi.json>
- MCP server card: <https://querying.ai/.well-known/mcp/server-card.json>
- Agent skills: <https://querying.ai/.well-known/agent-skills/index.json>
- llms.txt: <https://querying.ai/llms.txt>, full text at <https://querying.ai/llms-full.txt>

## Contact

contact@querying.ai
