Docs sections

API and MCP

REST API reference

Every endpoint of /api/v1 with its parameters, and curl examples for the main reads.

Base URL https://dash.botlum.com/api/v1. Every request needs Authorization: Bearer with an API key or a signed-in person's token. Responses are JSON, except the CSV exports. The machine-readable OpenAPI 3.1 document is at https://dash.botlum.com/api/v1/openapi.json, and it can be imported into Postman, Insomnia or a code generator.

Most reads take the dashboard's filters as query parameters: from and to (yyyy-MM-dd, up to 92 days), and comma-separated engines, countries, languages, topics and tags, plus branded.

List workspaces

GET /api/v1/workspaces

With an API key: the key's workspace. Signed in: every workspace you can open.

curl -H "Authorization: Bearer $BOTLUM_KEY" "https://dash.botlum.com/api/v1/workspaces"

List projects

GET /api/v1/workspaces/{workspaceSlug}/projects

Each project is a brand with its domains, other names and competitors. Archived projects are left out unless asked for.

Parameter In Required Meaning
includeArchived query no
curl -H "Authorization: Bearer $BOTLUM_KEY" "https://dash.botlum.com/api/v1/workspaces/your-workspace/projects"

Get a project

GET /api/v1/workspaces/{workspaceSlug}/projects/{projectId}

Parameter In Required Meaning
projectId path yes
curl -H "Authorization: Bearer $BOTLUM_KEY" "https://dash.botlum.com/api/v1/workspaces/your-workspace/projects/PROJECT_ID"

List the project's prompts

GET /api/v1/workspaces/{workspaceSlug}/projects/{projectId}/prompts

Every prompt with its text, country, language, status, topic and tags.

curl -H "Authorization: Bearer $BOTLUM_KEY" "https://dash.botlum.com/api/v1/workspaces/your-workspace/projects/PROJECT_ID/prompts"

List the project's topics

GET /api/v1/workspaces/{workspaceSlug}/projects/{projectId}/topics

Topics group prompts; their order is the owners'.

curl -H "Authorization: Bearer $BOTLUM_KEY" "https://dash.botlum.com/api/v1/workspaces/your-workspace/projects/PROJECT_ID/topics"

Visibility overview

GET /api/v1/workspaces/{workspaceSlug}/projects/{projectId}/visibility/overview

Visibility of the brand and its competitors over the range, with counts, the change against the previous range of the same length (null when the two are not comparable, with reasons), share of voice, sentiment and a per-engine breakdown.

Parameter In Required Meaning
from query no Required. First day, yyyy-MM-dd.
to query no Required. Last day, yyyy-MM-dd. A range covers at most 92 days.
engines query no Comma-separated engine keys, e.g. `chatgpt,gemini`.
countries query no Comma-separated ISO 3166-1 alpha-2 country codes.
languages query no Comma-separated language codes.
topics query no Comma-separated topic ids; `none` means prompts without a topic.
tags query no Comma-separated prompt tags; a prompt with any of them counts.
branded query no `true` for prompts that name the brand, `false` for the others.
curl -H "Authorization: Bearer $BOTLUM_KEY" "https://dash.botlum.com/api/v1/workspaces/your-workspace/projects/PROJECT_ID/visibility/overview"

Visibility by day

GET /api/v1/workspaces/{workspaceSlug}/projects/{projectId}/visibility/series

One point per day and engine, and per day across all engines, for one brand.

Parameter In Required Meaning
from query no Required. First day, yyyy-MM-dd.
to query no Required. Last day, yyyy-MM-dd. A range covers at most 92 days.
engines query no Comma-separated engine keys, e.g. `chatgpt,gemini`.
countries query no Comma-separated ISO 3166-1 alpha-2 country codes.
languages query no Comma-separated language codes.
topics query no Comma-separated topic ids; `none` means prompts without a topic.
tags query no Comma-separated prompt tags; a prompt with any of them counts.
branded query no `true` for prompts that name the brand, `false` for the others.
brand query no `project` (default) or `competitor:{id}`.
curl -H "Authorization: Bearer $BOTLUM_KEY" "https://dash.botlum.com/api/v1/workspaces/your-workspace/projects/PROJECT_ID/visibility/series"

Visibility by prompt, country or topic

GET /api/v1/workspaces/{workspaceSlug}/projects/{projectId}/visibility/matrix

Rows by prompt, country or topic, one cell per engine, with a daily line for each row.

