Get a brand's analytics
Visibility, share of voice, the per-model breakdown and the citation totals for one window, in one request.
The long lists — cited domains and URLs, sub-queries, per-prompt results — are endpoints of their own. Everything else is always included.
BearerAuthAuthorizationBearer <token>An instance admin key from ADMIN_API_KEYS, or an organization key (elmo_…) issued from the dashboard.
brandId*stringBrand identifier.
start*stringInclusive lower bound of the window, an ISO 8601 timestamp such as 2026-01-01T00:00:00Z. Aligned down to the quarter hour, the grain analytics are aggregated at; where a response repeats the window, it repeats the aligned one. A bare YYYY-MM-DD is rejected: that is /prompts/{promptId}/snapshot's spelling and means a local calendar day there.
date-timeend*stringExclusive upper bound of the window, an ISO 8601 timestamp, also aligned down to the quarter hour. The window is half-open: a run at exactly end is outside it. start and end inside one quarter-hour bucket leave an empty window and are rejected.
date-timemodel?stringRestrict to one model, e.g. chatgpt. See GET /models.
Get a brand's analytics
application/json- response
Every non-paginated figure for a brand over one window. There is no parameter for selecting a subset: the computations behind this cover the same prompts and run concurrently, so a subset would save a caller a fraction of one request and cost everyone a parameter to reason about.
brandId*stringbrandName*stringrange*The window the response was computed over, echoed back as the half-open instants it resolved to.
visibility*How often the brand is mentioned at all.
shareOfVoice*The brand against its tracked competitors.
models*array<>Per-model visibility and run counts. Only models that produced a run in the window appear.
sentiment*Experimental — the shape may still change.
The brand's sentiment over the window, with the counts for each day so a client can chart or smooth them.
position*Experimental — the shape may still change.
The brand's position among the tracked companies the answers name, 1 being named first, averaged over the window and per day.
totals*curl -X GET 'https://app.elmohq.com/api/v1/brands/string/analytics?start=2019-08-24T14%3A15%3A22Z&end=2019-08-24T14%3A15%3A22Z'{ "brandId": "string", "brandName": "string", "range": { "start": "2019-08-24T14:15:22Z", "end": "2019-08-24T14:15:22Z" }, "visibility": { "current": 0, "series": [ { "date": "2019-08-24", "visibility": 0 } ] }, "shareOfVoice": { "brand": 0, "entries": [ { "name": "string", "isBrand": true, "mentions": 0, "prompts": 0, "share": 0, "sentiment": { "positive": 0, "neutral": 0, "negative": 0, "mixed": 0, "positiveShare": 0, "negativeShare": 0 }, "position": { "average": 1 } } ], "series": [ { "date": "2019-08-24", "share": 0 } ] }, "models": [ { "model": "string", "label": "string", "runs": 0, "brandMentions": 0, "visibility": 0, "citations": 0, "sentiment": { "positive": 0, "neutral": 0, "negative": 0, "mixed": 0, "positiveShare": 0, "negativeShare": 0 }, "position": { "average": 1 } } ], "sentiment": { "positive": 0, "neutral": 0, "negative": 0, "mixed": 0, "positiveShare": 0, "negativeShare": 0, "series": [ { "date": "2019-08-24", "positive": 0, "neutral": 0, "negative": 0, "mixed": 0 } ] }, "position": { "average": 1, "series": [ { "date": "2019-08-24", "average": 1 } ] }, "totals": { "runs": 0, "prompts": 0, "citations": 0, "uniqueDomains": 0, "uniqueUrls": 0 }}