Knowledge Base Domains

Base URL: https://api.cornerspot.net

Authentication: requests use a bearer token, for example Authorization: Bearer YOUR_API_KEY.

List KB domains

GET /c/api/v1/kb_domains

Returns a paginated, filterable list of the team's knowledge-base embedding allowlist entries. Requires the kb_read scope and the Knowledge Base module.

Query parameters

FIELDTYPEDESCRIPTION
querystringPartial hostname search.
filter[enabled]string
one of true, false
Filter by enabled state. true returns only active entries; false returns only disabled ones.
filter[search]stringAlternative to query — partial hostname search.
sortstringSort column, - prefix for descending. One of hostname, enabled, created_at, updated_at. Default: hostname.
pageinteger1-based page number.
per_pageintegerPage size (1–100, default 25).

Code samples

curl --request GET \
  --url 'https://api.cornerspot.net/c/api/v1/kb_domains' \
  --header 'Authorization: Bearer YOUR_API_KEY'
const response = await fetch('https://api.cornerspot.net/c/api/v1/kb_domains', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

const data = await response.json();
console.log(data);
// Node.js 18+ (native fetch)
const response = await fetch('https://api.cornerspot.net/c/api/v1/kb_domains', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

if (!response.ok) {
  throw new Error(`Request failed: ${response.status}`);
}

const data = await response.json();
console.log(data);
import json
import urllib.request

url = "https://api.cornerspot.net/c/api/v1/kb_domains"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
}

request = urllib.request.Request(url, headers=headers, method="GET")

with urllib.request.urlopen(request) as response:
    data = json.loads(response.read().decode("utf-8"))
    print(data)
require "json"
require "net/http"

uri = URI("https://api.cornerspot.net/c/api/v1/kb_domains")

request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer YOUR_API_KEY"

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
  http.request(request)
end

puts JSON.parse(response.body)
<?php

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => 'https://api.cornerspot.net/c/api/v1/kb_domains',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer YOUR_API_KEY',
    ],
]);

$response = curl_exec($curl);
curl_close($curl);

$data = json_decode($response, true);
print_r($data);

Responses

STATUSDESCRIPTION
200 OKa page of KB domains
401 Unauthorizedmissing or invalid API key
402 Payment Requiredthe team's plan doesn't include the Knowledge Base module
403 Forbiddenthe key lacks the kb_read scope

Create a KB domain

POST /c/api/v1/kb_domains

Adds a hostname to the team's knowledge-base embedding allowlist. Requires kb_write.

Request body

FIELDTYPEDESCRIPTION
kb_domainobject
kb_domain.hostnamestring · requiredRequired — bare hostname to allow (no scheme, no path, no trailing slash).
kb_domain.include_subdomainsbooleanWhen true, all subdomains are also allowed. Defaults to false.
kb_domain.enabledbooleanWhether this entry is active. Defaults to true.
kb_domain.notestringOptional human-readable note.

Code samples

curl --request POST \
  --url 'https://api.cornerspot.net/c/api/v1/kb_domains' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --data '{
  "kb_domain": {
    "hostname": "string",
    "include_subdomains": true,
    "enabled": true,
    "note": "string"
  }
}'
const response = await fetch('https://api.cornerspot.net/c/api/v1/kb_domains', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: JSON.stringify({
    "kb_domain": {
      "hostname": "string",
      "include_subdomains": true,
      "enabled": true,
      "note": "string"
    }
  })
});

const data = await response.json();
console.log(data);
// Node.js 18+ (native fetch)
const response = await fetch('https://api.cornerspot.net/c/api/v1/kb_domains', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: JSON.stringify({
    "kb_domain": {
      "hostname": "string",
      "include_subdomains": true,
      "enabled": true,
      "note": "string"
    }
  })
});

if (!response.ok) {
  throw new Error(`Request failed: ${response.status}`);
}

const data = await response.json();
console.log(data);
import json
import urllib.request

url = "https://api.cornerspot.net/c/api/v1/kb_domains"
payload = json.dumps({
  "kb_domain": {
    "hostname": "string",
    "include_subdomains": true,
    "enabled": true,
    "note": "string"
  }
}).encode("utf-8")
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_API_KEY",
}

