Lumirank API docs
Answers

List mentions

GET/v1/mentions

Returns 1 row for each brand that a complete answer ranks or names, oldest answer first. Inside an answer, the ranked brands come first. A brand that the answer names only in its text has position: null. Your own brand has rows too, with is_self: true.

To get the rows of 1 brand, send its competitor_id. For example, the id of Globex returns every answer that ranks or names Globex.

Authorization

apiKey
AuthorizationBearer <token>

An API key that you create in the Lumirank dashboard, on the Settings > API keys page. Send it in the Authorization header: Bearer lr_....

In: header

Query Parameters

start_date?string

The first day of the date range, as a UTC date in the format YYYY-MM-DD. The range includes this day. The default is 29 days before end_date, so the default range is 30 days.

Formatdate
end_date?string

The last day of the date range, as a UTC date in the format YYYY-MM-DD. The range includes this day. The default is today. The range can be at most 90 days long.

Formatdate
prompt_id?string

The ids of the prompts to include, separated by commas. Without it, every prompt that is not archived is included. The id of an archived prompt gets status 400 unless you send include_archived=true.

competitor_id?string

Return only the rows of 1 brand. Send an id from /v1/competitors, or the competitor_id from /v1/brand for your own brand.

engine?string

The engines to include, separated by commas: chatgpt, gemini, perplexity, ai_mode, copilot, google_ai_overview, claude. Without it, every engine is included.

country?string

The countries to include, separated by commas, as 2-letter ISO 3166-1 country codes in capital or small letters. Without it, every country is included.

include_archived?boolean

Send true to include the answers of archived prompts. The default is false: they are left out, as in the dashboard.

Defaultfalse
limit?integer

The number of rows on each page, from 1 to 100. The default is 50.

Formatint32
offset?integer

The number of rows to skip before this page starts. The default is 0. For the next page, add limit to offset.

Formatint32

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/mentions?start_date=2026-09-01&end_date=2026-09-30&prompt_id=a41e7c52-3d6b-4f0a-9c8e-1b2d3e4f5a60&competitor_id=c77d2e91-5b4a-4f3c-8d2e-7a6b5c4d3e21&engine=chatgpt%2Cperplexity&country=US&include_archived=true&limit=50&offset=0"

mentions

{  "data": [    {      "answer_id": "f3a91c27-8d4e-4b5f-a6c7-9e0f1a2b3c4d",      "answered_at": "2026-10-07T04:12:55Z",      "engine": "chatgpt",      "country": "US",      "prompt_id": "a41e7c52-3d6b-4f0a-9c8e-1b2d3e4f5a60",      "competitor_id": "c77d2e91-5b4a-4f3c-8d2e-7a6b5c4d3e21",      "competitor_name": "Globex",      "is_self": false,      "position": 1,      "sentiment": 55    },    {      "answer_id": "f3a91c27-8d4e-4b5f-a6c7-9e0f1a2b3c4d",      "answered_at": "2026-10-07T04:12:55Z",      "engine": "chatgpt",      "country": "US",      "prompt_id": "a41e7c52-3d6b-4f0a-9c8e-1b2d3e4f5a60",      "competitor_id": "5e0b3f71-9a2c-4d8e-b6f4-2c1d0e9f8a73",      "competitor_name": "Acme",      "is_self": true,      "position": 2,      "sentiment": 42    }  ],  "meta": {    "total": 5310,    "limit": 2,    "offset": 0,    "has_more": true  }}