Sentiment by topic (Growth plan or above)
Changed onOne row per topic AI answers associate with the brand (topics are matched case-insensitively), with its analyzed mentions, the positive (very positive included), neutral and negative counts, their shares on a 0-100 scale and the net sentiment score ((positive - negative) / mentions x 100). The same rows and filters as the Topics tab of the Sentiment page: the window defaults to the last 28 days, brand empty counts your own brand, all every brand and a competitor id that competitor. Requires the Growth plan; lower tiers receive ERR_PLAN_REQUIRED.
Request
- Base URLhttps://api.llmpulse.ai/api/v1
- URLhttps://api.llmpulse.ai/api/v1/reports/sentiment/topics
- AuthAPI key in header Authorization
Query parameters
Project ID
Number of days to look back, today included (default 28, like the Sentiment page). Ignored when from or to is given.
End of the window. A date-only value such as 2026-09-01 covers that whole day. Pass a full timestamp to end the window earlier.
Filter by one AI model. It must be a model enabled for the API key's user: an unknown value, or a model the user has not enabled, returns 422 ERR_INVALID_PARAM with the valid values in the message.
One collection/tag ID or a comma-separated list of IDs. A query value is always a string on the wire, so it is typed as one: the previous integer-or-string union made generators emit a wrapper type they could not serialize.
One ISO country code or a comma-separated list (e.g. US,GB,DE)
One ISO language code or a comma-separated list (e.g. en,es,de)
Filter by brand kind: brand (own brand/products), brand_other (competitors/other brands), non_brand (generic, no brand named). For fair 1:1 brand-vs-competitor comparisons (visibility, share of voice), use non_brand: brand-focused prompts skew results toward the brand they name. The in-app Overview page applies non_brand by default.
One sentiment level or a comma-separated list: very_positive, positive, neutral, negative, very_negative
Only sentiments tagged with this topic (case-insensitive)
Only sentiments whose answer or prompt text contains this text
Whose sentiment to count. Empty or omitted for your own brand, all for every brand, or a competitor id (an unknown id returns ERR_INVALID_PARAM).
Sort column: mentions, name (the topic or tag), positive, negative or neutral (their shares) or net_score. Ties sort by name.
Rectangular output for BI tools (Tableau, Excel, Sheets, ELT). Omit for the default nested JSON. 'flat' returns the same metadata plus 'columns' and 'rows'; 'csv' returns those rows as text/csv. Errors are always returned as JSON.
Response
Paginated topic rows
Changes
- info
endpoint added
- info