Skip to main content

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.

EndpointReturns
GET /api/v1/brandsYour brands (id, name, domain, market).
GET /api/v1/brands/{brandId}/scoresScore history: date, engine, score, confidence range, mention rate.
GET /api/v1/brands/{brandId}/answersAnswers: prompt, engine, mentioned or not, rank, sentiment, competitors, answer text.
GET /api/v1/brands/{brandId}/sourcesCited sources: domain, URL, number of answers, own or competitor.
GET /api/v1/brands/{brandId}/competitorsCompetitor comparison: brand, score, share of voice.
GET /api/v1/brands/{brandId}/recommendationsAction 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.