Base URL: https://api.cornerspot.net
Authentication: requests use a bearer token, for example Authorization: Bearer YOUR_API_KEY.
List account statuses
GET /c/api/v1/account_statuses
Returns a paginated, filterable list of the team's account statuses ordered by position. Requires the accounts_read scope.
Query parameters
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
query | string | Full-text search on status name. |
filter[active] | boolean | Filter by active flag. Omit to return all statuses. |
filter[search] | string | Alias for query — full-text search on name. |
sort | string | Sort column with optional - prefix for descending. One of: name, position, active, is_default, created_at, updated_at. Default: position ascending. |
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/account_statuses' \
--header 'Authorization: Bearer YOUR_API_KEY'
const response = await fetch('https://api.cornerspot.net/c/api/v1/account_statuses', {
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/account_statuses', {
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/account_statuses"
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/account_statuses")
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/account_statuses',
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 account statuses |
401 Unauthorized | missing or invalid API key |
403 Forbidden | the key lacks the accounts_read scope |
Create an account status
POST /c/api/v1/account_statuses
Creates a new account status for the team. Requires the accounts_write scope.
Request body
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
account_status | object | |
account_status.name | string · required | Required. Max 60 chars; must be unique per team (case-insensitive). |
account_status.color | string · required | Required. Hex colour in #rrggbb format. |
account_status.description | string | Optional description. Max 255 chars. |
account_status.position | integer | Display order (acts_as_list manages this automatically). |
account_status.is_default | boolean | Set to true to mark this as the team's default status. |
account_status.active | boolean | Whether the status is active. Defaults to true. |
Code samples
curl --request POST \
--url 'https://api.cornerspot.net/c/api/v1/account_statuses' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--data '{
"account_status": {
"name": "string",
"color": "string",
"description": "string",
"position": 1,
"is_default": true,
"active": true
}
}'
const response = await fetch('https://api.cornerspot.net/c/api/v1/account_statuses', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({
"account_status": {
"name": "string",
"color": "string",
"description": "string",
"position": 1,
"is_default": true,
"active": true
}
})
});
const data = await response.json();
console.log(data);
// Node.js 18+ (native fetch)
const response = await fetch('https://api.cornerspot.net/c/api/v1/account_statuses', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({
"account_status": {
"name": "string",
"color": "string",
"description": "string",
"position": 1,
"is_default": true,
"active": true
}
})
});
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/account_statuses"
payload = json.dumps({
"account_status": {
"name": "string",
"color": "string",
"description": "string",
"position": 1,
"is_default": true,
"active": true
}
}).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/account_statuses")
request = Net::HTTP::Post.new(uri)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer YOUR_API_KEY"
request.body = JSON.generate({
"account_status": {
"name": "string",
"color": "string",
"description": "string",
"position": 1,
"is_default": true,
"active": true
}
})
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/account_statuses',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer YOUR_API_KEY',
],
CURLOPT_POSTFIELDS => json_encode([
'account_status' => [
'name' => 'string',
'color' => 'string',
'description' => 'string',
'position' => 1,
'is_default' => true,
'active' => true,
],
]),
]);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
print_r($data);
Responses
| STATUS | DESCRIPTION |
|---|---|
201 Created | created |
401 Unauthorized | missing or invalid API key |
403 Forbidden | the key lacks the accounts_write scope |
422 Unprocessable Content | validation errors (e.g. missing name or invalid color) |
Get an account status
GET /c/api/v1/account_statuses/{id}
Path parameters
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
id | string · required | Account status id (UUID). |
Code samples
curl --request GET \
--url 'https://api.cornerspot.net/c/api/v1/account_statuses/abc123' \
--header 'Authorization: Bearer YOUR_API_KEY'
const response = await fetch('https://api.cornerspot.net/c/api/v1/account_statuses/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/account_statuses/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/account_statuses/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/account_statuses/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/account_statuses/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 account status |
404 Not Found | no such account status in this team |
Update an account status
PATCH /c/api/v1/account_statuses/{id}
Updates one or more fields of the account status. Requires the accounts_write scope.
Path parameters
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
id | string · required | Account status id (UUID). |
Request body
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
account_status | object | |
account_status.name | string | |
account_status.color | string | |
account_status.description | string | |
account_status.position | integer | |
account_status.is_default | boolean | |
account_status.active | boolean |
Code samples
curl --request PATCH \
--url 'https://api.cornerspot.net/c/api/v1/account_statuses/abc123' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--data '{
"account_status": {
"name": "string",
"color": "string",
"description": "string",
"position": 1,
"is_default": true,
"active": true
}
}'
const response = await fetch('https://api.cornerspot.net/c/api/v1/account_statuses/abc123', {
method: 'PATCH',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({
"account_status": {
"name": "string",
"color": "string",
"description": "string",
"position": 1,
"is_default": true,
"active": true
}
})
});
const data = await response.json();
console.log(data);
// Node.js 18+ (native fetch)
const response = await fetch('https://api.cornerspot.net/c/api/v1/account_statuses/abc123', {
method: 'PATCH',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({
"account_status": {
"name": "string",
"color": "string",
"description": "string",
"position": 1,
"is_default": true,
"active": true
}
})
});
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/account_statuses/abc123"
payload = json.dumps({
"account_status": {
"name": "string",
"color": "string",
"description": "string",
"position": 1,
"is_default": true,
"active": true
}
}).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/account_statuses/abc123")
request = Net::HTTP::Patch.new(uri)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer YOUR_API_KEY"
request.body = JSON.generate({
"account_status": {
"name": "string",
"color": "string",
"description": "string",
"position": 1,
"is_default": true,
"active": true
}
})
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/account_statuses/abc123',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer YOUR_API_KEY',
],
CURLOPT_POSTFIELDS => json_encode([
'account_status' => [
'name' => 'string',
'color' => 'string',
'description' => 'string',
'position' => 1,
'is_default' => true,
'active' => true,
],
]),
]);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
print_r($data);
Responses
| STATUS | DESCRIPTION |
|---|---|
200 OK | updated |
404 Not Found | no such account status in this team |
422 Unprocessable Content | validation errors (e.g. duplicate name or invalid color) |
Delete an account status
DELETE /c/api/v1/account_statuses/{id}
Soft-deletes an account status. Accounts referencing this status will have their account_status_id set to NULL. The request is blocked (422) if the status is the team's default — set another status as default first.
Path parameters
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
id | string · required | Account status id (UUID). |
Code samples
curl --request DELETE \
--url 'https://api.cornerspot.net/c/api/v1/account_statuses/abc123' \
--header 'Authorization: Bearer YOUR_API_KEY'
const response = await fetch('https://api.cornerspot.net/c/api/v1/account_statuses/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/account_statuses/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/account_statuses/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/account_statuses/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/account_statuses/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
| STATUS | DESCRIPTION |
|---|---|
204 No Content | deleted |
404 Not Found | no such account status in this team |
422 Unprocessable Content | blocked — the status is the team's default and cannot be deleted |
Reorder account statuses
POST /c/api/v1/account_statuses/reorder
Sets the display order for ALL of the team's account statuses in one atomic operation. The ids array MUST contain exactly every account-status id belonging to the team — a partial list is rejected with 422 incomplete_reorder. Requires the accounts_write scope.
Request body
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
ids[] | array of string · required | Complete ordered list of every account-status id for the team. |
Code samples
curl --request POST \
--url 'https://api.cornerspot.net/c/api/v1/account_statuses/reorder' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--data '{
"ids": [
"1f2e3d4c-5b6a-4789-9c0d-1e2f3a4b5c6d"
]
}'
const response = await fetch('https://api.cornerspot.net/c/api/v1/account_statuses/reorder', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({
"ids": [
"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/account_statuses/reorder', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({
"ids": [
"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/account_statuses/reorder"
payload = json.dumps({
"ids": [
"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="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/account_statuses/reorder")
request = Net::HTTP::Post.new(uri)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer YOUR_API_KEY"
request.body = JSON.generate({
"ids": [
"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/account_statuses/reorder',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer YOUR_API_KEY',
],
CURLOPT_POSTFIELDS => json_encode([
'ids' => [
'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 | reordered — returns the full list in new position order |
401 Unauthorized | missing or invalid API key |
403 Forbidden | the key lacks the accounts_write scope |
422 Unprocessable Content | incomplete_reorder — ids does not match the team's full set of statuses |
