curl --request GET \
--url https://app.backend.genezio.ai/customer/v1/brands/{brand_id}/reports/citations \
--header 'X-API-Key: <api-key>'import requests
url = "https://app.backend.genezio.ai/customer/v1/brands/{brand_id}/reports/citations"
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/citations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"date": "2023-12-25",
"occurrences": 123,
"change": 123,
"domain": "<string>"
}
],
"info": {
"query": {},
"summary": {
"by_ownership": [
{
"label": "Third-Party Editorial",
"occurrences": 123,
"ownership": "third_party_editorial",
"share": 123
}
],
"occurrences": 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"
}
}Citations over time
How often the answer engines cite a source, period by period.
One row for each period, with change against the previous period. With
domains, each domain also gets its own series. info.summary gives each
occurrence of the range and the share of each kind of owner of the pages.
curl --request GET \
--url https://app.backend.genezio.ai/customer/v1/brands/{brand_id}/reports/citations \
--header 'X-API-Key: <api-key>'import requests
url = "https://app.backend.genezio.ai/customer/v1/brands/{brand_id}/reports/citations"
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/citations', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": [
{
"date": "2023-12-25",
"occurrences": 123,
"change": 123,
"domain": "<string>"
}
],
"info": {
"query": {},
"summary": {
"by_ownership": [
{
"label": "Third-Party Editorial",
"occurrences": 123,
"ownership": "third_party_editorial",
"share": 123
}
],
"occurrences": 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 answer engines. With no list, each engine.
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.
1Who owns the page, for example competitor_owned.
1Categorizes sources based on who owns/publishes the content.
first_party, competitor_owned, third_party_editorial, industry_trade_publication, government_regulatory, academic_research, aggregator_marketplace, social_ugc_platform, other What the page is, for example review_editorial.
1Categorizes sources based on the type of content on the page.
blog_article, product_service_page, review_editorial, review_user_generated, comparison_vs_page, listicle_best_of, news_article, press_release, advertorial, documentation_knowledge_base, case_study, research_paper_report, forum_thread_qa, social_media_post, video, podcast_transcript, wikipedia_encyclopedia, other How the page speaks of the brand.
1positive, neutral, negative true: only the pages of the brand. false: only the pages of others. No value: each page.
The length of a period: a day, a week (from Monday), or a month.
day, week, month Root domains, for example g2.com. Each one also gets its own series, beside the series of each domain together.
1 - 20 elements