request = urllib.request.Request(url, data=payload, headers=headers, method="POST")

with urllib.request.urlopen(request) as response:
    data = json.loads(response.read().decode("utf-8"))
    print(data)
require "json"
require "net/http"

uri = URI("https://api.cornerspot.net/c/api/v1/kb_domains")

request = Net::HTTP::Post.new(uri)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer YOUR_API_KEY"
request.body = JSON.generate({
  "kb_domain": {
    "hostname": "string",
    "include_subdomains": true,
    "enabled": true,
    "note": "string"
  }
})

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
  http.request(request)
end

puts JSON.parse(response.body)
<?php

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => 'https://api.cornerspot.net/c/api/v1/kb_domains',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
        'Authorization: Bearer YOUR_API_KEY',
    ],
    CURLOPT_POSTFIELDS => json_encode([
    'kb_domain' => [
        'hostname' => 'string',
        'include_subdomains' => true,
        'enabled' => true,
        'note' => 'string',
    ],
]),
]);

$response = curl_exec($curl);
curl_close($curl);

$data = json_decode($response, true);
print_r($data);

Responses

STATUSDESCRIPTION
201 Createdcreated
401 Unauthorizedmissing or invalid API key
402 Payment Requiredthe team's plan doesn't include the Knowledge Base module
403 Forbiddenthe key lacks the kb_write scope
422 Unprocessable Contentvalidation errors (e.g. invalid hostname format or duplicate)

Get a KB domain

GET /c/api/v1/kb_domains/{id}

Path parameters

FIELDTYPEDESCRIPTION
idstring · requiredKbDomain id.

Code samples

curl --request GET \
  --url 'https://api.cornerspot.net/c/api/v1/kb_domains/abc123' \
  --header 'Authorization: Bearer YOUR_API_KEY'
const response = await fetch('https://api.cornerspot.net/c/api/v1/kb_domains/abc123', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

const data = await response.json();
console.log(data);
// Node.js 18+ (native fetch)
const response = await fetch('https://api.cornerspot.net/c/api/v1/kb_domains/abc123', {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

if (!response.ok) {
  throw new Error(`Request failed: ${response.status}`);
}

const data = await response.json();
console.log(data);
import json
import urllib.request

url = "https://api.cornerspot.net/c/api/v1/kb_domains/abc123"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
}

request = urllib.request.Request(url, headers=headers, method="GET")

with urllib.request.urlopen(request) as response:
    data = json.loads(response.read().decode("utf-8"))
    print(data)
require "json"
require "net/http"

uri = URI("https://api.cornerspot.net/c/api/v1/kb_domains/abc123")

request = Net::HTTP::Get.new(uri)
request["Authorization"] = "Bearer YOUR_API_KEY"

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
  http.request(request)
end

puts JSON.parse(response.body)
<?php

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => 'https://api.cornerspot.net/c/api/v1/kb_domains/abc123',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'GET',
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer YOUR_API_KEY',
    ],
]);

$response = curl_exec($curl);
curl_close($curl);

$data = json_decode($response, true);
print_r($data);

Responses

STATUSDESCRIPTION
200 OKthe KB domain
404 Not Foundno such KB domain in this team

Update a KB domain

PATCH /c/api/v1/kb_domains/{id}

Updates an existing knowledge-base allowlist entry. Requires kb_write.

Path parameters

FIELDTYPEDESCRIPTION
idstring · requiredKbDomain id.

Request body

FIELDTYPEDESCRIPTION
kb_domainobject
kb_domain.hostnamestring
kb_domain.include_subdomainsboolean
kb_domain.enabledboolean
kb_domain.notestring

Code samples

curl --request PATCH \
  --url 'https://api.cornerspot.net/c/api/v1/kb_domains/abc123' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --data '{
  "kb_domain": {
    "hostname": "string",
    "include_subdomains": true,
    "enabled": true,
    "note": "string"
  }
}'
const response = await fetch('https://api.cornerspot.net/c/api/v1/kb_domains/abc123', {
  method: 'PATCH',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: JSON.stringify({
    "kb_domain": {
      "hostname": "string",
      "include_subdomains": true,
      "enabled": true,
      "note": "string"
    }
  })
});

