Create a Brand Radar campaign
curl --request POST \
--url https://app.keupera.com/api/v1/brand-radar/campaigns \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"website_id": "b3f1...",
"prompt": "best project management tools",
"brands": [
{
"name": "MyBrand",
"domain": "mybrand.com"
}
],
"competitors": [
{
"name": "Competitor",
"domain": "competitor.com"
}
],
"frequency": 7,
"languages": [
"en",
"de"
]
}
'import requests
url = "https://app.keupera.com/api/v1/brand-radar/campaigns"
payload = {
"website_id": "b3f1...",
"prompt": "best project management tools",
"brands": [
{
"name": "MyBrand",
"domain": "mybrand.com"
}
],
"competitors": [
{
"name": "Competitor",
"domain": "competitor.com"
}
],
"frequency": 7,
"languages": ["en", "de"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
website_id: 'b3f1...',
prompt: 'best project management tools',
brands: [{name: 'MyBrand', domain: 'mybrand.com'}],
competitors: [{name: 'Competitor', domain: 'competitor.com'}],
frequency: 7,
languages: ['en', 'de']
})
};
fetch('https://app.keupera.com/api/v1/brand-radar/campaigns', 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.keupera.com/api/v1/brand-radar/campaigns",
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([
'website_id' => 'b3f1...',
'prompt' => 'best project management tools',
'brands' => [
[
'name' => 'MyBrand',
'domain' => 'mybrand.com'
]
],
'competitors' => [
[
'name' => 'Competitor',
'domain' => 'competitor.com'
]
],
'frequency' => 7,
'languages' => [
'en',
'de'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://app.keupera.com/api/v1/brand-radar/campaigns"
payload := strings.NewReader("{\n \"website_id\": \"b3f1...\",\n \"prompt\": \"best project management tools\",\n \"brands\": [\n {\n \"name\": \"MyBrand\",\n \"domain\": \"mybrand.com\"\n }\n ],\n \"competitors\": [\n {\n \"name\": \"Competitor\",\n \"domain\": \"competitor.com\"\n }\n ],\n \"frequency\": 7,\n \"languages\": [\n \"en\",\n \"de\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://app.keupera.com/api/v1/brand-radar/campaigns")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"website_id\": \"b3f1...\",\n \"prompt\": \"best project management tools\",\n \"brands\": [\n {\n \"name\": \"MyBrand\",\n \"domain\": \"mybrand.com\"\n }\n ],\n \"competitors\": [\n {\n \"name\": \"Competitor\",\n \"domain\": \"competitor.com\"\n }\n ],\n \"frequency\": 7,\n \"languages\": [\n \"en\",\n \"de\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.keupera.com/api/v1/brand-radar/campaigns")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"website_id\": \"b3f1...\",\n \"prompt\": \"best project management tools\",\n \"brands\": [\n {\n \"name\": \"MyBrand\",\n \"domain\": \"mybrand.com\"\n }\n ],\n \"competitors\": [\n {\n \"name\": \"Competitor\",\n \"domain\": \"competitor.com\"\n }\n ],\n \"frequency\": 7,\n \"languages\": [\n \"en\",\n \"de\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"prompt": "Best project management tools",
"brands": [
{
"name": "MyBrand",
"domain": "mybrand.com"
}
],
"competitors": [
{
"name": "MyBrand",
"domain": "mybrand.com"
}
],
"frequency": 7,
"languages": [
"<string>"
],
"created_at": "2023-11-07T05:31:56Z"
}
}{
"error": "Missing required field: keywords"
}{
"error": "Invalid or missing API key"
}{
"error": "Usage limit reached for keyword_research"
}AI Visibility
Create a Brand Radar campaign
Creates a Brand Radar campaign that monitors a prompt across LLMs and tracks brand and competitor mentions.
POST
/
brand-radar
/
campaigns
Create a Brand Radar campaign
curl --request POST \
--url https://app.keupera.com/api/v1/brand-radar/campaigns \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"website_id": "b3f1...",
"prompt": "best project management tools",
"brands": [
{
"name": "MyBrand",
"domain": "mybrand.com"
}
],
"competitors": [
{
"name": "Competitor",
"domain": "competitor.com"
}
],
"frequency": 7,
"languages": [
"en",
"de"
]
}
'import requests
url = "https://app.keupera.com/api/v1/brand-radar/campaigns"
payload = {
"website_id": "b3f1...",
"prompt": "best project management tools",
"brands": [
{
"name": "MyBrand",
"domain": "mybrand.com"
}
],
"competitors": [
{
"name": "Competitor",
"domain": "competitor.com"
}
],
"frequency": 7,
"languages": ["en", "de"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
website_id: 'b3f1...',
prompt: 'best project management tools',
brands: [{name: 'MyBrand', domain: 'mybrand.com'}],
competitors: [{name: 'Competitor', domain: 'competitor.com'}],
frequency: 7,
languages: ['en', 'de']
})
};
fetch('https://app.keupera.com/api/v1/brand-radar/campaigns', 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.keupera.com/api/v1/brand-radar/campaigns",
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([
'website_id' => 'b3f1...',
'prompt' => 'best project management tools',
'brands' => [
[
'name' => 'MyBrand',
'domain' => 'mybrand.com'
]
],
'competitors' => [
[
'name' => 'Competitor',
'domain' => 'competitor.com'
]
],
'frequency' => 7,
'languages' => [
'en',
'de'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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://app.keupera.com/api/v1/brand-radar/campaigns"
payload := strings.NewReader("{\n \"website_id\": \"b3f1...\",\n \"prompt\": \"best project management tools\",\n \"brands\": [\n {\n \"name\": \"MyBrand\",\n \"domain\": \"mybrand.com\"\n }\n ],\n \"competitors\": [\n {\n \"name\": \"Competitor\",\n \"domain\": \"competitor.com\"\n }\n ],\n \"frequency\": 7,\n \"languages\": [\n \"en\",\n \"de\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://app.keupera.com/api/v1/brand-radar/campaigns")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"website_id\": \"b3f1...\",\n \"prompt\": \"best project management tools\",\n \"brands\": [\n {\n \"name\": \"MyBrand\",\n \"domain\": \"mybrand.com\"\n }\n ],\n \"competitors\": [\n {\n \"name\": \"Competitor\",\n \"domain\": \"competitor.com\"\n }\n ],\n \"frequency\": 7,\n \"languages\": [\n \"en\",\n \"de\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.keupera.com/api/v1/brand-radar/campaigns")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"website_id\": \"b3f1...\",\n \"prompt\": \"best project management tools\",\n \"brands\": [\n {\n \"name\": \"MyBrand\",\n \"domain\": \"mybrand.com\"\n }\n ],\n \"competitors\": [\n {\n \"name\": \"Competitor\",\n \"domain\": \"competitor.com\"\n }\n ],\n \"frequency\": 7,\n \"languages\": [\n \"en\",\n \"de\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"prompt": "Best project management tools",
"brands": [
{
"name": "MyBrand",
"domain": "mybrand.com"
}
],
"competitors": [
{
"name": "MyBrand",
"domain": "mybrand.com"
}
],
"frequency": 7,
"languages": [
"<string>"
],
"created_at": "2023-11-07T05:31:56Z"
}
}{
"error": "Missing required field: keywords"
}{
"error": "Invalid or missing API key"
}{
"error": "Usage limit reached for keyword_research"
}Authorizations
Pass your Keupera API key as a Bearer token: Authorization: Bearer YOUR_KEUPERA_API_KEY. Generate keys from Account → API Keys in your Keupera dashboard.
Body
application/json
The search prompt to monitor across LLMs.
Brand objects to track mentions for.
Show child attributes
Show child attributes
Competitor objects to track alongside.
Show child attributes
Show child attributes
Run frequency in days.
Language codes to run the prompt in (max 3).
Response
Campaign created.
Show child attributes
Show child attributes
⌘I