curl --request POST \
--url https://api.hq.zone/v1/api/business-profile/logo \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"body_b64": "<string>",
"content_type": "<string>",
"filename": "<string>"
}
'import requests
url = "https://api.hq.zone/v1/api/business-profile/logo"
payload = {
"body_b64": "<string>",
"content_type": "<string>",
"filename": "<string>"
}
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({body_b64: '<string>', content_type: '<string>', filename: '<string>'})
};
fetch('https://api.hq.zone/v1/api/business-profile/logo', 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.hq.zone/v1/api/business-profile/logo",
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([
'body_b64' => '<string>',
'content_type' => '<string>',
'filename' => '<string>'
]),
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://api.hq.zone/v1/api/business-profile/logo"
payload := strings.NewReader("{\n \"body_b64\": \"<string>\",\n \"content_type\": \"<string>\",\n \"filename\": \"<string>\"\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://api.hq.zone/v1/api/business-profile/logo")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"body_b64\": \"<string>\",\n \"content_type\": \"<string>\",\n \"filename\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hq.zone/v1/api/business-profile/logo")
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 \"body_b64\": \"<string>\",\n \"content_type\": \"<string>\",\n \"filename\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"detected": [
{
"signal_type": "<string>",
"value": "<string>"
}
],
"overridden": [
"<string>"
],
"brand_palette": "<unknown>",
"business_domain": "<string>",
"crawl_domain": "<string>",
"crawl_status": "<string>",
"dm_sent_at": "2023-11-07T05:31:56Z",
"enrichment": {
"enriched_at": "2023-11-07T05:31:56Z",
"industry": "<string>",
"segment": "<string>",
"size_hint": "<string>"
},
"fetched_at": "2023-11-07T05:31:56Z",
"fonts": "<unknown>",
"last_error": "<string>",
"logo_artifact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"logo_url": "<string>",
"pages_crawled": 123,
"summary": "<string>",
"summary_confidence": 123
}Upload business logo
Uploads a business logo supplied inline as base64 and returns the refreshed business profile. Admin only. Accepts PNG, JPEG, SVG, WebP and GIF up to 4 MiB; the stored logo becomes a manual override of the auto-discovered logo and is served from a stable HQ-hosted URL.
curl --request POST \
--url https://api.hq.zone/v1/api/business-profile/logo \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"body_b64": "<string>",
"content_type": "<string>",
"filename": "<string>"
}
'import requests
url = "https://api.hq.zone/v1/api/business-profile/logo"
payload = {
"body_b64": "<string>",
"content_type": "<string>",
"filename": "<string>"
}
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({body_b64: '<string>', content_type: '<string>', filename: '<string>'})
};
fetch('https://api.hq.zone/v1/api/business-profile/logo', 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.hq.zone/v1/api/business-profile/logo",
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([
'body_b64' => '<string>',
'content_type' => '<string>',
'filename' => '<string>'
]),
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://api.hq.zone/v1/api/business-profile/logo"
payload := strings.NewReader("{\n \"body_b64\": \"<string>\",\n \"content_type\": \"<string>\",\n \"filename\": \"<string>\"\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://api.hq.zone/v1/api/business-profile/logo")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"body_b64\": \"<string>\",\n \"content_type\": \"<string>\",\n \"filename\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.hq.zone/v1/api/business-profile/logo")
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 \"body_b64\": \"<string>\",\n \"content_type\": \"<string>\",\n \"filename\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"detected": [
{
"signal_type": "<string>",
"value": "<string>"
}
],
"overridden": [
"<string>"
],
"brand_palette": "<unknown>",
"business_domain": "<string>",
"crawl_domain": "<string>",
"crawl_status": "<string>",
"dm_sent_at": "2023-11-07T05:31:56Z",
"enrichment": {
"enriched_at": "2023-11-07T05:31:56Z",
"industry": "<string>",
"segment": "<string>",
"size_hint": "<string>"
},
"fetched_at": "2023-11-07T05:31:56Z",
"fonts": "<unknown>",
"last_error": "<string>",
"logo_artifact_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"logo_url": "<string>",
"pages_crawled": 123,
"summary": "<string>",
"summary_confidence": 123
}Authorizations
Personal Access Token. Send as Authorization: Bearer hq_pat_....
Response
Logo stored; returns the fresh profile
Technology signals detected for the tenant, highest-confidence first. Powers the read-only "Detected technology" section.
Show child attributes
Show child attributes
Which fields are currently admin-overridden. Powers the "Use auto" affordance in the UI - only the overridden fields get a reset-button.
Currently-set domain on the tenants row. May differ from
crawl.domain if the admin changed it after the last crawl.
Company enrichment learned by profiling (migration 0155).
None when none of industry/segment/size_hint are set.
Show child attributes
Show child attributes