curl --request GET \
--url https://app.backend.genezio.ai/customer/v1/brands/{brand_id}/reports/visibility \
--header 'X-API-Key: <api-key>'import requests
url = "https://app.backend.genezio.ai/customer/v1/brands/{brand_id}/reports/visibility"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://app.backend.genezio.ai/customer/v1/brands/{brand_id}/reports/visibility', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"brand": {
"is_own_brand": true,
"name": "<string>",
"website": "<string>"
},
"date": "2026-09-28",
"visibility": 0.57,
"change": 0.031,
"confidence_interval": {
"lower": 123,
"upper": 123
},
"conversations": 123,
"model": "chatgpt.com",
"share_of_voice": 0.18,
"significant": true
}
],
"info": {
"query": {},
"summary": [
{
"brands_ranked": 12,
"change": 123,
"date": "2023-12-25",
"model": "<string>",
"rank": 2,
"significant": true,
"visibility": 123
}
],
"total_rows": 123
}
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}Visibility over time
How often the answer engines mention the brand, period by period.
One row for each period and each brand: the brand of the path and, with
competitors, each competitor. Each row has its interval of confidence,
and change and significant against the previous period.
info.summary gives the last period of the brand and its rank.
The value of a day is not the share of the answers of that day only. It
reads a sliding window: the newest answers up to the end of that day,
until the confidence interval is narrow enough. A week is the average of
its days, and a month is the average of the days of its last week. The
window does not read an answer before start_date. The guide of the
visibility reports gives an example.
curl --request GET \
--url https://app.backend.genezio.ai/customer/v1/brands/{brand_id}/reports/visibility \
--header 'X-API-Key: <api-key>'import requests
url = "https://app.backend.genezio.ai/customer/v1/brands/{brand_id}/reports/visibility"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://app.backend.genezio.ai/customer/v1/brands/{brand_id}/reports/visibility', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"brand": {
"is_own_brand": true,
"name": "<string>",
"website": "<string>"
},
"date": "2026-09-28",
"visibility": 0.57,
"change": 0.031,
"confidence_interval": {
"lower": 123,
"upper": 123
},
"conversations": 123,
"model": "chatgpt.com",
"share_of_voice": 0.18,
"significant": true
}
],
"info": {
"query": {},
"summary": [
{
"brands_ranked": 12,
"change": 123,
"date": "2023-12-25",
"model": "<string>",
"rank": 2,
"significant": true,
"visibility": 123
}
],
"total_rows": 123
}
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}{
"error": {
"code": "brand_access_denied",
"message": "This API key has no access to this brand",
"details": [
{
"field": "page_size",
"message": "Input should be less than or equal to 100"
}
],
"request_id": "4f3c2e1a-9b7d-4c1e-8f2a-1d3e5b7c9a0f"
}
}Authorizations
An API key of your account, from Settings > API Keys. It starts with gnz-.
Path Parameters
Query Parameters
YYYY-MM-DD (a day in UTC) or an ISO 8601 datetime. Both ends of the range are inclusive: an end date covers its whole day.
"2026-09-01"
YYYY-MM-DD (a day in UTC) or an ISO 8601 datetime. Both ends of the range are inclusive: an end date covers its whole day.
"2026-09-30"
The length of a period: a day, a week (from Monday), or a month. A week is the average of its days. A month is the average of the days of its last week.
day, week, month The answer engines. With no list, the engines of the brand.
1The answer engines that the public API names.
The platform also runs models of the API of OpenAI for its own work, such
as gpt-4o. A customer does not choose them, thus the public API does not
name them. Each value is a value of dtos.simulation.LlmModel.
chatgpt.com, google-ai-overview, perplexity, claude, google-ai-mode, google-gemini, copilot, deepseek, grok, gpt-5.4 The topics of the brand. With no list, each topic.
1model: one series for each answer engine, in place of one series for each engine together.
"model"Also give the series of each competitor.