Base URL: https://api.cornerspot.net
Authentication: requests use a bearer token, for example Authorization: Bearer YOUR_API_KEY.
List activity statuses
GET /c/api/v1/activity_statuses
Returns a paginated, filterable list of the team's activity statuses, ordered by position by default. Requires the activities_read scope.
Query parameters
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
query | string | Full-text search over name. |
filter[active] | boolean | Filter by active state (true or false). |
filter[search] | string | Alias for query — full-text search over name. |
sort | string | Sort column, - 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/activity_statuses' \
--header 'Authorization: Bearer YOUR_API_KEY'
const response = await fetch('https://api.cornerspot.net/c/api/v1/activity_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/activity_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/activity_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/activity_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/activity_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 activity statuses |
401 Unauthorized | missing or invalid API key |
403 Forbidden | the key lacks the activities_read scope |
Create an activity status
POST /c/api/v1/activity_statuses
Creates a new activity status for the team. name and color are required. Requires the activities_write scope.
Request body
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
activity_status | object | |
activity_status.name | string · required | Required. Max 60 chars; must be unique within the team. |
activity_status.color | string · required | Required. Hex color, e.g. #6366f1. |
activity_status.description | string | Optional. Max 255 chars. |
activity_status.position | integer | 1-based list position (acts_as_list). |
activity_status.is_default | boolean | Whether this is the team's default status. |
activity_status.active | boolean |
Code samples
curl --request POST \
--url 'https://api.cornerspot.net/c/api/v1/activity_statuses' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--data '{
"activity_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/activity_statuses', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({
"activity_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/activity_statuses', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({
"activity_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/activity_statuses"
payload = json.dumps({
"activity_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/activity_statuses")
request = Net::HTTP::Post.new(uri)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer YOUR_API_KEY"
request.body = JSON.generate({
"activity_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/activity_statuses',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer YOUR_API_KEY',
],
CURLOPT_POSTFIELDS => json_encode([
'activity_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 activities_write scope |
422 Unprocessable Content | validation errors (e.g. missing name or invalid color) |
Get an activity status
GET /c/api/v1/activity_statuses/{id}
Returns a single activity status by id. Requires the activities_read scope.
Path parameters
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
id | string · required | Activity status id (UUID). |
Code samples
curl --request GET \
--url 'https://api.cornerspot.net/c/api/v1/activity_statuses/abc123' \
--header 'Authorization: Bearer YOUR_API_KEY'
const response = await fetch('https://api.cornerspot.net/c/api/v1/activity_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/activity_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/activity_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/activity_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/activity_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 activity status |
401 Unauthorized | missing or invalid API key |
404 Not Found | no such activity status in this team |
Update an activity status
PATCH /c/api/v1/activity_statuses/{id}
Updates an activity status. Any subset of fields may be supplied. Requires the activities_write scope.
Path parameters
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
id | string · required | Activity status id (UUID). |
Request body
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
activity_status | object | |
activity_status.name | string | |
activity_status.color | string | |
activity_status.description | string | |
activity_status.position | integer | |
activity_status.is_default | boolean | |
activity_status.active | boolean |
Code samples
curl --request PATCH \
--url 'https://api.cornerspot.net/c/api/v1/activity_statuses/abc123' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--data '{
"activity_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/activity_statuses/abc123', {
method: 'PATCH',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({
"activity_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/activity_statuses/abc123', {
method: 'PATCH',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY'
},
body: JSON.stringify({
"activity_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/activity_statuses/abc123"
payload = json.dumps({
"activity_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/activity_statuses/abc123")
request = Net::HTTP::Patch.new(uri)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer YOUR_API_KEY"
request.body = JSON.generate({
"activity_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/activity_statuses/abc123',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PATCH',
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer YOUR_API_KEY',
],
CURLOPT_POSTFIELDS => json_encode([
'activity_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 |
401 Unauthorized | missing or invalid API key |
403 Forbidden | the key lacks the activities_write scope |
404 Not Found | no such activity status in this team |
422 Unprocessable Content | validation errors (e.g. invalid color format or duplicate name) |
Delete an activity status
DELETE /c/api/v1/activity_statuses/{id}
Destroys an activity status. The DeletionService reassigns any activities using this status to the team's default status before deletion. Returns 422 if the status is the default (no fallback) or if the service is otherwise blocked.
Path parameters
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
id | string · required | Activity status id (UUID). |
Code samples
curl --request DELETE \
--url 'https://api.cornerspot.net/c/api/v1/activity_statuses/abc123' \
--header 'Authorization: Bearer YOUR_API_KEY'
const response = await fetch('https://api.cornerspot.net/c/api/v1/activity_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/activity_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/activity_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/activity_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/activity_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 — no content |
401 Unauthorized | missing or invalid API key |
403 Forbidden | the key lacks the activities_write scope |
404 Not Found | no such activity status in this team |
422 Unprocessable Content | deletion blocked (e.g. the status is the team default) |
Reorder activity statuses
POST /c/api/v1/activity_statuses/reorder
Reassigns position values for every activity status in the team. The ids array must contain every status id exactly once (a complete ordering); a partial list is rejected with 422 incomplete_reorder. Requires the activities_write scope.
Request body
| FIELD | TYPE | DESCRIPTION |
|---|---|---|
ids[] | array of string · required | Complete ordered list of every activity status id belonging to the team. |
Code samples
curl --request POST \
--url 'https://api.cornerspot.net/c/api/v1/activity_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/activity_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/activity_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/activity_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/activity_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/activity_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 all statuses in their new order |
401 Unauthorized | missing or invalid API key |
403 Forbidden | the key lacks the activities_write scope |
422 Unprocessable Content | incomplete reorder — ids does not match every status in the team |
