Python
import os
from profound import Profound
client = Profound(
api_key=os.environ.get("PROFOUND_API_KEY"),
)
report = client.reports.visibility(
date_interval="day",
dimensions=[],
metrics=["share_of_voice"],
order_by={},
category_id="7c9e6679-7425-40de-944b-e07fc1f90ae7",
start_date="2024-01-01T00:00:00.000Z",
end_date="2024-01-01T00:00:00.000Z",
)
print(report)import Profound from '@profoundai/client';
const client = new Profound({
apiKey: process.env['PROFOUND_API_KEY'], // defaults to the PROFOUND_API_KEY env var
environment: 'production',
});
const report = await client.reports.visibility({
date_interval: 'day',
dimensions: [],
metrics: ['share_of_voice'],
order_by: {},
category_id: '7c9e6679-7425-40de-944b-e07fc1f90ae7',
start_date: '2024-01-01T00:00:00.000Z',
end_date: '2024-01-01T00:00:00.000Z',
});
console.log(report);use profound::*;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = ProfoundClient::builder()
.api_key(std::env::var("PROFOUND_API_KEY")?)
.build()?;
let response = client
.reports()
.visibility(VisibilityQuery {
date_interval: None,
dimensions: None,
metrics: vec![VisibilityQueryMetric::ShareOfVoice],
order_by: None,
pagination: None,
category_id: "7c9e6679-7425-40de-944b-e07fc1f90ae7".to_string(),
start_date: chrono::Utc::now().fixed_offset(),
end_date: chrono::Utc::now().fixed_offset(),
filters: None,
})
.send()
.await?;
println!("{:?}", response);
Ok(())
}curl --request POST \
--url https://api.tryprofound.com/v1/reports/visibility \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"metrics": [],
"category_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"start_date": "2023-11-07T05:31:56Z",
"end_date": "2023-11-07T05:31:56Z",
"date_interval": "day",
"dimensions": [],
"order_by": {
"date": "asc"
},
"pagination": {
"limit": 10000,
"offset": 0
},
"filters": [
{
"field": "region_id",
"value": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
]
}
'const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
metrics: [],
category_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
start_date: '2023-11-07T05:31:56Z',
end_date: '2023-11-07T05:31:56Z',
date_interval: 'day',
dimensions: [],
order_by: {date: 'asc'},
pagination: {limit: 10000, offset: 0},
filters: [{field: 'region_id', value: '3c90c3cc-0d44-4b50-8888-8dd25736052a'}]
})
};
fetch('https://api.tryprofound.com/v1/reports/visibility', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.tryprofound.com/v1/reports/visibility",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'metrics' => [
],
'category_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'start_date' => '2023-11-07T05:31:56Z',
'end_date' => '2023-11-07T05:31:56Z',
'date_interval' => 'day',
'dimensions' => [
],
'order_by' => [
'date' => 'asc'
],
'pagination' => [
'limit' => 10000,
'offset' => 0
],
'filters' => [
[
'field' => 'region_id',
'value' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.tryprofound.com/v1/reports/visibility"
payload := strings.NewReader("{\n \"metrics\": [],\n \"category_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"start_date\": \"2023-11-07T05:31:56Z\",\n \"end_date\": \"2023-11-07T05:31:56Z\",\n \"date_interval\": \"day\",\n \"dimensions\": [],\n \"order_by\": {\n \"date\": \"asc\"\n },\n \"pagination\": {\n \"limit\": 10000,\n \"offset\": 0\n },\n \"filters\": [\n {\n \"field\": \"region_id\",\n \"value\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.tryprofound.com/v1/reports/visibility")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"metrics\": [],\n \"category_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"start_date\": \"2023-11-07T05:31:56Z\",\n \"end_date\": \"2023-11-07T05:31:56Z\",\n \"date_interval\": \"day\",\n \"dimensions\": [],\n \"order_by\": {\n \"date\": \"asc\"\n },\n \"pagination\": {\n \"limit\": 10000,\n \"offset\": 0\n },\n \"filters\": [\n {\n \"field\": \"region_id\",\n \"value\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tryprofound.com/v1/reports/visibility")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"metrics\": [],\n \"category_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"start_date\": \"2023-11-07T05:31:56Z\",\n \"end_date\": \"2023-11-07T05:31:56Z\",\n \"date_interval\": \"day\",\n \"dimensions\": [],\n \"order_by\": {\n \"date\": \"asc\"\n },\n \"pagination\": {\n \"limit\": 10000,\n \"offset\": 0\n },\n \"filters\": [\n {\n \"field\": \"region_id\",\n \"value\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"info": {
"total_rows": 123,
"query": {}
},
"data": [
{
"metrics": [
123
],
"dimensions": [
"<string>"
]
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Reports v1
Query Visibility
Query visibility report.
POST
/
v1
/
reports
/
visibility
Python
import os
from profound import Profound
client = Profound(
api_key=os.environ.get("PROFOUND_API_KEY"),
)
report = client.reports.visibility(
date_interval="day",
dimensions=[],
metrics=["share_of_voice"],
order_by={},
category_id="7c9e6679-7425-40de-944b-e07fc1f90ae7",
start_date="2024-01-01T00:00:00.000Z",
end_date="2024-01-01T00:00:00.000Z",
)
print(report)import Profound from '@profoundai/client';
const client = new Profound({
apiKey: process.env['PROFOUND_API_KEY'], // defaults to the PROFOUND_API_KEY env var
environment: 'production',
});
const report = await client.reports.visibility({
date_interval: 'day',
dimensions: [],
metrics: ['share_of_voice'],
order_by: {},
category_id: '7c9e6679-7425-40de-944b-e07fc1f90ae7',
start_date: '2024-01-01T00:00:00.000Z',
end_date: '2024-01-01T00:00:00.000Z',
});
console.log(report);use profound::*;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = ProfoundClient::builder()
.api_key(std::env::var("PROFOUND_API_KEY")?)
.build()?;
let response = client
.reports()
.visibility(VisibilityQuery {
date_interval: None,
dimensions: None,
metrics: vec![VisibilityQueryMetric::ShareOfVoice],
order_by: None,
pagination: None,
category_id: "7c9e6679-7425-40de-944b-e07fc1f90ae7".to_string(),
start_date: chrono::Utc::now().fixed_offset(),
end_date: chrono::Utc::now().fixed_offset(),
filters: None,
})
.send()
.await?;
println!("{:?}", response);
Ok(())
}curl --request POST \
--url https://api.tryprofound.com/v1/reports/visibility \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"metrics": [],
"category_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"start_date": "2023-11-07T05:31:56Z",
"end_date": "2023-11-07T05:31:56Z",
"date_interval": "day",
"dimensions": [],
"order_by": {
"date": "asc"
},
"pagination": {
"limit": 10000,
"offset": 0
},
"filters": [
{
"field": "region_id",
"value": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
]
}
'const options = {
method: 'POST',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
metrics: [],
category_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
start_date: '2023-11-07T05:31:56Z',
end_date: '2023-11-07T05:31:56Z',
date_interval: 'day',
dimensions: [],
order_by: {date: 'asc'},
pagination: {limit: 10000, offset: 0},
filters: [{field: 'region_id', value: '3c90c3cc-0d44-4b50-8888-8dd25736052a'}]
})
};
fetch('https://api.tryprofound.com/v1/reports/visibility', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.tryprofound.com/v1/reports/visibility",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'metrics' => [
],
'category_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'start_date' => '2023-11-07T05:31:56Z',
'end_date' => '2023-11-07T05:31:56Z',
'date_interval' => 'day',
'dimensions' => [
],
'order_by' => [
'date' => 'asc'
],
'pagination' => [
'limit' => 10000,
'offset' => 0
],
'filters' => [
[
'field' => 'region_id',
'value' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.tryprofound.com/v1/reports/visibility"
payload := strings.NewReader("{\n \"metrics\": [],\n \"category_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"start_date\": \"2023-11-07T05:31:56Z\",\n \"end_date\": \"2023-11-07T05:31:56Z\",\n \"date_interval\": \"day\",\n \"dimensions\": [],\n \"order_by\": {\n \"date\": \"asc\"\n },\n \"pagination\": {\n \"limit\": 10000,\n \"offset\": 0\n },\n \"filters\": [\n {\n \"field\": \"region_id\",\n \"value\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.tryprofound.com/v1/reports/visibility")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"metrics\": [],\n \"category_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"start_date\": \"2023-11-07T05:31:56Z\",\n \"end_date\": \"2023-11-07T05:31:56Z\",\n \"date_interval\": \"day\",\n \"dimensions\": [],\n \"order_by\": {\n \"date\": \"asc\"\n },\n \"pagination\": {\n \"limit\": 10000,\n \"offset\": 0\n },\n \"filters\": [\n {\n \"field\": \"region_id\",\n \"value\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.tryprofound.com/v1/reports/visibility")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"metrics\": [],\n \"category_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"start_date\": \"2023-11-07T05:31:56Z\",\n \"end_date\": \"2023-11-07T05:31:56Z\",\n \"date_interval\": \"day\",\n \"dimensions\": [],\n \"order_by\": {\n \"date\": \"asc\"\n },\n \"pagination\": {\n \"limit\": 10000,\n \"offset\": 0\n },\n \"filters\": [\n {\n \"field\": \"region_id\",\n \"value\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"info": {
"total_rows": 123,
"query": {}
},
"data": [
{
"metrics": [
123
],
"dimensions": [
"<string>"
]
}
]
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
APIKeyHeaderBearerAuth
Body
application/json
Available options:
share_of_voice, mentions_count, visibility_score, executions, average_position Start date for the report. Accepts formats: YYYY-MM-DD, YYYY-MM-DD HH:MM, or full ISO timestamp.
End date for the report. Accepts formats: YYYY-MM-DD, YYYY-MM-DD HH:MM, or full ISO timestamp.
Date interval for the report. (only used with date dimension)
Available options:
hour, day, week, month, quarter, year, relative_week Dimensions to group the report by.
Available options:
date, region, topic, topic_id, model, asset_id, asset_name, prompt, prompt_id, tag, persona Custom ordering of the report results.
The order is a record of key-value pairs where:
- key is the field to order by, which can be a metric or dimension
- value is the direction of the order, either 'asc' for ascending or 'desc' for descending.
When not specified, the default order is the first metric in the query descending.
Show child attributes
Show child attributes
Example:
{ "date": "asc" }
Pagination settings for the report results.
Show child attributes
Show child attributes
filters
(RegionIdFilter · object | RegionNameFilter · object | ModelIdFilter · object | TopicIdFilter · object | TopicNameFilter · object | AssetNameFilter · object | TagIdFilter · object | TagNameFilter · object | PromptIdFilter · object | PromptFilter · object | PersonaIdFilter · object)[]
List of filters to apply to the visibility report.
Filter by region UUID.
- RegionIdFilter
- RegionNameFilter
- ModelIdFilter
- TopicIdFilter
- TopicNameFilter
- AssetNameFilter
- TagIdFilter
- TagNameFilter
- PromptIdFilter
- PromptFilter
- PersonaIdFilter
Show child attributes
Show child attributes
Was this page helpful?