AEO
Track a location's visibility in AI answer engines (ChatGPT, Gemini, Perplexity): how often it's mentioned, where it ranks against competitors, and what's holding its score back.
Returns the latest AI-visibility report for a location: overall and per-engine scores, the keyword/prompt matrix, competitor gap and ranking comparisons, citation coverage, sentiment, and recommended fixes. Report generation is asynchronous — this is also the poll target for POST /api/v1/aeo/reports/enqueue: keep calling this endpoint and watch the generating field until it flips back to false and generatedAt updates. Pass prompt to drill into one tracked prompt instead of the full report.
Get a location's AEO report
/api/v1/aeo/reports{
"data": {
"generatedAt": "2026-02-01T06:00:00.000Z",
"generating": false,
"configuredEngines": [
"ChatGPT",
"Gemini"
],
"visibility": {
"overall": 62,
"label": "GOOD",
"message": "Your business shows up for most of the prompts you're tracking.",
"engines": {
"ChatGPT": {
"score": 68,
"comparisonPct": 12,
"configured": true
},
"Gemini": {
"score": 56,
"comparisonPct": -4,
"configured": true
},
"Perplexity": {
"score": null,
"comparisonPct": null,
"configured": false
}
}
},
"metrics": {
"visibility": {
"value": 62,
"delta": 5
},
"mentionRate": {
"value": 71,
"delta": 3
},
"avgPosition": {
"value": 2.1,
"delta": -0.4
},
"promptsCovered": {
"value": 8,
"total": 10
},
"sourcesCited": {
"value": 14,
"delta": 2
}
},
"keywordMap": {
"ChatGPT": [
{
"keyword": "best dentist austin",
"percentage": 82,
"dataSources": [
{
"name": "Google Business Profile"
}
]
}
],
"Gemini": [
{
"keyword": "emergency dentist austin",
"percentage": 54,
"dataSources": []
}
],
"Perplexity": []
},
"matrix": [
{
"keyword": "best dentist austin",
"cells": {
"ChatGPT": {
"score": 82,
"mentioned": true,
"rank": 1,
"answerExcerpt": "Acme Dental — Downtown is highly rated for..."
},
"Gemini": {
"score": 54,
"mentioned": true,
"rank": 3,
"answerExcerpt": null
},
"Perplexity": null
},
"best": 82
}
],
"gap": [
{
"business": "Acme Dental — Downtown",
"isYou": true,
"overall": 62,
"chatgpt": 68,
"gemini": 56,
"perplexity": null,
"comparisonPct": null
},
{
"business": "Smile Bright Dental",
"isYou": false,
"overall": 71,
"chatgpt": 74,
"gemini": 68,
"perplexity": null,
"comparisonPct": 9
}
],
"ranking": {
"All": {
"primary": {
"good": 6,
"neutral": 2,
"bad": 2
},
"competitors": []
},
"ChatGPT": {
"primary": {
"good": 7,
"neutral": 1,
"bad": 2
},
"competitors": []
},
"Gemini": {
"primary": {
"good": 5,
"neutral": 3,
"bad": 2
},
"competitors": []
},
"Perplexity": {
"primary": {
"good": 0,
"neutral": 0,
"bad": 0
},
"competitors": []
}
},
"radar": {
"ChatGPT": {
"relevance": 78,
"reviews": 88,
"engagement": 65,
"freshness": 74,
"citations": 81
},
"Gemini": {
"relevance": 70,
"reviews": 80,
"engagement": 75,
"freshness": 85,
"citations": 65
},
"Perplexity": {
"relevance": 0,
"reviews": 0,
"engagement": 0,
"freshness": 0,
"citations": 0
}
},
"factors": [
{
"key": "citations",
"label": "Citations",
"value": 81,
"detail": "Cited by 14 of 20 tracked sources across configured engines.",
"action": {
"label": "Fix missing citations",
"target": "citations"
}
}
],
"citations": {
"summary": {
"totalSources": 20,
"active": 14,
"detected": 4,
"missing": 2,
"missingDirectories": [
"Yelp"
]
},
"byEngine": {
"ChatGPT": [
{
"name": "Google Business Profile",
"status": "active"
}
],
"Gemini": [],
"Perplexity": []
}
},
"sentiment": {
"positive": 62,
"neutral": 30,
"negative": 8,
"mentions": []
},
"attention": [
{
"text": "Bing Places is missing your current hours.",
"tone": "warn"
}
],
"recommendations": [
{
"id": "rec_reviews_1",
"kind": "opportunity",
"priority": "high",
"title": "Add more customer reviews mentioning services",
"detail": "Reviews that name specific services improve how often engines cite you for those prompts.",
"action": {
"label": "Request reviews",
"target": "reviews"
}
}
],
"history": [
{
"yearMonth": "2026-01",
"overall": 57,
"chatgpt": 61,
"gemini": 53,
"perplexity": null,
"sources": 12
},
{
"yearMonth": "2026-02",
"overall": 62,
"chatgpt": 68,
"gemini": 56,
"perplexity": null,
"sources": 14
}
],
"competitorHistory": [
{
"name": "Smile Bright Dental",
"points": [
{
"yearMonth": "2026-01",
"overall": 65
},
{
"yearMonth": "2026-02",
"overall": 71
}
]
}
]
}
}Starts a background generation of a fresh AEO report for a location. Report generation runs multiple LLM calls per engine/prompt and never runs synchronously in-request — this call enqueues the job and returns immediately. There is no separate job-id or status resource: poll GET /api/v1/aeo/reports for the same location and watch the generating field until it returns to false. Not available for locations that predate Synup's legacy location cache (native-only locations).
Enqueue AEO report generation
/api/v1/aeo/reports/enqueue{
"data": {
"enqueued": true,
"force": false
}
}Returns the latest AEO report summary per location, optionally scoped to a client and/or location tags, plus portfolio-wide trend and systemic-fix data. Locations with no report yet show null scores.
Get the all-locations AEO roll-up
/api/v1/aeo/rollup{
"data": {
"rows": [
{
"locationId": "cm_loc_1",
"name": "Acme Dental — Downtown",
"city": "Austin",
"overall": 62,
"chatgpt": 68,
"gemini": 56,
"perplexity": null,
"generatedAt": "2026-02-01T06:00:00.000Z",
"yearMonth": "2026-02",
"tags": [
"priority"
],
"history": [
57,
62
],
"delta": 5,
"topIssue": null
}
],
"configuredEngines": [
"ChatGPT",
"Gemini"
],
"portfolioHistory": [
{
"yearMonth": "2026-01",
"avg": 57,
"locations": 5
},
{
"yearMonth": "2026-02",
"avg": 62,
"locations": 5
}
],
"systemicFixes": [
{
"factor": "citations",
"label": "Citations",
"detail": "6 locations are missing citations on Yelp.",
"target": "citations",
"count": 6,
"pct": 30
}
]
}
}