Metrics API
Pull AnswerixAI visibility, competitor, citation, AI traffic, prompt and shopping metrics into Looker Studio or dashboards with the /api/v1 Metrics API.
Updated
The AnswerixAI Metrics API is a read-only set of endpoints under /api/v1/* for reporting tools. It returns the same numbers the dashboard shows (visibility, trends, competitors and share of voice, citations, AI traffic, prompt performance and shopping cards), so you can combine AnswerixAI data with other sources in Looker Studio, a spreadsheet or your own dashboard. The Looker Studio connector uses this API.
How does the Metrics API relate to the REST API?
Each Metrics API endpoint returns exactly the same response as the REST API endpoint of the same name under /api/mcp/*. The Metrics API is a deliberately smaller, read-only subset: it has no topics, prompts, content opportunities or site audits. Use the REST API when you need those.
How do I authenticate?
Send an ans_ API key as a bearer token. Create one in Settings → API Keys; it is shown once.
curl "https://answerixai.com/api/v1/brands" \
-H "Authorization: Bearer ans_YOUR_KEY" \
-H "Accept: application/json"
Replace https://answerixai.com with the host of the AnswerixAI app you sign in to (shown in the MCP endpoint in Settings → API Keys). A key reads every brand in its owner's organization, and revoking it takes effect immediately. Requests are limited to 250 per 15 minutes per IP address. Details and error codes are in Authentication.
What conventions does the Metrics API follow?
Every AnswerixAI Metrics API endpoint is a GET request that returns JSON. brand_id is required on every endpoint except whoami and brands, and date_from and date_to take YYYY-MM-DD dates in UTC. Visibility, trend, competitor, citation and prompt numbers exclude ChatGPT Shopping answers.
- Every endpoint is
GETand returns JSON. brand_idis required on every endpoint exceptwhoamiandbrands. Without it you get400 {"error": "brand_id is required"}.date_fromanddate_totakeYYYY-MM-DDin UTC. A baredate_toincludes the whole day, through 23:59:59.999 UTC. Leave both out for all history.modelis a comma-separated list of model identifiers; use themodel_usedvalues fromcompetitor-comparison.regionis a region code such asUS.topic_idis a topic UUID from the dashboard or the REST API.- Errors return
{"error": "<message>"}with400,401,402,404,429or500. - Visibility, trend, competitor, citation and prompt numbers exclude ChatGPT Shopping answers.
Which endpoints does the Metrics API have?
The AnswerixAI Metrics API has nine GET endpoints under /api/v1/: whoami, brands, visibility-summary, visibility-trend, competitor-comparison, citations, ai-traffic, prompt-performance and shopping-cards. Every endpoint except whoami and brands requires brand_id.
| Endpoint | Parameters (bold = required) |
|---|---|
GET /api/v1/whoami |
None |
GET /api/v1/brands |
None |
GET /api/v1/visibility-summary |
brand_id, date_from, date_to, model, region |
GET /api/v1/visibility-trend |
brand_id, date_from, date_to, model, region, topic_id, granularity |
GET /api/v1/competitor-comparison |
brand_id, date_from, date_to, model, region, topic_id |
GET /api/v1/citations |
brand_id, date_from, date_to, model, region, topic_id, limit, source_filter |
GET /api/v1/ai-traffic |
brand_id, date_from, date_to |
GET /api/v1/prompt-performance |
brand_id, date_from, date_to, model, region, topic_id, sort_by, order, limit |
GET /api/v1/shopping-cards |
brand_id, role, platform, region, limit, cursor |
GET /api/v1/whoami
GET /api/v1/whoami returns the userId, email and organizationId that your API key resolves to, and needs no parameters. Use it as a connection test.
GET /api/v1/brands
GET /api/v1/brands returns every brand in your organization as a bare JSON array, newest first, and needs no parameters. Each brand has id, name, slug, industry, region and created_at. Use id as brand_id everywhere else.
[
{ "id": "5d1c2f0e-8a4b-4c3e-9f6a-2b7d1e0c9a88", "name": "Acme", "slug": "acme", "industry": "Software", "region": "US", "created_at": "2026-08-02T09:14:31+00:00" }
]
GET /api/v1/visibility-summary
GET /api/v1/visibility-summary returns the headline Visibility score, mention and citation totals and top competitors for a brand over a date range, and requires brand_id. This endpoint has no topic_id filter.
totals.aiVisibilityScore: the Visibility score, 0–100, ornullwithout answers.totals.resultCount,totalMentions,totalCitations,mentionAnswers,citationAnswers,positionFactor,avgVisibility.topCompetitors: up to 5 competitors withname,mentions,avgVisibilityandscore.
How is the visibility score in the trend calculated?
GET /api/v1/visibility-trend returns a brand's visibility as a series of daily or weekly buckets, { "granularity": "...", "buckets": [...] }, and requires brand_id. Each bucket has date, result_count, avg_visibility_score, ai_visibility_score, total_mentions, total_citations and avg_competitor_score.
ai_visibility_scoreis the headline Visibility score for that day: 100 × (0.6 × mention rate + 0.25 × citation rate + 0.15 × position factor). The position factor is damped when few answers mention the brand. See Visibility scoring.avg_visibility_scoreis the rounded average of per-answer visibility scores, andavg_competitor_scorethe same for competitors (nullwhen none appeared).granularity=day(default) gives one bucket per UTC day.granularity=weekgives one bucket per ISO week, dated to the Monday it starts; weekly buckets haveai_visibility_score: nullbecause the score's parts can't be summed across days.
GET /api/v1/competitor-comparison
GET /api/v1/competitor-comparison returns your brand's visibility next to each tracked competitor's, plus share of voice, as brand, competitors and share_of_voice. It requires brand_id.
brandand each entry incompetitorscarryavg_visibility_score,ai_visibility_score,total_mentions,total_citationsandappearance_count; competitors also havecompetitor_idandname.share_of_voice.overall_sov_pctis your mentions as a percentage of your mentions plus competitor mentions.share_of_voice.by_platformrepeats it perplatformandmodel_used.
GET /api/v1/citations
GET /api/v1/citations returns the sources cited in AI answers about a brand as totals, source_type_breakdown, top_domains and top_urls, and requires brand_id.
source_filter:all(default),owned,competitororexternal.limit: 1–200, default 50, applied totop_domainsandtop_urls.- Every domain and URL has a
category:you,competitor,editorial,forum,social,review,institutionalorother. Your own domains are alwaysyou(theownedfilter selects them). source_type_breakdowncounts each domain once, withcategory,countandpct.
GET /api/v1/ai-traffic
GET /api/v1/ai-traffic returns the AI-referred visits recorded by a brand's tracking script, and requires brand_id. Only date_from and date_to filter this endpoint. It returns total_visits, platform_breakdown (platform, visits), top_pages (up to 10, url, visits) and country_breakdown (country, visits).
GET /api/v1/prompt-performance
GET /api/v1/prompt-performance returns per-prompt visibility, mentions and citations for a brand as brand, window and prompts, and requires brand_id. Each prompt has prompt_id, prompt_text, topic_name, result_count, avg_visibility, total_mentions, total_citations and avg_competitor_score.
sort_by:visibility(default),mentions,citationsorappearances.order:desc(default) orasc.limit: 1–100, default 10.
GET /api/v1/shopping-cards
GET /api/v1/shopping-cards returns the product cards from AI shopping answers for a brand with Shopping mode on, newest first, as cards and next_cursor. It requires brand_id.
role:own,competitororother.platform: the platform slug on the card, for examplechatgpt-shopping.region: region code.limit: 1–200, default 50.cursor: pass the previous response'snext_cursorto get the next page. It isnullon the last page.
Full response examples for every endpoint are in the REST API reference.
Related
Was this page helpful?