Get a brand's analytics

GET
/brands/{brandId}/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.

Authorization

BearerAuth
headerAuthorizationBearer <token>

An instance admin key from ADMIN_API_KEYS, or an organization key (elmo_…) issued from the dashboard.

Path Parameters

brandId*string

Brand identifier.

Query Parameters

start*string

Inclusive 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.

Formatdate-time
end*string

Exclusive 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.

Formatdate-time
model?string

Restrict to one model, e.g. chatgpt. See GET /models.

tags?string

Comma-separated prompt tags. Only prompts carrying at least one of them are counted.

Response Body

Get a brand's analytics

application/json
  1. 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*string
brandName*string
range*

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  }}