curl --request GET \
--url https://app.surfacd.com/api/v1/projects/{project}/matrix-analysis \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.surfacd.com/api/v1/projects/{project}/matrix-analysis"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.surfacd.com/api/v1/projects/{project}/matrix-analysis', 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://app.surfacd.com/api/v1/projects/{project}/matrix-analysis",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.surfacd.com/api/v1/projects/{project}/matrix-analysis"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.surfacd.com/api/v1/projects/{project}/matrix-analysis")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.surfacd.com/api/v1/projects/{project}/matrix-analysis")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"row_dimension_type": "brand",
"column_dimension_type": "brand",
"metric_type": "industry_rank",
"rows": [
{
"id": "<string>",
"name": "<string>",
"metadata": {},
"cells": [
{
"column_id": "<string>",
"column_name": "<string>",
"value": 123,
"comparison_value": 123,
"change": 123,
"change_percentage": 123,
"is_positive_good": true
}
]
}
],
"columns": [
{
"id": "<string>",
"name": "<string>",
"metadata": {}
}
]
}{
"message": "<string>",
"errors": {}
}Matrix Analysis
Returns a metric (visibility, mentions, industry rank, or average position) broken out across two public dimensions. Row, column, and cell identifiers use the same public identifiers as filters: provider strings, country codes, enum values, UUIDs, or stable sentinels.
curl --request GET \
--url https://app.surfacd.com/api/v1/projects/{project}/matrix-analysis \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.surfacd.com/api/v1/projects/{project}/matrix-analysis"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.surfacd.com/api/v1/projects/{project}/matrix-analysis', 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://app.surfacd.com/api/v1/projects/{project}/matrix-analysis",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.surfacd.com/api/v1/projects/{project}/matrix-analysis"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.surfacd.com/api/v1/projects/{project}/matrix-analysis")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.surfacd.com/api/v1/projects/{project}/matrix-analysis")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"row_dimension_type": "brand",
"column_dimension_type": "brand",
"metric_type": "industry_rank",
"rows": [
{
"id": "<string>",
"name": "<string>",
"metadata": {},
"cells": [
{
"column_id": "<string>",
"column_name": "<string>",
"value": 123,
"comparison_value": 123,
"change": 123,
"change_percentage": 123,
"is_positive_good": true
}
]
}
],
"columns": [
{
"id": "<string>",
"name": "<string>",
"metadata": {}
}
]
}{
"message": "<string>",
"errors": {}
}Authorizations
Team API key created in Team Settings. Use it with URLs for the same team.
Path Parameters
Project UUID.
Query Parameters
brand, tag, country, service, topic Must differ from row_dimension.
brand, tag, country, service, topic industry_rank, visibility, mentions, avg_position Brand UUIDs. Pass repeated brands[]=... query params.
10Tag UUID or name filters. Discover tags with GET /api/v1/projects/{project}/tags.
AI platform provider filters such as chatgpt or perplexity. Discover providers with GET /api/v1/platforms.
Country code filters such as US or GB. Discover codes with GET /api/v1/countries.
Prompt UUID filter.
Topic UUID or name filters. Use no_topic for prompts without a topic. Discover topics with GET /api/v1/projects/{project}/topics.
Must be on or after start_date.
When true, brand dimensions only include the primary brand and marked competitors.
Response
Matrix analysis result.
brand, tag, country, service, topic brand, tag, country, service, topic industry_rank, visibility, mentions, avg_position Show child attributes
Show child attributes
Show child attributes
Show child attributes