Parameter In Required Meaning
from query no Required. First day, yyyy-MM-dd.
to query no Required. Last day, yyyy-MM-dd. A range covers at most 92 days.
engines query no Comma-separated engine keys, e.g. `chatgpt,gemini`.
countries query no Comma-separated ISO 3166-1 alpha-2 country codes.
languages query no Comma-separated language codes.
topics query no Comma-separated topic ids; `none` means prompts without a topic.
tags query no Comma-separated prompt tags; a prompt with any of them counts.
branded query no `true` for prompts that name the brand, `false` for the others.
brand query no `project` (default) or `competitor:{id}`.
by query no `prompt` (default), `country` or `topic`.
curl -H "Authorization: Bearer $BOTLUM_KEY" "https://dash.botlum.com/api/v1/workspaces/your-workspace/projects/PROJECT_ID/visibility/matrix"

Brands side by side

GET /api/v1/workspaces/{workspaceSlug}/projects/{projectId}/visibility/competitors

The brand and each competitor over the range, overall and per engine.

Parameter In Required Meaning
from query no Required. First day, yyyy-MM-dd.
to query no Required. Last day, yyyy-MM-dd. A range covers at most 92 days.
engines query no Comma-separated engine keys, e.g. `chatgpt,gemini`.
countries query no Comma-separated ISO 3166-1 alpha-2 country codes.
languages query no Comma-separated language codes.
topics query no Comma-separated topic ids; `none` means prompts without a topic.
tags query no Comma-separated prompt tags; a prompt with any of them counts.
branded query no `true` for prompts that name the brand, `false` for the others.
curl -H "Authorization: Bearer $BOTLUM_KEY" "https://dash.botlum.com/api/v1/workspaces/your-workspace/projects/PROJECT_ID/visibility/competitors"

Brands the answers name that the project does not track

GET /api/v1/workspaces/{workspaceSlug}/projects/{projectId}/visibility/discovered-brands

Most frequent first, with how many answers named each and on which engines.

Parameter In Required Meaning
from query no Required. First day, yyyy-MM-dd.
to query no Required. Last day, yyyy-MM-dd. A range covers at most 92 days.
engines query no Comma-separated engine keys, e.g. `chatgpt,gemini`.
countries query no Comma-separated ISO 3166-1 alpha-2 country codes.
languages query no Comma-separated language codes.
topics query no Comma-separated topic ids; `none` means prompts without a topic.
tags query no Comma-separated prompt tags; a prompt with any of them counts.
branded query no `true` for prompts that name the brand, `false` for the others.
curl -H "Authorization: Bearer $BOTLUM_KEY" "https://dash.botlum.com/api/v1/workspaces/your-workspace/projects/PROJECT_ID/visibility/discovered-brands"

One answer

GET /api/v1/workspaces/{workspaceSlug}/projects/{projectId}/prompts/{slotId}/answers/{engine}/{measuredFor}

The answer one engine gave to one prompt on one day (yyyy-MM-dd): its text, the sources it cited, the searches the engine ran, which brands it named and how, and where they stood on the results page.

curl -H "Authorization: Bearer $BOTLUM_KEY" "https://dash.botlum.com/api/v1/workspaces/your-workspace/projects/PROJECT_ID/prompts/PROMPT_ID/answers/chatgpt_search/2026-10-21"

Searches the engines ran for a prompt

GET /api/v1/workspaces/{workspaceSlug}/projects/{projectId}/prompts/{slotId}/searches

The web searches engines reported running while answering this prompt.

Parameter In Required Meaning
from query no Required. First day, yyyy-MM-dd.
to query no Required. Last day, yyyy-MM-dd. A range covers at most 92 days.
engines query no Comma-separated engine keys, e.g. `chatgpt,gemini`.
countries query no Comma-separated ISO 3166-1 alpha-2 country codes.
languages query no Comma-separated language codes.
topics query no Comma-separated topic ids; `none` means prompts without a topic.
tags query no Comma-separated prompt tags; a prompt with any of them counts.
branded query no `true` for prompts that name the brand, `false` for the others.
curl -H "Authorization: Bearer $BOTLUM_KEY" "https://dash.botlum.com/api/v1/workspaces/your-workspace/projects/PROJECT_ID/prompts/PROMPT_ID/searches"

Cited domains

GET /api/v1/workspaces/{workspaceSlug}/projects/{projectId}/sources/domains

Domains the answers cite, how often, and for which brands.

