# OtterlyAI Public API - [Introduction](https://docs.otterly.ai/introduction.md): Welcome to the OtterlyAI Public API - [Authentication](https://docs.otterly.ai/authentication.md): How to authenticate requests to the OtterlyAI Public API - [OtterlyAI MCP Server](https://docs.otterly.ai/mcp-server.md): Use OtterlyAI with Model Context Protocol (MCP)–compatible clients - [Claude Skill](https://docs.otterly.ai/claude-skill.md): Use OtterlyAI directly inside Claude with the OtterlyAI skill - [List AI engines and supported countries](https://docs.otterly.ai/api-reference/engines/list-ai-engines-and-supported-countries.md) - [List workspaces](https://docs.otterly.ai/api-reference/workspaces/list-workspaces.md) - [List tags for a workspace](https://docs.otterly.ai/api-reference/tags/list-tags-for-a-workspace.md) - [Create a tag in a workspace](https://docs.otterly.ai/api-reference/tags/create-a-tag-in-a-workspace.md) - [Delete a tag](https://docs.otterly.ai/api-reference/tags/delete-a-tag.md): Deletes the tag. The tag is unassigned from all prompts asynchronously; brand reports filtered by it update accordingly. - [List prompts in a workspace](https://docs.otterly.ai/api-reference/prompts/list-prompts-in-a-workspace.md): Lists the prompts monitored in the workspace. `id` is the identifier accepted by the prompt write endpoints. - [Create prompts in a workspace](https://docs.otterly.ai/api-reference/prompts/create-prompts-in-a-workspace.md): Creates one prompt (`prompt`) or several (`prompts`) in the workspace and starts monitoring them, exactly like creation in the UI (including search-volume computation). Up to 5 prompts are created synchronously (201 with the created items); larger batches are processed asynchronously (202 with a pro… - [Delete a prompt](https://docs.otterly.ai/api-reference/prompts/delete-a-prompt.md): Deletes the prompt. It is removed from any brand report it is part of, and affected brand reports are recalculated without it (asynchronously). - [Update the tags assigned to a prompt](https://docs.otterly.ai/api-reference/prompts/update-the-tags-assigned-to-a-prompt.md): Replaces the prompt's tag assignments with the provided set. A prompt's text and country are immutable — requests attempting to change them are rejected; create a new prompt instead. - [List crawlability checks](https://docs.otterly.ai/api-reference/audits/list-crawlability-checks.md) - [Create a crawlability check](https://docs.otterly.ai/api-reference/audits/create-a-crawlability-check.md) - [Get a crawlability check](https://docs.otterly.ai/api-reference/audits/get-a-crawlability-check.md) - [List content checks](https://docs.otterly.ai/api-reference/audits/list-content-checks.md) - [Create a content check](https://docs.otterly.ai/api-reference/audits/create-a-content-check.md) - [Get a content check](https://docs.otterly.ai/api-reference/audits/get-a-content-check.md) - [List query fan-outs](https://docs.otterly.ai/api-reference/audits/list-query-fan-outs.md) - [Create a query fan-out](https://docs.otterly.ai/api-reference/audits/create-a-query-fan-out.md) - [Get a query fan-out](https://docs.otterly.ai/api-reference/audits/get-a-query-fan-out.md) - [List brand reports](https://docs.otterly.ai/api-reference/brand-reports/list-brand-reports.md) - [Create a brand report](https://docs.otterly.ai/api-reference/brand-reports/create-a-brand-report.md): Creates a brand report in a workspace, the same as creating it in the UI. The prompts must already exist in that workspace — create them with `POST /v1/workspaces/{id}/prompts` — and the report tracks their countries. Domains are normalized (protocol, `www.` and path stripped). Detect the brand eith… - [Get a brand report](https://docs.otterly.ai/api-reference/brand-reports/get-a-brand-report.md) - [Update a brand report](https://docs.otterly.ai/api-reference/brand-reports/update-a-brand-report.md): Changes only the fields you send; an array field you send replaces the stored one whole. A field sent with its stored value is left unchanged and is not re-validated, so a GET body can be sent back as is: its read-only fields (`workspaceId`, `id`, `countries`, `tags`, `createdDate`, `updatedDate`, `… - [Get statistics for a brand report](https://docs.otterly.ai/api-reference/brand-reports/get-statistics-for-a-brand-report.md) - [List citations for a brand report](https://docs.otterly.ai/api-reference/brand-reports/list-citations-for-a-brand-report.md) - [Get citation statistics for a brand report](https://docs.otterly.ai/api-reference/brand-reports/get-citation-statistics-for-a-brand-report.md) - [List prompts for a cited URL](https://docs.otterly.ai/api-reference/brand-reports/list-prompts-for-a-cited-url.md) - [Get citation history for a cited URL](https://docs.otterly.ai/api-reference/brand-reports/get-citation-history-for-a-cited-url.md) - [List prompts for a brand report](https://docs.otterly.ai/api-reference/brand-reports/list-prompts-for-a-brand-report.md) - [Add prompts to a brand report](https://docs.otterly.ai/api-reference/brand-reports/add-prompts-to-a-brand-report.md): Adds prompts that already exist in the report workspace to the brand report, exactly like ticking the report in the UI. It does not create prompts — use `POST /v1/workspaces/{id}/prompts` for that. Prompt IDs already assigned to the report are returned in `alreadyAssigned` and left unchanged; unknow… - [Remove prompts from a brand report](https://docs.otterly.ai/api-reference/brand-reports/remove-prompts-from-a-brand-report.md): Unassigns prompts from the brand report and recalculates it without them (asynchronously). The prompt IDs travel in a JSON request body, which some HTTP clients drop on DELETE — send it explicitly. The prompts themselves are not deleted and stay in the workspace — use `DELETE /v1/workspaces/{id}/pro… - [Get prompt details from a brand report.](https://docs.otterly.ai/api-reference/brand-reports/get-prompt-details-from-a-brand-report.md) - [List AI responses for a prompt in a brand report.](https://docs.otterly.ai/api-reference/brand-reports/list-ai-responses-for-a-prompt-in-a-brand-report.md) - [List recommendations for a brand report](https://docs.otterly.ai/api-reference/brand-reports/list-recommendations-for-a-brand-report.md) - [Get AI agent traffic overview for a brand report](https://docs.otterly.ai/api-reference/brand-reports/get-ai-agent-traffic-overview-for-a-brand-report.md): Overview of AI crawler and agent traffic across the brand report's own domains: total visits, distinct pages visited, the busiest engine, per-engine totals, and a daily trend with each engine's share. Check `availability` before rendering — `not_connected` means no logs connector is set up and the m… - [List pages visited by AI agents for a brand report](https://docs.otterly.ai/api-reference/brand-reports/list-pages-visited-by-ai-agents-for-a-brand-report.md): Per-URL breakdown of AI agent traffic, busiest page first. Pages are segmented per domain: the same path on the report's main domain and on a domain variation are two separate items. URLs are normalized at ingest — query strings are stripped and the path is domain-relative. - [List AI agents that visited a brand report](https://docs.otterly.ai/api-reference/brand-reports/list-ai-agents-that-visited-a-brand-report.md): Per-agent breakdown of AI crawler traffic, busiest agent first. `category` says what the agent is doing — fetching a page for a user, building a search index, or collecting training data — which is usually more actionable than the engine alone. - [Suggest competitors for a brand](https://docs.otterly.ai/api-reference/competitors/suggest-competitors-for-a-brand.md): Suggests competitors for a brand using AI web search, with name variations and domain variations for each. Nothing is saved. Every item is ready to pass as a competitor to `POST /v1/reports/brand` or `PATCH /v1/reports/brand/{reportId}`. The brand own domain is never returned. A 503 means the resear… - [Get account information](https://docs.otterly.ai/api-reference/accounts/get-account-information.md): Returns the authenticated team's subscription plan, end date, and current period usage/limits for prompts, GEO audits, public API requests, and MCP tool calls. ## OpenAPI Specs - [openapi](https://data.otterly.ai/v1/openapi.json) ## Optional - [Dashboard](https://app.otterly.ai) - [Blog](https://otterly.ai/blog/) - [Help Center](https://help.otterly.ai/) This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.