Support Tickets

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

FIELDTYPEDESCRIPTION
querystringCase-insensitive search over subject and ticket id. Alias of filter[q].
filter[q]stringCase-insensitive search over subject and ticket id.
filter[status]stringComma-separated statuses to include: open, pending, resolved, closed.
filter[priority]stringComma-separated priorities to include: low, medium, high.
filter[category_id]stringComma-separated support-category ids.
filter[account_id]stringComma-separated account ids.
filter[assignee_user_id]stringRestrict to tickets assigned to the team member with this user id. 404 if no active member has that user id.
filter[unassigned]booleanWhen true (and assignee_user_id is absent), returns only unassigned tickets.
sortstringSort column, - prefix for descending. One of last_message_at, created_at, priority, subject. Defaults to last_message_at descending.
pageinteger1-based page number.
per_pageintegerPage 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

STATUSDESCRIPTION
200 OKa page of tickets
401 Unauthorizedmissing or invalid API key
402 Payment Requiredthe team's plan does not include support tickets
403 Forbiddenthe 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

FIELDTYPEDESCRIPTION
idstring · requiredSupport 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

STATUSDESCRIPTION
200 OKthe ticket with its messages
401 Unauthorizedmissing or invalid API key
403 Forbiddenthe key lacks the support_tickets_read scope
404 Not Foundno 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

FIELDTYPEDESCRIPTION
idstring · requiredSupport ticket id.

Request body

FIELDTYPEDESCRIPTION
statusstring
one of open, pending, resolved, closed
New status.
prioritystring
one of low, medium, high
New priority.
assignee_user_idstringUser 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

STATUSDESCRIPTION
200 OKupdated
401 Unauthorizedmissing or invalid API key
403 Forbiddenthe key lacks the support_tickets_write scope
404 Not Foundno such ticket in this team
422 Unprocessable Contentinvalid status (or priority) value — error code invalid_status / invalid_priority

Was this article helpful?