> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rankraft.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Endpoints at a glance

> Every RankRaft API endpoint with its metrics, groupings and filters on one page.

Base URL `https://api.rankraft.ai/v1`. Every request sends the key in `X-API-Key`. Reports are `POST` with a JSON body and return `{ info, data }`; discovery endpoints are `GET` and return `{ data }`. Full parameters are in the [REST API](/api-reference/introduction) tab; the rules that apply to all of them are in [Conventions & gotchas](/cookbook/conventions).

## Discovery

| Method | Path | Use it for | SDK |
| - | - | - | - |
| `GET` | `/v1/me` | Check a key: its organization, plan, permission and rate limits. | `rr.me()` |
| `GET` | `/v1/platforms` | Engine IDs and whether your plan includes each. | `rr.platforms.list()` |
| `GET` | `/v1/sites` | Every site in the organization, with its domain and engines. | `rr.sites.list()` |
| `GET` | `/v1/sites/{site_id}` | One site, with its most recent answer scan. | `rr.sites.get()` |
| `GET` | `/v1/sites/{site_id}/competitors` | Competitors, their domains and whether each is confirmed. | `rr.sites.competitors()` |
| `GET` | `/v1/sites/{site_id}/actions` | Action Center cards: `open`, `done` or `all`. | `rr.sites.actions()` |

## Answer reports

All take `site_id`, `start_date`, `end_date` (inclusive, UTC, at most 92 days apart), an optional `filter` and `cursor`, and a `limit` of up to 100.

### `POST /v1/reports/visibility`

Visibility Score and its parts, for your brand or for you and your competitors.

| Metrics | `group_by` (up to 2) | Filter fields | Other |
| - | - | - | - |
| `visibility_score`, `mention_rate`, `citation_rate`, `prompt_coverage`, `average_position`, `share_of_voice`, `answers` | `date`, `platform`, `prompt`, `category` | `platform`, `prompt`, `category` | `brands`: `"owned"`, `"all"` or a list of names; `sort: { field, dir }` |

Recipes: [score with change](/cookbook/visibility-score), [headline and daily](/cookbook/headline-and-daily), [over time](/cookbook/visibility-over-time), [leaderboard](/cookbook/competitor-leaderboard), [compare competitors](/cookbook/compare-competitors), [segment](/cookbook/segment-visibility).

### `POST /v1/reports/citations`

Which domains or pages the engines cite, and who owns them.

| Metrics | `group_by` (up to 2) | Filter fields | Other |
| - | - | - | - |
| `answers`, `citations`, `citation_share` | `date`, `platform`, `prompt` | `platform`, `prompt`, `category`, `domain`, `owner`, `source_kind` | `entity`: `"domain"` or `"page"` |

Every row also carries `domain`, `owner` (`own`, `competitor`, `third_party`), `source_kind` and `rank`.

> [!NOTE]
>
> `answers` counts distinct answers citing the domain; `citations` counts every link, so a page linked twice in one answer is 1 answer and 2 citations. `rank` follows `answers`. `citation_share` is `citations` ÷ all citations in the same group **after the filter**.

Recipes: [owned citation share](/cookbook/owned-citation-share), [share and volume over time](/cookbook/citation-share-over-time), [citation rank](/cookbook/citation-rank), [where AI gets its answers](/cookbook/citation-sources).

### `POST /v1/reports/sentiment`

The tone of answers that name you.

| Fields returned | `group_by` (up to 2) | Filter fields |
| - | - | - |
| `positive`, `neutral`, `negative` (0–1 of answers naming you), `answers_mentioning`, `answers` | `date`, `platform`, `prompt`, `category` | `platform`, `prompt`, `category` |

### `POST /v1/answers`

The stored answers themselves, newest first: text, brands named, citations and sentiment. Narrow with `platforms` and `prompt_ids`, trim with `include`. At most 50 a page.

## AI traffic reports

Both take `site_id`, `start_date`, `end_date` (at most 400 days apart), an optional `timezone` (IANA, default `UTC`), `filter`, `sort`, and a `limit` of up to 500.

### `POST /v1/reports/bots`

AI and search crawler hits.

| Metrics | `group_by` (up to 3) | Filter fields |
| - | - | - |
| `hits`, `pages`, `verified_share`, `error_hits`, `last_visit` | `date`, `hour`, `bot_name`, `bot_provider`, `bot_type`, `path`, `page_type` | `bot_name`, `bot_provider`, `bot_type`, `verified`, `path`, `page_type` |

Spoofed hits (`verified = failed`) are left out unless your filter mentions `verified`.

### `POST /v1/reports/referrals`

People arriving from AI assistants.

| Metrics | `group_by` (up to 3) | Filter fields |
| - | - | - |
| `visits`, `landing_pages`, `last_visit` | `date`, `hour`, `referral_source`, `path`, `page_type` | `referral_source`, `path`, `page_type` |

Recipe: [AI crawler traffic to a warehouse](/cookbook/bot-traffic-to-warehouse).

## Prompts

Need a key with **Read and manage prompts** access. Prompts are never deleted over the API; switch them off instead.

| Method | Path | Use it for | SDK |
| - | - | - | - |
| `GET` | `/v1/sites/{site_id}/prompts` | List prompts by status and category. | `rr.prompts.list()` |
| `POST` | `/v1/sites/{site_id}/prompts` | Add up to 100; duplicates are returned, not repeated. `dry_run` previews. | `rr.prompts.create()` |
| `PATCH` | `/v1/sites/{site_id}/prompts` | Change a prompt's category. | `rr.prompts.update()` |
| `PATCH` | `/v1/sites/{site_id}/prompts/status` | Switch prompts on or off. | `rr.prompts.setStatus()` / `set_status()` |

Recipe: [Manage prompts from a CSV](/cookbook/prompts-from-csv).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.