const data = await response.json();
console.log(data);
// Node.js 18+ (native fetch)
const response = await fetch('https://api.cornerspot.net/c/api/v1/kb_domains/abc123', {
  method: 'PATCH',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: JSON.stringify({
    "kb_domain": {
      "hostname": "string",
      "include_subdomains": true,
      "enabled": true,
      "note": "string"
    }
  })
});

if (!response.ok) {
  throw new Error(`Request failed: ${response.status}`);
}

const data = await response.json();
console.log(data);
import json
import urllib.request

url = "https://api.cornerspot.net/c/api/v1/kb_domains/abc123"
payload = json.dumps({
  "kb_domain": {
    "hostname": "string",
    "include_subdomains": true,
    "enabled": true,
    "note": "string"
  }
}).encode("utf-8")
headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer YOUR_API_KEY",
}

request = urllib.request.Request(url, data=payload, headers=headers, method="PATCH")

with urllib.request.urlopen(request) as response:
    data = json.loads(response.read().decode("utf-8"))
    print(data)
require "json"
require "net/http"

uri = URI("https://api.cornerspot.net/c/api/v1/kb_domains/abc123")

request = Net::HTTP::Patch.new(uri)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer YOUR_API_KEY"
request.body = JSON.generate({
  "kb_domain": {
    "hostname": "string",
    "include_subdomains": true,
    "enabled": true,
    "note": "string"
  }
})

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
  http.request(request)
end

puts JSON.parse(response.body)
<?php

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => 'https://api.cornerspot.net/c/api/v1/kb_domains/abc123',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'PATCH',
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
        'Authorization: Bearer YOUR_API_KEY',
    ],
    CURLOPT_POSTFIELDS => json_encode([
    'kb_domain' => [
        'hostname' => 'string',
        'include_subdomains' => true,
        'enabled' => true,
        'note' => 'string',
    ],
]),
]);

$response = curl_exec($curl);
curl_close($curl);

$data = json_decode($response, true);
print_r($data);

Responses

STATUSDESCRIPTION
200 OKupdated
404 Not Foundno such KB domain in this team
422 Unprocessable Contentvalidation errors (e.g. invalid hostname format)

Delete a KB domain

DELETE /c/api/v1/kb_domains/{id}

Permanently removes a hostname from the team's knowledge-base embedding allowlist. Requires kb_write.

Path parameters

FIELDTYPEDESCRIPTION
idstring · requiredKbDomain id.

Code samples

curl --request DELETE \
  --url 'https://api.cornerspot.net/c/api/v1/kb_domains/abc123' \
  --header 'Authorization: Bearer YOUR_API_KEY'
const response = await fetch('https://api.cornerspot.net/c/api/v1/kb_domains/abc123', {
  method: 'DELETE',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

const data = await response.json();
console.log(data);
// Node.js 18+ (native fetch)
const response = await fetch('https://api.cornerspot.net/c/api/v1/kb_domains/abc123', {
  method: 'DELETE',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY'
  }
});

if (!response.ok) {
  throw new Error(`Request failed: ${response.status}`);
}

const data = await response.json();
console.log(data);
import json
import urllib.request

url = "https://api.cornerspot.net/c/api/v1/kb_domains/abc123"
headers = {
    "Authorization": "Bearer YOUR_API_KEY",
}

request = urllib.request.Request(url, headers=headers, method="DELETE")

with urllib.request.urlopen(request) as response:
    data = json.loads(response.read().decode("utf-8"))
    print(data)
require "json"
require "net/http"

uri = URI("https://api.cornerspot.net/c/api/v1/kb_domains/abc123")

request = Net::HTTP::Delete.new(uri)
request["Authorization"] = "Bearer YOUR_API_KEY"

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: uri.scheme == "https") do |http|
  http.request(request)
end

puts JSON.parse(response.body)
<?php

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => 'https://api.cornerspot.net/c/api/v1/kb_domains/abc123',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'DELETE',
    CURLOPT_HTTPHEADER => [
        'Authorization: Bearer YOUR_API_KEY',
    ],
]);

$response = curl_exec($curl);
curl_close($curl);

$data = json_decode($response, true);
print_r($data);

Responses

STATUSDESCRIPTION
204 No Contentdeleted
404 Not Foundno such KB domain in this team

Was this article helpful?