curl --request PATCH \
--url https://server.promptwatch.com/api/v2/brand-book \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"name": "<string>",
"website": "<string>",
"aliases": [
"<string>"
],
"shortDescription": "<string>",
"description": "<string>",
"keyFeatures": [
"<string>"
],
"analysisInstructions": "<string>"
}
'import requests
url = "https://server.promptwatch.com/api/v2/brand-book"
payload = {
"name": "<string>",
"website": "<string>",
"aliases": ["<string>"],
"shortDescription": "<string>",
"description": "<string>",
"keyFeatures": ["<string>"],
"analysisInstructions": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
website: '<string>',
aliases: ['<string>'],
shortDescription: '<string>',
description: '<string>',
keyFeatures: ['<string>'],
analysisInstructions: '<string>'
})
};
fetch('https://server.promptwatch.com/api/v2/brand-book', 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://server.promptwatch.com/api/v2/brand-book",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'website' => '<string>',
'aliases' => [
'<string>'
],
'shortDescription' => '<string>',
'description' => '<string>',
'keyFeatures' => [
'<string>'
],
'analysisInstructions' => '<string>'
]),
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://server.promptwatch.com/api/v2/brand-book"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"website\": \"<string>\",\n \"aliases\": [\n \"<string>\"\n ],\n \"shortDescription\": \"<string>\",\n \"description\": \"<string>\",\n \"keyFeatures\": [\n \"<string>\"\n ],\n \"analysisInstructions\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://server.promptwatch.com/api/v2/brand-book")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"website\": \"<string>\",\n \"aliases\": [\n \"<string>\"\n ],\n \"shortDescription\": \"<string>\",\n \"description\": \"<string>\",\n \"keyFeatures\": [\n \"<string>\"\n ],\n \"analysisInstructions\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.promptwatch.com/api/v2/brand-book")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"website\": \"<string>\",\n \"aliases\": [\n \"<string>\"\n ],\n \"shortDescription\": \"<string>\",\n \"description\": \"<string>\",\n \"keyFeatures\": [\n \"<string>\"\n ],\n \"analysisInstructions\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"projectId": "6ba7b81a-9dad-11d1-80b4-00c04fd430c8",
"slug": "example",
"name": "Example",
"website": "https://example.com",
"aliases": [
"Example Co"
],
"languageCode": "en-US",
"countryCode": "US",
"shortDescription": "A short summary of the brand",
"description": "A longer description of the brand",
"industry": "Advertising & Marketing",
"keyFeatures": [
"Fast setup"
],
"analysisInstructions": null
}{
"message": "<string>",
"error": "<string>",
"code": "<string>"
}{
"error": "Unauthorized",
"message": "Missing or invalid X-API-Key header."
}{
"message": "<string>",
"error": "<string>",
"code": "<string>"
}{
"code": "PROJECT_NOT_FOUND",
"message": "Project not found"
}{
"code": "PROJECT_NOT_FOUND",
"message": "Project not found"
}Update Brand Book
Update one or more brand book fields. Omit a field to leave it unchanged. At least one field is required. industry null means Other. An empty analysis instructions value clears it. Renaming also changes the project slug, which the response includes. languageCode, countryCode, and industry must be values from the brand book lists.
curl --request PATCH \
--url https://server.promptwatch.com/api/v2/brand-book \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"name": "<string>",
"website": "<string>",
"aliases": [
"<string>"
],
"shortDescription": "<string>",
"description": "<string>",
"keyFeatures": [
"<string>"
],
"analysisInstructions": "<string>"
}
'import requests
url = "https://server.promptwatch.com/api/v2/brand-book"
payload = {
"name": "<string>",
"website": "<string>",
"aliases": ["<string>"],
"shortDescription": "<string>",
"description": "<string>",
"keyFeatures": ["<string>"],
"analysisInstructions": "<string>"
}
headers = {
"X-API-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
website: '<string>',
aliases: ['<string>'],
shortDescription: '<string>',
description: '<string>',
keyFeatures: ['<string>'],
analysisInstructions: '<string>'
})
};
fetch('https://server.promptwatch.com/api/v2/brand-book', 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://server.promptwatch.com/api/v2/brand-book",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'website' => '<string>',
'aliases' => [
'<string>'
],
'shortDescription' => '<string>',
'description' => '<string>',
'keyFeatures' => [
'<string>'
],
'analysisInstructions' => '<string>'
]),
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://server.promptwatch.com/api/v2/brand-book"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"website\": \"<string>\",\n \"aliases\": [\n \"<string>\"\n ],\n \"shortDescription\": \"<string>\",\n \"description\": \"<string>\",\n \"keyFeatures\": [\n \"<string>\"\n ],\n \"analysisInstructions\": \"<string>\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://server.promptwatch.com/api/v2/brand-book")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"website\": \"<string>\",\n \"aliases\": [\n \"<string>\"\n ],\n \"shortDescription\": \"<string>\",\n \"description\": \"<string>\",\n \"keyFeatures\": [\n \"<string>\"\n ],\n \"analysisInstructions\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://server.promptwatch.com/api/v2/brand-book")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"website\": \"<string>\",\n \"aliases\": [\n \"<string>\"\n ],\n \"shortDescription\": \"<string>\",\n \"description\": \"<string>\",\n \"keyFeatures\": [\n \"<string>\"\n ],\n \"analysisInstructions\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"projectId": "6ba7b81a-9dad-11d1-80b4-00c04fd430c8",
"slug": "example",
"name": "Example",
"website": "https://example.com",
"aliases": [
"Example Co"
],
"languageCode": "en-US",
"countryCode": "US",
"shortDescription": "A short summary of the brand",
"description": "A longer description of the brand",
"industry": "Advertising & Marketing",
"keyFeatures": [
"Fast setup"
],
"analysisInstructions": null
}{
"message": "<string>",
"error": "<string>",
"code": "<string>"
}{
"error": "Unauthorized",
"message": "Missing or invalid X-API-Key header."
}{
"message": "<string>",
"error": "<string>",
"code": "<string>"
}{
"code": "PROJECT_NOT_FOUND",
"message": "Project not found"
}{
"code": "PROJECT_NOT_FOUND",
"message": "Project not found"
}Authorizations
API key for authentication. Get yours from the Promptwatch dashboard under Settings > API Keys.
Body
Brand name, 1-100 characters. Also updates the project slug.
1 - 100Brand website URL, including http:// or https://.
1Alternative names for the brand. Replaces the full alias list.
Language code from the brand book list, for example en-US.
en-US, en-GB, en-IN, en-AU, en-CA, en-NZ, nl-NL, nl-BE, es-ES, es-MX, es-AR, es-CO, es-CL, es-PE, es-VE, ca-ES, fr-FR, fr-BE, fr-CA, de-DE, de-AT, de-CH, cs-CZ, sk-SK, sl-SI, no-NO, sv-SE, da-DK, it-IT, fi-FI, pl-PL, hu-HU, ro-RO, lt-LT, lv-LV, uk-UA, el-GR, tr-TR, ar-SA, ar-EG, ar-AE, he-IL, pt-PT, pt-BR, ja-JP, id-ID, vi-VN, th-TH, km-KH, en-KH, ko-KR, hi-IN, ru-RU, kk-KZ, ms-MY, fil-PH, zh-SG, zh-TW, zh-HK Country code from the brand book list, for example US.
US, CA, MX, GB, IE, DE, FR, ES, IT, PT, NL, BE, LU, AT, CH, LI, MC, AD, NO, SE, DK, FI, IS, EE, LV, LT, PL, CZ, SK, HU, RO, BG, MD, UA, BY, RU, GR, CY, MT, TR, HR, SI, RS, BA, ME, MK, AL, AZ, GE, AM, JP, KR, HK, TW, MN, ID, TH, VN, PH, MY, SG, KH, IN, PK, BD, KZ, IL, AE, SA, BH, OM, EG, QA, KW, AU, NZ, FJ, PR, PA, CR, BR, AR, CL, CO, PE, EC, VE, BO, PY, UY, ZA, NG, GH, CI, SN, CM, GN Industry from the brand book list. null means Other.
Accounting & Tax, Advertising & Marketing, Aerospace & Defense, Agriculture & Farming, Architecture & Planning, Automotive, Banking, Beauty & Personal Care, Biotechnology, Business Services, Chemicals, Cleaning & Maintenance Services, Construction, Consulting, Consumer Electronics, Consumer Goods, Cybersecurity, Data & Analytics, Developer Tools, E-commerce Software, Education, Energy & Utilities, Engineering, Enterprise Software, Entertainment & Media, Environmental Services, Events & Conferences, Fashion & Apparel, Financial Services, Fintech Software, Food & Beverage, Gaming, Government & Public Sector, Healthcare, Healthtech Software, Hospitality, Human Resources & Recruiting, HR & Recruiting Software, Industrial & Manufacturing, Information Technology, Infrastructure & Cloud, Insurance, Internet & Online Services, IT Management Software, Legal Services, Logistics & Supply Chain, Luxury Goods, Machinery & Equipment, Marketing & Advertising Software, Market Research, Mining & Metals, Nonprofit & Charities, Oil & Gas, Pharmaceuticals, Professional Services, Productivity & Collaboration Software, Publishing, Real Estate, Restaurants & Food Service, Retail, Sales & CRM Software, Security Services, Software, Sports & Fitness, Telecommunications, Transportation, Travel & Tourism, Venture Capital & Private Equity, Veterinary & Animal Services, Waste Management, Wholesale & Distribution Short summary of the brand. null clears it.
Longer description of the brand. null clears it.
Key features. Replaces the full list.
How AI engines should describe the brand, up to 1000 characters. null or an empty string clears it.
1000Response
Default Response
Project identifier
Project URL slug. Changes when the brand name changes.
Brand name
Brand website URL
Alternative names for the brand
Language code, for example en-US. Older projects may store a value outside the current list.
Country code, for example US. Older projects may store a value outside the current list.
Short summary of the brand
Longer description of the brand
Industry. null means Other. Older projects may store a value outside the current list.
Key features
How AI engines should describe the brand