Read-only measurement API
Pull your AI visibility data into your own dashboards, spreadsheets or agency reports. JSON or CSV, one key per integration, only your workspace’s data.
Authentication
Create a key under Account, API keys (workspace owners only). Send it as a Bearer token. The full key is shown once; we store only a hash. Revoked keys stop working on the next request.
curl -H "Authorization: Bearer aeo_YOUR_KEY" \
"https://YOUR-AEODA-DOMAIN/api/v1/brands/BRAND_ID/scores?from=2026-09-01&limit=50"
# CSV
curl -H "Authorization: Bearer aeo_YOUR_KEY" -o scores.csv \
"https://YOUR-AEODA-DOMAIN/api/v1/brands/BRAND_ID/scores?format=csv&delimiter=semicolon"Plans
The API is included in Pro and Agency. CSV export is included from Starter. If a plan is downgraded, existing keys answer 403 until the workspace upgrades again.
If a plan is downgraded, keys are suspended and answer 403; they work again as soon as the workspace upgrades. Keys are not deleted.
Endpoints
All endpoints are GET and read-only. Base URL: your aeoda domain.
| Endpoint | Returns |
|---|---|
| GET /api/v1/brands | Your brands (id, name, domain, market). |
| GET /api/v1/brands/{brandId}/scores | Score history: date, engine, score, confidence range, mention rate. |
| GET /api/v1/brands/{brandId}/answers | Answers: prompt, engine, mentioned or not, rank, sentiment, competitors, answer text. |
| GET /api/v1/brands/{brandId}/sources | Cited sources: domain, URL, number of answers, own or competitor. |
| GET /api/v1/brands/{brandId}/competitors | Competitor comparison: brand, score, share of voice. |
| GET /api/v1/brands/{brandId}/recommendations | Action plan: title, priority, effort, status. |
Query parameters
from and to: dates as YYYY-MM-DD (default: last 30 days, limited by your plan’s history). limit: 1 to 1000 (default 100). cursor: the nextCursor value of the previous page. format: json (default) or csv. delimiter: comma or semicolon (CSV). lang: language of recommendation titles. Unknown parameters return 400.
Example
{
"data": [
{
"brand": "Northwind Coffee",
"date": "2026-10-01T09:00:00.000Z",
"engine": "all",
"score": 55,
"ci_low": 40,
"ci_high": 70,
"mention_rate": 25,
"sov": 31.5,
"avg_position": 2.4
}
],
"nextCursor": "eyJ0IjoiMjAyNi0xMC0wMSAwOTowMDowMCswMCIsImlkIjoiLi4uIn0",
"range": { "from": "2026-09-01", "to": "2026-10-18" }
}CSV format
CSV is UTF-8 with a byte order mark so Excel opens accents correctly. Text cells starting with = + - @ are prefixed with an apostrophe to prevent formula injection. CSV responses stream and are capped at 100,000 rows: narrow the date range if you hit the cap (413).
Rate limits and paging
Each key allows 60 requests per minute. Responses carry x-ratelimit-limit and x-ratelimit-remaining; a 429 includes retry-after. JSON lists are paged with nextCursor (null on the last page).
format=csv has its own lower limit: 6 downloads per hour per key, and a response is capped at 50 MB (a final "# truncated" line marks a cut-off file).
Errors
- 401Missing, malformed or revoked key.
- 403The workspace plan does not include the API.
- 404The brand does not exist in your workspace.
- 413CSV row limit exceeded: use a shorter date range.
- 429Rate limit reached: wait for retry-after seconds.