Parameter In Required Meaning
from query no Required. First day, yyyy-MM-dd.
to query no Required. Last day, yyyy-MM-dd. A range covers at most 92 days.
engines query no Comma-separated engine keys, e.g. `chatgpt,gemini`.
countries query no Comma-separated ISO 3166-1 alpha-2 country codes.
languages query no Comma-separated language codes.
topics query no Comma-separated topic ids; `none` means prompts without a topic.
tags query no Comma-separated prompt tags; a prompt with any of them counts.
branded query no `true` for prompts that name the brand, `false` for the others.
curl -H "Authorization: Bearer $BOTLUM_KEY" "https://dash.botlum.com/api/v1/workspaces/your-workspace/projects/PROJECT_ID/sources/domains"

Cited pages

GET /api/v1/workspaces/{workspaceSlug}/projects/{projectId}/sources/pages

Pages the answers cite, how often, and for which brands.

Parameter In Required Meaning
from query no Required. First day, yyyy-MM-dd.
to query no Required. Last day, yyyy-MM-dd. A range covers at most 92 days.
engines query no Comma-separated engine keys, e.g. `chatgpt,gemini`.
countries query no Comma-separated ISO 3166-1 alpha-2 country codes.
languages query no Comma-separated language codes.
topics query no Comma-separated topic ids; `none` means prompts without a topic.
tags query no Comma-separated prompt tags; a prompt with any of them counts.
branded query no `true` for prompts that name the brand, `false` for the others.
curl -H "Authorization: Bearer $BOTLUM_KEY" "https://dash.botlum.com/api/v1/workspaces/your-workspace/projects/PROJECT_ID/sources/pages"

Source gap

GET /api/v1/workspaces/{workspaceSlug}/projects/{projectId}/sources/gap

Domains cited in answers that name competitors but not the brand: where to get mentioned.

Parameter In Required Meaning
from query no Required. First day, yyyy-MM-dd.
to query no Required. Last day, yyyy-MM-dd. A range covers at most 92 days.
engines query no Comma-separated engine keys, e.g. `chatgpt,gemini`.
countries query no Comma-separated ISO 3166-1 alpha-2 country codes.
languages query no Comma-separated language codes.
topics query no Comma-separated topic ids; `none` means prompts without a topic.
tags query no Comma-separated prompt tags; a prompt with any of them counts.
branded query no `true` for prompts that name the brand, `false` for the others.
curl -H "Authorization: Bearer $BOTLUM_KEY" "https://dash.botlum.com/api/v1/workspaces/your-workspace/projects/PROJECT_ID/sources/gap"

Answers citing a domain

GET /api/v1/workspaces/{workspaceSlug}/projects/{projectId}/sources/answers

The answers behind one cited domain or page.

Parameter In Required Meaning
from query no Required. First day, yyyy-MM-dd.
to query no Required. Last day, yyyy-MM-dd. A range covers at most 92 days.
engines query no Comma-separated engine keys, e.g. `chatgpt,gemini`.
countries query no Comma-separated ISO 3166-1 alpha-2 country codes.
languages query no Comma-separated language codes.
topics query no Comma-separated topic ids; `none` means prompts without a topic.
tags query no Comma-separated prompt tags; a prompt with any of them counts.
branded query no `true` for prompts that name the brand, `false` for the others.
domain query no The cited domain.
page query no A cited page, instead of a domain.
gap query no `true` for answers that name competitors but not the brand.
limit query no How many answers, at most.
curl -H "Authorization: Bearer $BOTLUM_KEY" "https://dash.botlum.com/api/v1/workspaces/your-workspace/projects/PROJECT_ID/sources/answers"

CSV export

GET /api/v1/workspaces/{workspaceSlug}/projects/{projectId}/export/{kind}.csv

`visibility`, `sources` or `brands` over the range, as the dashboard's CSV download.

Parameter In Required Meaning
from query no Required. First day, yyyy-MM-dd.
to query no Required. Last day, yyyy-MM-dd. A range covers at most 92 days.
engines query no Comma-separated engine keys, e.g. `chatgpt,gemini`.
countries query no Comma-separated ISO 3166-1 alpha-2 country codes.
languages query no Comma-separated language codes.
topics query no Comma-separated topic ids; `none` means prompts without a topic.
tags query no Comma-separated prompt tags; a prompt with any of them counts.
branded query no `true` for prompts that name the brand, `false` for the others.
curl -H "Authorization: Bearer $BOTLUM_KEY" "https://dash.botlum.com/api/v1/workspaces/your-workspace/projects/PROJECT_ID/export/visibility.csv"