Base URL: https://api.cornerspot.net
Authentication: requests use a bearer token, for example Authorization: Bearer YOUR_API_KEY.
List support tickets
GET /c/api/v1/support/tickets
Returns a paginated, filterable page of the team's support tickets, newest activity first by default. Requires the support_tickets_read scope and the Support Tickets module.
Query parameters
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
query | string | Case-insensitive search over subject and ticket id. Alias of filter[q]. |
filter[q] | string | Case-insensitive search over subject and ticket id. |
filter[status] | string | Comma-separated statuses to include: open, pending, resolved, closed. |
filter[priority] | string | Comma-separated priorities to include: low, medium, high. |
filter[category_id] | string | Comma-separated support-category ids. |
filter[account_id] | string | Comma-separated account ids. |
filter[assignee_user_id] | string | Restrict to tickets assigned to the team member with this user id. 404 if no active member has that user id. |
filter[unassigned] | boolean | When true (and assignee_user_id is absent), returns only unassigned tickets. |
sort | string | Sort column, - prefix for descending. One of last_message_at, created_at, priority, subject. Defaults to last_message_at descending. |
page | integer | 1-based page number. |
per_page | integer | Page size (1-100, default 25). |
Code samples
curl --request GET \
--url 'https://api.cornerspot.net/c/api/v1/support/tickets' \
--header 'Authorization: Bearer YOUR_API_KEY'
const response = await fetch('https://api.cornerspot.net/c/api/v1/support/tickets', {
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/support/tickets', {
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/support/tickets"
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/support/tickets")
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/support/tickets',
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
| STATUS | DESCRIPTION |
|---|---|
200 OK | a page of tickets |
401 Unauthorized | missing or invalid API key |
402 Payment Required | the team's plan does not include support tickets |
403 Forbidden | the key lacks the support_tickets_read scope |
Get a support ticket
GET /c/api/v1/support/tickets/{id}
Returns a single ticket together with its messages (oldest first). Requires support_tickets_read.
Path parameters
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
id | string · required | Support ticket id. |
Code samples
curl --request GET \
--url 'https://api.cornerspot.net/c/api/v1/support/tickets/abc123' \
--header 'Authorization: Bearer YOUR_API_KEY'
const response = await fetch('https://api.cornerspot.net/c/api/v1/support/tickets/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/support/tickets/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/support/tickets/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/support/tickets/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/support/tickets/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
| STATUS | DESCRIPTION |
|---|---|
200 OK | the ticket with its messages |
401 Unauthorized | missing or invalid API key |
403 Forbidden | the key lacks the support_tickets_read scope |
404 Not Found | no such ticket in this team |
Update a support ticket
PATCH /c/api/v1/support/tickets/{id}
Applies any combination of status, priority, and assignment changes in one call. All fields are optional. Pass assignee_user_id: null (explicitly) to unassign. Requires the support_tickets_write scope. Returns the updated ticket with its messages.
Path parameters
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
id | string · required | Support ticket id. |
Request body
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
status | string one of open, pending, resolved, closed | New status. |
priority | string one of low, medium, high | New priority. |
assignee_user_id | string | User id of an active team member to assign; null to unassign. Must resolve to an active member of the team. |
Code samples
curl --request PATCH \
--url 'https://api.cornerspot.net/c/api/v1/support/tickets/abc123' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--data '{
"status": "open",
"priority": "low",
"assignee_user_id": "1f2e3d4c-5b6a-4789-9c0d-1e2f3a4b5c6d"
}'
const response = await fetch('https://api.cornerspot.net/c/api/v1/support/tickets/abc123', {
method: 'PATCH',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({
"status": "open",
"priority": "low",
"assignee_user_id": "1f2e3d4c-5b6a-4789-9c0d-1e2f3a4b5c6d"
})
});
const data = await response.json();
console.log(data);
// Node.js 18+ (native fetch)
const response = await fetch('https://api.cornerspot.net/c/api/v1/support/tickets/abc123', {
method: 'PATCH',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({
"status": "open",
"priority": "low",
"assignee_user_id": "1f2e3d4c-5b6a-4789-9c0d-1e2f3a4b5c6d"
})
});
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/support/tickets/abc123"
payload = json.dumps({
"status": "open",
"priority": "low",
"assignee_user_id": "1f2e3d4c-5b6a-4789-9c0d-1e2f3a4b5c6d"
}).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/support/tickets/abc123")
request = Net::HTTP::Patch.new(uri)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer YOUR_API_KEY"
request.body = JSON.generate({
"status": "open",
"priority": "low",
"assignee_user_id": "1f2e3d4c-5b6a-4789-9c0d-1e2f3a4b5c6d"
})
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/support/tickets/abc123',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer YOUR_API_KEY',
],
CURLOPT_POSTFIELDS => json_encode([
'status' => 'open',
'priority' => 'low',
'assignee_user_id' => '1f2e3d4c-5b6a-4789-9c0d-1e2f3a4b5c6d',
]),
]);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
print_r($data);
Responses
| STATUS | DESCRIPTION |
|---|---|
200 OK | updated |
401 Unauthorized | missing or invalid API key |
403 Forbidden | the key lacks the support_tickets_write scope |
404 Not Found | no such ticket in this team |
422 Unprocessable Content | invalid status (or priority) value — error code invalid_status / invalid_priority |
