{"openapi":"3.1.0","info":{"title":"Ranqo API","version":"1.0.0","description":"Read your Ranqo data with an API key: your brands and how AI answers name them. Read-only."},"servers":[{"url":"https://api.ranqo.ai"}],"security":[{"bearerAuth":[]}],"tags":[{"name":"account","x-displayName":"Account","description":"The account and key a request acts for."},{"name":"brands","x-displayName":"Brands","description":"The brands a key reads, with each one's latest run."},{"name":"visibility","x-displayName":"Visibility","description":"How often and how well AI answers name the brand, over a window."},{"name":"competitors","x-displayName":"Competitors","description":"The brands AI answers name alongside yours, ranked."},{"name":"runs","x-displayName":"Runs","description":"Tracking runs: every tracked prompt asked on each engine."},{"name":"prompts","x-displayName":"Prompts","description":"The questions a brand tracks, and the answers AI gave them."},{"name":"site-access","x-displayName":"Site Access","description":"Whether AI crawlers and search engines can fetch the brand's site."},{"name":"page-audits","x-displayName":"Page audits","description":"Six-dimension audits of single pages for AI search."},{"name":"recommendations","x-displayName":"Recommendations","description":"The Action Center's recommendations, and what each measurably changed."},{"name":"outreach","x-displayName":"Outreach","description":"Places AI answers cite where the brand could be named."}],"paths":{"/v1/account":{"get":{"operationId":"getAccount","summary":"Get the account","description":"The account this key reads, its plan, the key's own details and its rate limit. Carries no owner name or email.","tags":["account"],"parameters":[],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Account"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/brands":{"get":{"operationId":"listBrands","summary":"List brands","description":"The brands this key reads, oldest first. A key restricted to some brands lists only those.","tags":["brands"],"parameters":[{"name":"limit","in":"query","required":false,"description":"Items per page, 1 to 100.","schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"description":"The `next_cursor` of the previous page.","schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BrandList"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/brands/{brand_id}":{"get":{"operationId":"getBrand","summary":"Get a brand","description":"One brand and its latest completed run.","tags":["brands"],"parameters":[{"name":"brand_id","in":"path","required":true,"description":"The brand id, from `GET /v1/brands`.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Brand"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/brands/{brand_id}/competitors":{"get":{"operationId":"listCompetitors","summary":"List competitors","description":"Brands the answers name, ranked by visibility, as the Competitors page ranks them: the top `limit`, or with `watched=true` every watched rival. A rival is listed when named in more than one answer, named with its website, or watched.","tags":["competitors"],"parameters":[{"name":"brand_id","in":"path","required":true,"description":"The brand id, from `GET /v1/brands`.","schema":{"type":"string"}},{"name":"period","in":"query","required":false,"description":"`7d`, `30d` and `90d` run from midnight in `tz` that many days back to now; `365d` runs from midnight 365 days back to the end of today. Default `30d`. Not with `start_date`.","schema":{"type":"string","enum":["7d","30d","90d","365d"]}},{"name":"start_date","in":"query","required":false,"description":"First day of a custom window, in `tz`. Send with `end_date`.","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"end_date","in":"query","required":false,"description":"Last day of a custom window, in `tz`, included. The window may span at most 366 days, both dates counted.","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"tz","in":"query","required":false,"description":"IANA time zone for day boundaries, such as `Asia/Kolkata`. Default `UTC`.","schema":{"type":"string","maxLength":64}},{"name":"platforms","in":"query","required":false,"description":"Engines to count: claude, chatgpt, perplexity, gemini, grok, google_aio.","schema":{"type":"string","maxLength":2000}},{"name":"categories","in":"query","required":false,"description":"Prompt categories to count: discovery, problem_solution, use_case, expert, comparison, brand_research.","schema":{"type":"string","maxLength":2000}},{"name":"locations","in":"query","required":false,"description":"Prompt locations to count, as stored on the prompt.","schema":{"type":"string","maxLength":2000}},{"name":"theme_ids","in":"query","required":false,"description":"Theme ids to count; `none` counts prompts with no theme.","schema":{"type":"string","maxLength":2000}},{"name":"is_branded","in":"query","required":false,"description":"Count only prompts that do, or do not, name the brand.","schema":{"type":"string","enum":["true","false"]}},{"name":"limit","in":"query","required":false,"description":"Rows to return, 1 to 100. Not applied with `watched=true`.","schema":{"default":25,"type":"integer","minimum":1,"maximum":100}},{"name":"watched","in":"query","required":false,"description":"`true` lists every watched rival, named or not.","schema":{"type":"string","enum":["true","false"]}}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompetitorList"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/brands/{brand_id}/outreach-targets":{"get":{"operationId":"listOutreachTargets","summary":"List outreach targets","description":"The brand's Outreach targets, ranked by opportunity score as the board ranks them. A board refresh re-scores them, so a cursor from before a refresh is refused: start again.","tags":["outreach"],"parameters":[{"name":"brand_id","in":"path","required":true,"description":"The brand id, from `GET /v1/brands`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Items per page, 1 to 100.","schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"description":"The `next_cursor` of the previous page.","schema":{"type":"string","minLength":1}},{"name":"channel","in":"query","required":false,"schema":{"type":"string","enum":["reddit","publication"]}},{"name":"play","in":"query","required":false,"schema":{"type":"string","enum":["comment","post","pitch"]}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["suggested","in_progress","done","dismissed"]}}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OutreachTargetList"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/brands/{brand_id}/page-audits":{"get":{"operationId":"listPageAudits","summary":"List page audits","description":"The brand's page audits, newest first, as the Page Audit history lists them.","tags":["page-audits"],"parameters":[{"name":"brand_id","in":"path","required":true,"description":"The brand id, from `GET /v1/brands`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Items per page, 1 to 100.","schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"description":"The `next_cursor` of the previous page.","schema":{"type":"string","minLength":1}},{"name":"status","in":"query","required":false,"description":"Only audits in this state.","schema":{"type":"string","enum":["pending","analyzing","completed","failed"]}}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageAuditList"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/brands/{brand_id}/page-audits/{audit_id}":{"get":{"operationId":"getPageAudit","summary":"Get a page audit","description":"One audit with each dimension's checks.","tags":["page-audits"],"parameters":[{"name":"brand_id","in":"path","required":true,"description":"The brand id, from `GET /v1/brands`.","schema":{"type":"string"}},{"name":"audit_id","in":"path","required":true,"description":"The audit id, from `GET /v1/brands/{brand_id}/page-audits`.","schema":{"type":"string","pattern":"^[a-z0-9]{8,64}$"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PageAudit"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/brands/{brand_id}/prompts":{"get":{"operationId":"listPrompts","summary":"List prompts","description":"The brand's prompts, oldest first.","tags":["prompts"],"parameters":[{"name":"brand_id","in":"path","required":true,"description":"The brand id, from `GET /v1/brands`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Items per page, 1 to 100.","schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"description":"The `next_cursor` of the previous page.","schema":{"type":"string","minLength":1}},{"name":"status","in":"query","required":false,"description":"Only prompts in this state.","schema":{"type":"string","enum":["tracked","paused","never_run"]}},{"name":"category","in":"query","required":false,"description":"Only prompts in this category.","schema":{"type":"string","enum":["discovery","problem_solution","use_case","expert","comparison","brand_research"]}},{"name":"theme_id","in":"query","required":false,"description":"Only prompts in this theme; `none` for prompts with none.","schema":{"type":"string","maxLength":64}}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromptList"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/brands/{brand_id}/prompts/{prompt_id}":{"get":{"operationId":"getPrompt","summary":"Get a prompt","description":"One prompt of the brand.","tags":["prompts"],"parameters":[{"name":"brand_id","in":"path","required":true,"description":"The brand id, from `GET /v1/brands`.","schema":{"type":"string"}},{"name":"prompt_id","in":"path","required":true,"description":"The prompt id, from `GET /v1/brands/{brand_id}/prompts`.","schema":{"type":"string","pattern":"^[a-z0-9]{8,64}$"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Prompt"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/brands/{brand_id}/prompts/{prompt_id}/answers":{"get":{"operationId":"listAnswers","summary":"List a prompt's answers","description":"The answers a window counts for this prompt, newest first: those from its completed runs, or the latest run before it when it held none. Failed and filled-in answers are left out, as in the reports, so the answers of every prompt add up to the `answer_count` of `/visibility` over the same window and engines.","tags":["prompts"],"parameters":[{"name":"brand_id","in":"path","required":true,"description":"The brand id, from `GET /v1/brands`.","schema":{"type":"string"}},{"name":"prompt_id","in":"path","required":true,"description":"The prompt id, from `GET /v1/brands/{brand_id}/prompts`.","schema":{"type":"string","pattern":"^[a-z0-9]{8,64}$"}},{"name":"period","in":"query","required":false,"description":"`7d`, `30d` and `90d` run from midnight in `tz` that many days back to now; `365d` runs from midnight 365 days back to the end of today. Default `30d`. Not with `start_date`.","schema":{"type":"string","enum":["7d","30d","90d","365d"]}},{"name":"start_date","in":"query","required":false,"description":"First day of a custom window, in `tz`. Send with `end_date`.","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"end_date","in":"query","required":false,"description":"Last day of a custom window, in `tz`, included. The window may span at most 366 days, both dates counted.","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"tz","in":"query","required":false,"description":"IANA time zone for day boundaries, such as `Asia/Kolkata`. Default `UTC`.","schema":{"type":"string","maxLength":64}},{"name":"platforms","in":"query","required":false,"description":"Engines to list: claude, chatgpt, perplexity, gemini, grok, google_aio.","schema":{"type":"string","maxLength":2000}},{"name":"limit","in":"query","required":false,"description":"Items per page, 1 to 50.","schema":{"default":20,"type":"integer","minimum":1,"maximum":50}},{"name":"cursor","in":"query","required":false,"description":"The `next_cursor` of the previous page.","schema":{"type":"string","minLength":1}}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnswerList"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/brands/{brand_id}/recommendations":{"get":{"operationId":"listRecommendations","summary":"List recommendations","description":"The brand's Action Center recommendations, newest first.","tags":["recommendations"],"parameters":[{"name":"brand_id","in":"path","required":true,"description":"The brand id, from `GET /v1/brands`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Items per page, 1 to 100.","schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"description":"The `next_cursor` of the previous page.","schema":{"type":"string","minLength":1}},{"name":"status","in":"query","required":false,"description":"Only those in this column.","schema":{"type":"string","enum":["suggested","in_progress","done","dismissed"]}}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecommendationList"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/brands/{brand_id}/recommendations/{recommendation_id}":{"get":{"operationId":"getRecommendation","summary":"Get a recommendation","description":"One Action Center recommendation.","tags":["recommendations"],"parameters":[{"name":"brand_id","in":"path","required":true,"description":"The brand id, from `GET /v1/brands`.","schema":{"type":"string"}},{"name":"recommendation_id","in":"path","required":true,"description":"The recommendation id, from `GET /v1/brands/{brand_id}/recommendations`.","schema":{"type":"string","pattern":"^[a-z0-9]{8,64}$"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Recommendation"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/brands/{brand_id}/runs":{"get":{"operationId":"listRuns","summary":"List runs","description":"The brand's tracking runs, newest first.","tags":["runs"],"parameters":[{"name":"brand_id","in":"path","required":true,"description":"The brand id, from `GET /v1/brands`.","schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"description":"Items per page, 1 to 100.","schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"description":"The `next_cursor` of the previous page.","schema":{"type":"string","minLength":1}},{"name":"status","in":"query","required":false,"description":"Only runs in this state.","schema":{"type":"string","enum":["pending","running","completed","failed"]}}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RunList"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/brands/{brand_id}/runs/{run_id}":{"get":{"operationId":"getRun","summary":"Get a run","description":"One run of the brand.","tags":["runs"],"parameters":[{"name":"brand_id","in":"path","required":true,"description":"The brand id, from `GET /v1/brands`.","schema":{"type":"string"}},{"name":"run_id","in":"path","required":true,"description":"The run id, from `GET /v1/brands/{brand_id}/runs`.","schema":{"type":"string","pattern":"^[a-z0-9]{8,64}$"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Run"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/brands/{brand_id}/site-access":{"get":{"operationId":"getSiteAccess","summary":"Get site access","description":"The brand's latest Site Access check and its completed checks, newest first.","tags":["site-access"],"parameters":[{"name":"brand_id","in":"path","required":true,"description":"The brand id, from `GET /v1/brands`.","schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SiteAccess"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}},"/v1/brands/{brand_id}/visibility":{"get":{"operationId":"getVisibility","summary":"Get visibility","description":"The brand's visibility, position, sentiment and share of voice over a window, with the equal window before it, as the Visibility page shows them. Answers that failed are not counted.","tags":["visibility"],"parameters":[{"name":"brand_id","in":"path","required":true,"description":"The brand id, from `GET /v1/brands`.","schema":{"type":"string"}},{"name":"period","in":"query","required":false,"description":"`7d`, `30d` and `90d` run from midnight in `tz` that many days back to now; `365d` runs from midnight 365 days back to the end of today. Default `30d`. Not with `start_date`.","schema":{"type":"string","enum":["7d","30d","90d","365d"]}},{"name":"start_date","in":"query","required":false,"description":"First day of a custom window, in `tz`. Send with `end_date`.","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"end_date","in":"query","required":false,"description":"Last day of a custom window, in `tz`, included. The window may span at most 366 days, both dates counted.","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"}},{"name":"tz","in":"query","required":false,"description":"IANA time zone for day boundaries, such as `Asia/Kolkata`. Default `UTC`.","schema":{"type":"string","maxLength":64}},{"name":"platforms","in":"query","required":false,"description":"Engines to count: claude, chatgpt, perplexity, gemini, grok, google_aio.","schema":{"type":"string","maxLength":2000}},{"name":"categories","in":"query","required":false,"description":"Prompt categories to count: discovery, problem_solution, use_case, expert, comparison, brand_research.","schema":{"type":"string","maxLength":2000}},{"name":"locations","in":"query","required":false,"description":"Prompt locations to count, as stored on the prompt.","schema":{"type":"string","maxLength":2000}},{"name":"theme_ids","in":"query","required":false,"description":"Theme ids to count; `none` counts prompts with no theme.","schema":{"type":"string","maxLength":2000}},{"name":"is_branded","in":"query","required":false,"description":"Count only prompts that do, or do not, name the brand.","schema":{"type":"string","enum":["true","false"]}},{"name":"group_by","in":"query","required":false,"description":"Add a breakdown by engine or prompt category.","schema":{"type":"string","enum":["platform","category"]}}],"responses":{"200":{"description":"OK","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"RateLimit":{"$ref":"#/components/headers/RateLimit"},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Visibility"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"500":{"$ref":"#/components/responses/InternalError"},"503":{"$ref":"#/components/responses/ServiceUnavailable"}}}}},"components":{"schemas":{"Account":{"type":"object","properties":{"account_id":{"description":"The account this key reads.","type":"string"},"plan":{"type":"object","properties":{"id":{"type":"string","enum":["starter","pro","business","agency","agency_scale","pilot"]},"name":{"type":"string"},"is_trialing":{"type":"boolean"},"trial_ends_at":{"description":"When the trial ends; null outside a trial.","anyOf":[{"description":"RFC 3339 timestamp in UTC.","type":"string"},{"type":"null"}]}},"required":["id","name","is_trialing","trial_ends_at"]},"rate_limit":{"type":"object","properties":{"requests_per_minute":{"description":"Per key, in a fixed one-minute window.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"window_seconds":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["requests_per_minute","window_seconds"]},"key":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"masked":{"description":"The key with its middle hidden, as Settings lists it.","type":"string"},"created_at":{"description":"RFC 3339 timestamp in UTC.","type":"string"},"expires_at":{"description":"Null when the key never expires.","anyOf":[{"description":"RFC 3339 timestamp in UTC.","type":"string"},{"type":"null"}]},"brand_access":{"type":"object","properties":{"all_brands":{"description":"True when the key reads every brand, including ones added later.","type":"boolean"},"brand_ids":{"description":"The brands a restricted key reads; empty when `all_brands` is true.","type":"array","items":{"type":"string"}}},"required":["all_brands","brand_ids"]}},"required":["id","name","masked","created_at","expires_at","brand_access"]}},"required":["account_id","plan","rate_limit","key"]},"Answer":{"description":"One engine's answer to one prompt in one run.","type":"object","properties":{"id":{"type":"string"},"prompt_id":{"type":"string"},"run_id":{"type":"string"},"platform":{"type":"string"},"created_at":{"description":"RFC 3339 timestamp in UTC.","type":"string"},"text":{"description":"The answer as the engine returned it.","type":"string"},"text_markdown":{"description":"The answer reformatted as markdown, when it was.","anyOf":[{"type":"string"},{"type":"null"}]},"brand_named":{"type":"boolean"},"position":{"description":"Where the brand was named, 1 = first; null when not named.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sentiment":{"description":"How the answer spoke of the brand; null when not named.","anyOf":[{"type":"string","enum":["positive","neutral","negative","mixed"]},{"type":"null"}]},"competitors":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"position":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sentiment":{"anyOf":[{"type":"string","enum":["positive","neutral","negative","mixed"]},{"type":"null"}]},"domain":{"description":"Null when no domain could be confirmed; never guessed.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["name","position","sentiment","domain"]}},"sources":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string"},"domain":{"type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["url","domain","title"]}}},"required":["id","prompt_id","run_id","platform","created_at","text","text_markdown","brand_named","position","sentiment","competitors","sources"]},"AnswerList":{"type":"object","properties":{"window":{"$ref":"#/components/schemas/ReportWindow"},"data":{"type":"array","items":{"$ref":"#/components/schemas/Answer"}},"has_more":{"description":"Whether another page follows.","type":"boolean"},"next_cursor":{"description":"Pass as `cursor` for the next page; null on the last page.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["window","data","has_more","next_cursor"]},"Brand":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"slug":{"description":"The brand's path segment in the dashboard.","type":"string"},"domain":{"type":"string"},"domain_aliases":{"description":"Other domains the brand owns.","type":"array","items":{"type":"string"}},"category":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"location":{"description":"The market the brand targets, as entered.","anyOf":[{"type":"string"},{"type":"null"}]},"reach":{"anyOf":[{"type":"string","enum":["worldwide","country","local"]},{"type":"null"}]},"language":{"description":"ISO 639-1 code; null means English.","anyOf":[{"type":"string"},{"type":"null"}]},"platforms":{"description":"The engines tracked for this brand.","type":"array","items":{"type":"string"}},"is_tracking_paused":{"type":"boolean"},"created_at":{"description":"RFC 3339 timestamp in UTC.","type":"string"},"latest_run":{"description":"The latest completed run; null before the first.","anyOf":[{"$ref":"#/components/schemas/LatestRun"},{"type":"null"}]}},"required":["id","name","slug","domain","domain_aliases","category","description","location","reach","language","platforms","is_tracking_paused","created_at","latest_run"]},"BrandList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Brand"}},"has_more":{"description":"Whether another page follows.","type":"boolean"},"next_cursor":{"description":"Pass as `cursor` for the next page; null on the last page.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["data","has_more","next_cursor"]},"BreakdownRow":{"type":"object","properties":{"key":{"description":"The engine id, or the prompt category (`uncategorized` for none).","type":"string"},"answer_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"named_count":{"description":"Answers that named the brand.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prompt_count":{"description":"Distinct prompts behind those answers.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"visibility":{"description":"Percent of these answers naming the brand, 0-100. A category row weights each engine, as the Visibility page does.","type":"number"},"average_position":{"description":"When named; lower is better. Null when never named.","anyOf":[{"type":"number"},{"type":"null"}]},"sentiment_score":{"description":"0-100; null when never named.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["key","answer_count","named_count","prompt_count","visibility","average_position","sentiment_score"]},"Competitor":{"type":"object","properties":{"rank":{"description":"Place by visibility, the brand included; null for a watched rival no answer named.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"name":{"type":"string"},"domain":{"description":"Null when no domain could be confirmed; never guessed.","anyOf":[{"type":"string"},{"type":"null"}]},"is_you":{"type":"boolean"},"is_watched":{"description":"On the brand's watchlist.","type":"boolean"},"answer_count":{"description":"Answers naming it.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"visibility":{"description":"Percent of answers naming it, 0-100, each engine weighted. `previous` is null for a watched rival no answer in the window names.","$ref":"#/components/schemas/MetricPair"},"average_position":{"description":"When named; lower is better.","anyOf":[{"type":"number"},{"type":"null"}]},"sentiment_score":{"description":"0-100; null when never named.","anyOf":[{"type":"number"},{"type":"null"}]},"share_of_voice":{"description":"Its share of the brand mentions the listed brands receive, 0-100.","anyOf":[{"type":"number"},{"type":"null"}]},"movement":{"description":"`new`: absent from the comparison window and now at 5 points or more; `rising`: up by more than run-to-run noise.","anyOf":[{"type":"string","enum":["new","rising"]},{"type":"null"}]},"platforms":{"description":"Visibility on each engine that answered.","type":"array","items":{"type":"object","properties":{"platform":{"type":"string"},"visibility":{"type":"number"}},"required":["platform","visibility"]}}},"required":["rank","name","domain","is_you","is_watched","answer_count","visibility","average_position","sentiment_score","share_of_voice","movement","platforms"]},"CompetitorList":{"type":"object","properties":{"brand_id":{"type":"string"},"window":{"$ref":"#/components/schemas/ReportWindow"},"answer_count":{"description":"Answers counted, after filters.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"total":{"description":"Brands ranked, the brand included.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"you":{"description":"The brand's own row, wherever it ranks; null when no answer matches.","anyOf":[{"$ref":"#/components/schemas/Competitor"},{"type":"null"}]},"data":{"type":"array","items":{"$ref":"#/components/schemas/Competitor"}}},"required":["brand_id","window","answer_count","total","you","data"]},"LatestRun":{"description":"Scores stored on the run itself when it completed.","type":"object","properties":{"id":{"type":"string"},"completed_at":{"description":"RFC 3339 timestamp in UTC.","type":"string"},"platforms":{"description":"The engines the run asked.","type":"array","items":{"type":"string"}},"visibility":{"description":"The run's own stored visibility, 0-100, one decimal.","anyOf":[{"type":"number"},{"type":"null"}]},"average_position":{"description":"The average position when named, one decimal; null when never named.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","completed_at","platforms","visibility","average_position"]},"MetricPair":{"type":"object","properties":{"current":{"description":"Null when there is nothing to measure: no matching answer, or for position and sentiment no answer naming it, or for share of voice no mention of any brand.","anyOf":[{"type":"number"},{"type":"null"}]},"previous":{"description":"Over the comparison window; null when that window has nothing to measure or the figures are carried.","anyOf":[{"type":"number"},{"type":"null"}]},"change":{"description":"`current` minus `previous`, rounded once from the unrounded values as the dashboard shows it; null when either is null.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["current","previous","change"]},"OutreachTarget":{"description":"A place AI answers cite where the brand could be named: a subreddit, a thread or a publication.","type":"object","properties":{"id":{"type":"string"},"channel":{"type":"string","enum":["reddit","publication"]},"kind":{"description":"A subreddit, one of its threads, or a published page.","type":"string","enum":["community","thread","page"]},"play":{"description":"`comment` in a thread AI cites, `post` in a community, `pitch` a publication.","type":"string","enum":["comment","post","pitch"]},"url":{"type":"string"},"domain":{"type":"string"},"subreddit":{"anyOf":[{"type":"string"},{"type":"null"}]},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"article_type":{"description":"The page's format, such as `ranked_list` or `comparison`.","anyOf":[{"type":"string"},{"type":"null"}]},"source_type":{"description":"Who runs a publication, such as `editorial` or `review`: classed from the stored domain type and your competitors, as the Outreach board classes it (the Sources page can class a domain differently). Null for Reddit.","anyOf":[{"type":"string"},{"type":"null"}]},"citations":{"description":"Times AI answers cited it over the 90 days before `counts_as_of`. The counts, score and `last_cited_at` below share that window.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"counts_as_of":{"description":"The refresh the counts are from: the board's latest, or for a target you started, finished or drafted that no longer appears, the last refresh that found it cited.","type":"string"},"answers":{"description":"Answers that cited it.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prompts":{"description":"Prompts whose answers cited it.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"platforms":{"description":"Engines that cited it.","type":"array","items":{"type":"string"}},"answers_naming_competitors_not_you":{"description":"Answers that cited it and named a rival but not you.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"answers_naming_no_brand":{"description":"Answers that cited it and named no brand.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"answers_naming_you":{"description":"Answers that cited it and named you.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"competitors_named":{"description":"Up to five rivals named in the answers that cited it without naming you, most first.","type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"answers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["name","answers"]}},"opportunity_score":{"description":"0-100, how the board ranks it: how often AI cites it, the answers there that miss you, how many engines and prompts cite it, and how recently; for a publication also its format.","type":"number"},"tier":{"description":"The board's label for the score.","type":"string"},"status":{"type":"string","enum":["suggested","in_progress","done","dismissed"]},"steps":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"completed":{"type":"boolean"}},"required":["text","completed"]}},"rules_url":{"description":"The subreddit's rules page.","anyOf":[{"type":"string"},{"type":"null"}]},"last_cited_at":{"description":"The latest answer in the window that cited it.","anyOf":[{"description":"RFC 3339 timestamp in UTC.","type":"string"},{"type":"null"}]},"started_at":{"anyOf":[{"description":"RFC 3339 timestamp in UTC.","type":"string"},{"type":"null"}]},"completed_at":{"anyOf":[{"description":"RFC 3339 timestamp in UTC.","type":"string"},{"type":"null"}]},"recommendation_id":{"description":"The Action Center recommendation this work counts toward; marking the target done moves it to done.","anyOf":[{"type":"string"},{"type":"null"}]},"cooling_since":{"description":"When you last finished a target in this subreddit, if within 14 days: pace yourself before posting there again. Null on a finished target.","anyOf":[{"description":"RFC 3339 timestamp in UTC.","type":"string"},{"type":"null"}]}},"required":["id","channel","kind","play","url","domain","subreddit","title","article_type","source_type","citations","counts_as_of","answers","prompts","platforms","answers_naming_competitors_not_you","answers_naming_no_brand","answers_naming_you","competitors_named","opportunity_score","tier","status","steps","rules_url","last_cited_at","started_at","completed_at","recommendation_id","cooling_since"]},"OutreachTargetList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/OutreachTarget"}},"has_more":{"description":"Whether another page follows.","type":"boolean"},"next_cursor":{"description":"Pass as `cursor` for the next page; null on the last page.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["data","has_more","next_cursor"]},"PageAudit":{"description":"One audit of one page, with every dimension's checks.","type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string","enum":["pending","analyzing","completed","failed"]},"page_type":{"description":"What the page is, such as `blog_article` or `product`.","anyOf":[{"type":"string"},{"type":"null"}]},"page_score":{"description":"0-100, the weighted score over the dimensions audited. Null until it completes.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"scores":{"description":"Each dimension's 0-100 score. A page that served no text is scored on crawlability and page speed only; page speed is null when it could not be measured.","type":"object","properties":{"crawlability":{"description":"0-100; null when the dimension was not audited.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"content_quality":{"description":"0-100; null when the dimension was not audited.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"page_speed":{"description":"0-100; null when the dimension was not audited.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"ai_readiness":{"description":"0-100; null when the dimension was not audited.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"citation_potential":{"description":"0-100; null when the dimension was not audited.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"authority_trust":{"description":"0-100; null when the dimension was not audited.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["crawlability","content_quality","page_speed","ai_readiness","citation_potential","authority_trust"]},"seo_score":{"description":"0-100.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"geo_score":{"description":"0-100, generative-engine optimization.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"word_count":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"created_at":{"description":"RFC 3339 timestamp in UTC.","type":"string"},"completed_at":{"anyOf":[{"description":"RFC 3339 timestamp in UTC.","type":"string"},{"type":"null"}]},"error":{"description":"Why the audit failed; null otherwise.","anyOf":[{"type":"string"},{"type":"null"}]},"meta_description":{"anyOf":[{"type":"string"},{"type":"null"}]},"dimensions":{"description":"Each dimension audited, with the checks behind its score.","type":"array","items":{"type":"object","properties":{"id":{"type":"string","enum":["crawlability","content_quality","page_speed","ai_readiness","citation_potential","authority_trust"]},"label":{"type":"string"},"score":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"weight":{"description":"Its share of the page score, 0-1: the shares of the dimensions audited sum to 1, as the score divides them.","type":"number"},"summary":{"type":"string"},"recommendations":{"type":"array","items":{"type":"string"}},"signals":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"label":{"type":"string"},"status":{"type":"string","enum":["pass","warning","fail"]},"score":{"type":"number"},"max_score":{"type":"number"},"feedback":{"type":"string"}},"required":["id","label","status","score","max_score","feedback"]}}},"required":["id","label","score","weight","summary","recommendations","signals"]}}},"required":["id","url","title","status","page_type","page_score","scores","seo_score","geo_score","word_count","created_at","completed_at","error","meta_description","dimensions"]},"PageAuditList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/PageAuditSummary"}},"has_more":{"description":"Whether another page follows.","type":"boolean"},"next_cursor":{"description":"Pass as `cursor` for the next page; null on the last page.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["data","has_more","next_cursor"]},"PageAuditSummary":{"description":"One audit of one page.","type":"object","properties":{"id":{"type":"string"},"url":{"type":"string"},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string","enum":["pending","analyzing","completed","failed"]},"page_type":{"description":"What the page is, such as `blog_article` or `product`.","anyOf":[{"type":"string"},{"type":"null"}]},"page_score":{"description":"0-100, the weighted score over the dimensions audited. Null until it completes.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"scores":{"description":"Each dimension's 0-100 score. A page that served no text is scored on crawlability and page speed only; page speed is null when it could not be measured.","type":"object","properties":{"crawlability":{"description":"0-100; null when the dimension was not audited.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"content_quality":{"description":"0-100; null when the dimension was not audited.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"page_speed":{"description":"0-100; null when the dimension was not audited.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"ai_readiness":{"description":"0-100; null when the dimension was not audited.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"citation_potential":{"description":"0-100; null when the dimension was not audited.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"authority_trust":{"description":"0-100; null when the dimension was not audited.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["crawlability","content_quality","page_speed","ai_readiness","citation_potential","authority_trust"]},"seo_score":{"description":"0-100.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"geo_score":{"description":"0-100, generative-engine optimization.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"word_count":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"created_at":{"description":"RFC 3339 timestamp in UTC.","type":"string"},"completed_at":{"anyOf":[{"description":"RFC 3339 timestamp in UTC.","type":"string"},{"type":"null"}]},"error":{"description":"Why the audit failed; null otherwise.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","url","title","status","page_type","page_score","scores","seo_score","geo_score","word_count","created_at","completed_at","error"]},"Problem":{"description":"An RFC 9457 problem details object.","type":"object","properties":{"type":{"description":"A link to this error in the docs.","type":"string"},"title":{"type":"string"},"status":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"detail":{"description":"What went wrong, and what to do about it.","type":"string"},"code":{"type":"string","enum":["invalid_parameter","unknown_parameter","invalid_cursor","api_key_in_url","missing_api_key","invalid_api_key","api_key_revoked","api_key_expired","api_key_orphaned","plan_upgrade_required","subscription_inactive","not_found","route_not_found","method_not_allowed","rate_limited","internal_error","service_unavailable"]},"request_id":{"description":"Quote this when contacting support.","type":"string"},"errors":{"description":"One entry per invalid parameter.","type":"array","items":{"type":"object","properties":{"parameter":{"type":"string"},"message":{"type":"string"}},"required":["parameter","message"]}}},"required":["type","title","status","detail","code","request_id"]},"Prompt":{"description":"A question in the brand's prompt library: tracked, paused or never run.","type":"object","properties":{"id":{"type":"string"},"text":{"type":"string"},"category":{"description":"One of discovery, problem_solution, use_case, expert, comparison, brand_research.","type":"string"},"status":{"description":"`tracked`: asked on every run. `paused`: tracked before, not asked now, its answers kept. `never_run`: not tracked, and never switched on since tracking dates began to be recorded (March 2026), so a prompt tracked only before then and paused since also reads `never_run`, as on the dashboard.","type":"string","enum":["tracked","paused","never_run"]},"theme":{"anyOf":[{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},{"type":"null"}]},"location":{"description":"The market the prompt is asked from, as stored.","anyOf":[{"type":"string"},{"type":"null"}]},"is_branded":{"description":"Whether the prompt was recorded as naming the brand when it was generated or added; a prompt added by hand is recorded as not. The text is not re-checked.","type":"boolean"},"volume":{"description":"Estimated search volume, 1-5.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"difficulty":{"description":"How crowded its answers are with competitors, 0-5: measured once a run asks it, estimated before.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"created_at":{"description":"RFC 3339 timestamp in UTC.","type":"string"},"activated_at":{"description":"When it was first tracked. Null for a prompt never tracked, and for one first tracked before March 2026, when this date began to be recorded.","anyOf":[{"description":"RFC 3339 timestamp in UTC.","type":"string"},{"type":"null"}]}},"required":["id","text","category","status","theme","location","is_branded","volume","difficulty","created_at","activated_at"]},"PromptList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Prompt"}},"has_more":{"description":"Whether another page follows.","type":"boolean"},"next_cursor":{"description":"Pass as `cursor` for the next page; null on the last page.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["data","has_more","next_cursor"]},"Recommendation":{"description":"An Action Center recommendation.","type":"object","properties":{"id":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"rationale":{"type":"string"},"category":{"description":"What kind of gap it answers, such as `content_gap` or `citation_opportunity`.","type":"string"},"action_type":{"description":"`create_content`, `optimize_page`, `fix_technical`, `build_authority` or `outreach`; null on older ones.","anyOf":[{"type":"string"},{"type":"null"}]},"priority":{"anyOf":[{"type":"string","enum":["quick_win","strategic","moderate"]},{"type":"null"}]},"impact":{"description":"1-3, low to high.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"effort":{"description":"1-3, low to high.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"status":{"description":"The Action Center column it sits in. `done` includes one an Outreach target marked done moved there.","type":"string","enum":["suggested","in_progress","done","dismissed"]},"steps":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string"},"completed":{"type":"boolean"}},"required":["text","completed"]}},"expected_outcome":{"anyOf":[{"type":"string"},{"type":"null"}]},"related_domains":{"type":"array","items":{"type":"string"}},"related_competitors":{"type":"array","items":{"type":"string"}},"related_pages":{"type":"array","items":{"type":"string"}},"created_at":{"description":"RFC 3339 timestamp in UTC.","type":"string"},"started_at":{"description":"When it first moved to in progress.","anyOf":[{"description":"RFC 3339 timestamp in UTC.","type":"string"},{"type":"null"}]},"done_at":{"description":"When it last moved to done; null unless done.","anyOf":[{"description":"RFC 3339 timestamp in UTC.","type":"string"},{"type":"null"}]},"measurement":{"description":"Null unless it is done.","anyOf":[{"type":"object","properties":{"state":{"description":"`awaiting`: its window is open and nothing is measured yet. `measured`: re-measured at least once. `unmeasurable`: no baseline was recorded, or it was done before measurement windows existed, so the board shows no countdown.","type":"string","enum":["awaiting","measured","unmeasurable"]},"expects_visibility_lift":{"description":"False for technical fixes, which are not expected to move visibility.","type":"boolean"},"metric":{"description":"What it is measured against: `overall`, `category:<category>` or `platform:<engine>`.","anyOf":[{"type":"object","properties":{"key":{"type":"string"},"label":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["key","label"]},{"type":"null"}]},"baseline":{"description":"The metric, 0-100, from the run it was generated from.","anyOf":[{"type":"number"},{"type":"null"}]},"current":{"description":"The metric at the latest re-measure.","anyOf":[{"type":"number"},{"type":"null"}]},"lift":{"description":"`current` minus `baseline`, in points, only when it is larger than `noise_band` either way, as the Action Center shows it; null otherwise.","anyOf":[{"type":"number"},{"type":"null"}]},"noise_band":{"description":"Points a quiet week moves this metric, measured over real runs.","type":"number"},"measured_at":{"anyOf":[{"description":"RFC 3339 timestamp in UTC.","type":"string"},{"type":"null"}]},"window_opened_at":{"description":"When its measurement window opened: the first time it moved to done or in review. Null when none opened.","anyOf":[{"description":"RFC 3339 timestamp in UTC.","type":"string"},{"type":"null"}]},"runs_in_window":{"description":"Completed runs since its window opened, counted over the brand's latest 60 as the board counts them. Null when no window opened.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"answers":{"description":"The answers inside the metric, compared with generation as of `measured_at`; null until it is re-measured after a run in its window, and on older ones recorded without a per-answer baseline.","anyOf":[{"type":"object","properties":{"won":{"description":"Answers missing the brand at generation that named it in both runs compared.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"provisional":{"description":"Answers missing it at generation that named it in the latest run compared only.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"lost":{"description":"Answers that named it at generation and missed it in both runs compared.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"held":{"description":"Answers that named it at generation and still do.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"runs_compared":{"description":"Runs after its window opened that the last re-measure compared, at most two.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"confirmable":{"description":"True once two runs were compared. Until then `won` and `lost` are 0 and every gain is provisional.","type":"boolean"}},"required":["won","provisional","lost","held","runs_compared","confirmable"]},{"type":"null"}]}},"required":["state","expects_visibility_lift","metric","baseline","current","lift","noise_band","measured_at","window_opened_at","runs_in_window","answers"]},{"type":"null"}]}},"required":["id","title","description","rationale","category","action_type","priority","impact","effort","status","steps","expected_outcome","related_domains","related_competitors","related_pages","created_at","started_at","done_at","measurement"]},"RecommendationList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Recommendation"}},"has_more":{"description":"Whether another page follows.","type":"boolean"},"next_cursor":{"description":"Pass as `cursor` for the next page; null on the last page.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["data","has_more","next_cursor"]},"ReportWindow":{"description":"The answers a report counts: those from completed runs inside the window.","type":"object","properties":{"start":{"description":"RFC 3339 timestamp in UTC.","type":"string"},"end":{"description":"RFC 3339 timestamp in UTC.","type":"string"},"previous_start":{"description":"The comparison window runs from here to `start`: the whole days before `start` for `7d`, `30d` and `90d`, the same length as the window otherwise.","type":"string"},"time_zone":{"type":"string"},"period":{"description":"The preset, or null for a custom window.","anyOf":[{"type":"string","enum":["7d","30d","90d","365d"]},{"type":"null"}]},"carried_from":{"description":"Set when the window held no completed run: the figures are the latest run before it, which completed at this time, and nothing is compared.","anyOf":[{"description":"RFC 3339 timestamp in UTC.","type":"string"},{"type":"null"}]}},"required":["start","end","previous_start","time_zone","period","carried_from"]},"Run":{"description":"A tracking run: each tracked prompt asked on each of its engines once.","type":"object","properties":{"id":{"type":"string"},"status":{"type":"string","enum":["pending","running","completed","failed"]},"platforms":{"description":"The engines the run asked.","type":"array","items":{"type":"string"}},"created_at":{"description":"RFC 3339 timestamp in UTC.","type":"string"},"started_at":{"anyOf":[{"description":"RFC 3339 timestamp in UTC.","type":"string"},{"type":"null"}]},"completed_at":{"anyOf":[{"description":"RFC 3339 timestamp in UTC.","type":"string"},{"type":"null"}]},"prompt_count":{"description":"Prompts the run asked; null until it completes.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"answer_count":{"description":"Answers the run's scores count: the successful ones and the filled-in ones. Null until it completes.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"failed_count":{"description":"Questions that failed, filled-in ones included. Null until it completes.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"filled_count":{"description":"Failed questions filled in from the same prompt's previous answer; 0 on runs from before filling-in existed. Null until it completes.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"visibility":{"description":"The run's own visibility, 0-100, fixed when it completed: it counts filled-in answers, and the answers of prompts deleted since. The reports leave both out, so they can differ. Null until it completes.","anyOf":[{"type":"number"},{"type":"null"}]},"average_position":{"description":"The run's stored average position when named; null until it completes, and when the brand was never named.","anyOf":[{"type":"number"},{"type":"null"}]}},"required":["id","status","platforms","created_at","started_at","completed_at","prompt_count","answer_count","failed_count","filled_count","visibility","average_position"]},"RunList":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Run"}},"has_more":{"description":"Whether another page follows.","type":"boolean"},"next_cursor":{"description":"Pass as `cursor` for the next page; null on the last page.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["data","has_more","next_cursor"]},"SiteAccess":{"type":"object","properties":{"brand_id":{"type":"string"},"check":{"description":"Null when the brand has never run a check.","anyOf":[{"$ref":"#/components/schemas/SiteAccessCheck"},{"type":"null"}]},"history":{"description":"Completed checks, newest first, the latest completed one included, at most 26.","type":"array","items":{"type":"object","properties":{"checked_at":{"description":"RFC 3339 timestamp in UTC.","type":"string"},"verdict":{"description":"`unknown` comes first: no browser could load the homepage either, or robots.txt disallows RanqoBot, so the crawlers' results cannot be read, whatever else was found. Otherwise `blocked`: a crawler that feeds live AI answers is refused at the edge, or robots.txt turns away a live-answer or search crawler. `warn`: something worth a look, such as a search or training crawler refused at the edge, or no sitemap. `clear`: no blocker and no warning; notices may remain.","type":"string","enum":["clear","warn","blocked","unknown"]},"blockers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"warnings":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"notices":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"note":{"description":"What changed since the check before; \"First check\" on the first.","type":"string"}},"required":["checked_at","verdict","blockers","warnings","notices","note"]}}},"required":["brand_id","check","history"]},"SiteAccessCheck":{"description":"Whether AI crawlers and search engines can fetch the site: each one fetches the homepage beside a browser.","type":"object","properties":{"status":{"description":"The latest check's state. A check that stopped reporting reads `failed`.","type":"string","enum":["pending","running","completed","failed"]},"origin":{"description":"The site the latest check was pointed at: after redirects once it completes, the brand's own domain while it runs or if it failed.","type":"string"},"checked_at":{"description":"When the check the findings below come from completed. While a new check runs, or after one fails, they stay that earlier check's. Null before any check completes.","anyOf":[{"description":"RFC 3339 timestamp in UTC.","type":"string"},{"type":"null"}]},"verdict":{"description":"Null before any check completes.","anyOf":[{"description":"`unknown` comes first: no browser could load the homepage either, or robots.txt disallows RanqoBot, so the crawlers' results cannot be read, whatever else was found. Otherwise `blocked`: a crawler that feeds live AI answers is refused at the edge, or robots.txt turns away a live-answer or search crawler. `warn`: something worth a look, such as a search or training crawler refused at the edge, or no sitemap. `clear`: no blocker and no warning; notices may remain.","type":"string","enum":["clear","warn","blocked","unknown"]},{"type":"null"}]},"reachable":{"description":"Whether a browser could load the homepage, the control every crawler is read against; null when not measured.","anyOf":[{"type":"boolean"},{"type":"null"}]},"counts":{"description":"Findings by severity, and `passes`, the crawlers with a `pass` verdict: those that received the page, and robots.txt-only tokens the file allows. Null before any check completes.","anyOf":[{"type":"object","properties":{"blockers":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"warnings":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"notices":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"passes":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["blockers","warnings","notices","passes"]},{"type":"null"}]},"findings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"severity":{"type":"string","enum":["blocker","warn","notice"]},"title":{"type":"string"},"detail":{"type":"string"}},"required":["id","severity","title","detail"]}},"crawlers":{"description":"Each crawler that fetched the homepage, read against the browser control; tokens that exist only in robots.txt, such as Google-Extended, are never requested and carry only their robots.txt verdict.","type":"array","items":{"type":"object","properties":{"key":{"description":"The crawler's robots.txt token.","type":"string"},"label":{"type":"string"},"vendor":{"type":"string"},"role":{"description":"What the crawler feeds.","type":"string","enum":["live_answer","training","search"]},"verdict":{"type":"string","enum":["pass","blocked","rate_limited","thin","robots_disallowed","unknown"]},"http_status":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"fetch_error":{"description":"Set when the request got no HTTP answer.","anyOf":[{"type":"string","enum":["timeout","error"]},{"type":"null"}]},"latency_ms":{"anyOf":[{"type":"number"},{"type":"null"}]},"words":{"description":"Visible words the crawler received.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]}},"required":["key","label","vendor","role","verdict","http_status","fetch_error","latency_ms","words"]}},"robots_txt":{"anyOf":[{"type":"object","properties":{"status":{"description":"`ok`, `missing`, `unreadable`, `cdn-blocked` or `ranqo-disallowed`.","anyOf":[{"type":"string"},{"type":"null"}]},"http_status":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"disallowed_ai":{"description":"AI crawlers the file turns away from the homepage.","type":"array","items":{"type":"string"}},"disallowed_search":{"description":"Search crawlers the file turns away from the homepage.","type":"array","items":{"type":"string"}},"declares_sitemap":{"type":"boolean"}},"required":["status","http_status","disallowed_ai","disallowed_search","declares_sitemap"]},{"type":"null"}]},"llms_txt":{"anyOf":[{"type":"object","properties":{"url":{"type":"string"},"present":{"description":"A real llms.txt: a 200 serving HTML does not count.","type":"boolean"},"http_status":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"sections":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"links":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"checks":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"ok":{"type":"boolean"},"title":{"type":"string"}},"required":["id","ok","title"]}}},"required":["url","present","http_status","sections","links","checks"]},{"type":"null"}]},"sitemap":{"anyOf":[{"type":"object","properties":{"url":{"anyOf":[{"type":"string"},{"type":"null"}]},"reachable":{"type":"boolean"},"http_status":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"url_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"declared_in_robots":{"type":"boolean"},"newest_lastmod":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["url","reachable","http_status","url_count","declared_in_robots","newest_lastmod"]},{"type":"null"}]},"fetch_count":{"description":"Requests the check sent to the site.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"error":{"description":"Why the latest check failed; null otherwise.","anyOf":[{"type":"string"},{"type":"null"}]}},"required":["status","origin","checked_at","verdict","reachable","counts","findings","crawlers","robots_txt","llms_txt","sitemap","fetch_count","error"]},"Visibility":{"type":"object","properties":{"brand_id":{"type":"string"},"window":{"$ref":"#/components/schemas/ReportWindow"},"answer_count":{"description":"Answers counted, after filters.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"prompt_count":{"description":"Distinct prompts behind them.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"visibility":{"description":"Percent of answers naming the brand, 0-100, each engine weighted.","$ref":"#/components/schemas/MetricPair"},"average_position":{"description":"Average position when named, 1 = named first; lower is better.","$ref":"#/components/schemas/MetricPair"},"sentiment_score":{"description":"0-100: positive counts 1, neutral half, negative nothing.","$ref":"#/components/schemas/MetricPair"},"share_of_voice":{"description":"The brand's share of brand mentions in the answers, 0-100. Rivals count when named in more than one answer, named with their website, or watched.","$ref":"#/components/schemas/MetricPair"},"position_distribution":{"description":"Answers by where the brand was named.","type":"object","properties":{"first":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"second":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"third":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"fourth_plus":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"not_named":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["first","second","third","fourth_plus","not_named"]},"sentiment_distribution":{"description":"Answers naming the brand, by tone.","type":"object","properties":{"positive":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"neutral":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"negative":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["positive","neutral","negative"]},"breakdown":{"description":"Present when `group_by` is sent.","anyOf":[{"type":"object","properties":{"group_by":{"type":"string","enum":["platform","category"]},"rows":{"type":"array","items":{"$ref":"#/components/schemas/BreakdownRow"}}},"required":["group_by","rows"]},{"type":"null"}]}},"required":["brand_id","window","answer_count","prompt_count","visibility","average_position","sentiment_score","share_of_voice","position_distribution","sentiment_distribution","breakdown"]}},"responses":{"BadRequest":{"description":"Codes: invalid_parameter, unknown_parameter, invalid_cursor, api_key_in_url.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"RateLimit":{"$ref":"#/components/headers/RateLimit","description":"Set once the key has been admitted, so absent on errors raised before it."},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy","description":"Set once the key has been admitted, so absent on errors raised before it."}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"Unauthorized":{"description":"Codes: missing_api_key, invalid_api_key, api_key_revoked, api_key_expired, api_key_orphaned.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"WWW-Authenticate":{"$ref":"#/components/headers/WwwAuthenticate"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"Forbidden":{"description":"Codes: plan_upgrade_required, subscription_inactive.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"NotFound":{"description":"Codes: not_found, route_not_found.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"RateLimit":{"$ref":"#/components/headers/RateLimit","description":"Set once the key has been admitted, so absent on errors raised before it."},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy","description":"Set once the key has been admitted, so absent on errors raised before it."}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"RateLimited":{"description":"Codes: rate_limited.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"},"RateLimit":{"$ref":"#/components/headers/RateLimit","description":"Set when the key's own limit refused the request."},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy","description":"Set when the key's own limit refused the request."}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"InternalError":{"description":"Codes: internal_error.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"RateLimit":{"$ref":"#/components/headers/RateLimit","description":"Set once the key has been admitted, so absent on errors raised before it."},"RateLimit-Policy":{"$ref":"#/components/headers/RateLimitPolicy","description":"Set once the key has been admitted, so absent on errors raised before it."}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"ServiceUnavailable":{"description":"Codes: service_unavailable.","headers":{"X-Request-Id":{"$ref":"#/components/headers/RequestId"},"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"headers":{"RequestId":{"description":"The request id; quote it to support.","schema":{"type":"string"}},"RateLimit":{"description":"Requests left in this window and seconds until it resets.","schema":{"type":"string"}},"RateLimitPolicy":{"description":"The key's limit per window.","schema":{"type":"string"}},"RetryAfter":{"description":"Seconds to wait before retrying.","required":true,"schema":{"type":"integer","minimum":0}},"WwwAuthenticate":{"description":"The Bearer challenge, naming the error.","required":true,"schema":{"type":"string"}}},"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"A Ranqo API key, created in Settings."}}}}