Contact Statuses

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

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

List contact statuses

GET /c/api/v1/contact_statuses

Returns a paginated list of the team's contact statuses. Default order is by position; pass sort to override. Requires the contacts_read scope.

Query parameters

FIELDTYPEDESCRIPTION
querystringSearch by name.
filter[active]booleanFilter by active/inactive flag.
filter[search]stringAlternative name search (same as query).
sortstringSort column, - prefix for descending. One of: name, position, active, is_default, created_at, updated_at. Default: position.
pageinteger1-based page number.
per_pageintegerPage size (1–100, default 25).

Code samples

curl --request GET \
  --url 'https://api.cornerspot.net/c/api/v1/contact_statuses' \
  --header 'Authorization: Bearer YOUR_API_KEY'
const response = await fetch('https://api.cornerspot.net/c/api/v1/contact_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/contact_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/contact_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/contact_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/contact_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

STATUSDESCRIPTION
200 OKa page of contact statuses
401 Unauthorizedmissing or invalid API key
403 Forbiddenthe key lacks the contacts_read scope

Create a contact status

POST /c/api/v1/contact_statuses

Creates a new contact status for the team. Requires contacts_write.

Request body

FIELDTYPEDESCRIPTION
contact_statusobject
contact_status.namestring · requiredRequired. Unique per team, max 60 characters.
contact_status.colorstring · requiredRequired. Hex colour (#rrggbb).
contact_status.descriptionstringOptional free-text description.
contact_status.positionintegerDisplay position (acts_as_list). Defaults to last.
contact_status.is_defaultbooleanMark as the team's default status.
contact_status.activebooleanWhether the status is active.

Code samples

curl --request POST \
  --url 'https://api.cornerspot.net/c/api/v1/contact_statuses' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --data '{
  "contact_status": {
    "name": "string",
    "color": "#10b981",
    "description": "string",
    "position": 1,
    "is_default": true,
    "active": true
  }
}'
const response = await fetch('https://api.cornerspot.net/c/api/v1/contact_statuses', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: JSON.stringify({
    "contact_status": {
      "name": "string",
      "color": "#10b981",
      "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/contact_statuses', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: JSON.stringify({
    "contact_status": {
      "name": "string",
      "color": "#10b981",
      "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/contact_statuses"
payload = json.dumps({
  "contact_status": {
    "name": "string",
    "color": "#10b981",
    "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/contact_statuses")

request = Net::HTTP::Post.new(uri)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer YOUR_API_KEY"
request.body = JSON.generate({
  "contact_status": {
    "name": "string",
    "color": "#10b981",
    "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/contact_statuses',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'POST',
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
        'Authorization: Bearer YOUR_API_KEY',
    ],
    CURLOPT_POSTFIELDS => json_encode([
    'contact_status' => [
        'name' => 'string',
        'color' => '#10b981',
        '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

STATUSDESCRIPTION
201 Createdcreated
401 Unauthorizedmissing or invalid API key
403 Forbiddenthe key lacks contacts_write scope
422 Unprocessable Contentvalidation errors (e.g. missing name, invalid color)

Get a contact status

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

Path parameters

FIELDTYPEDESCRIPTION
idstring · requiredContact status id.

Code samples

curl --request GET \
  --url 'https://api.cornerspot.net/c/api/v1/contact_statuses/abc123' \
  --header 'Authorization: Bearer YOUR_API_KEY'
const response = await fetch('https://api.cornerspot.net/c/api/v1/contact_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/contact_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/contact_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/contact_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/contact_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

STATUSDESCRIPTION
200 OKthe contact status
401 Unauthorizedmissing or invalid API key
404 Not Foundno such contact status in this team

Update a contact status

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

Updates a contact status. Requires contacts_write.

Path parameters

FIELDTYPEDESCRIPTION
idstring · requiredContact status id.

Request body

FIELDTYPEDESCRIPTION
contact_statusobject
contact_status.namestring
contact_status.colorstring
contact_status.descriptionstring
contact_status.positioninteger
contact_status.is_defaultboolean
contact_status.activeboolean

Code samples

curl --request PATCH \
  --url 'https://api.cornerspot.net/c/api/v1/contact_statuses/abc123' \
  --header 'Content-Type: application/json' \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --data '{
  "contact_status": {
    "name": "string",
    "color": "#f59e0b",
    "description": "string",
    "position": 1,
    "is_default": true,
    "active": true
  }
}'
const response = await fetch('https://api.cornerspot.net/c/api/v1/contact_statuses/abc123', {
  method: 'PATCH',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: JSON.stringify({
    "contact_status": {
      "name": "string",
      "color": "#f59e0b",
      "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/contact_statuses/abc123', {
  method: 'PATCH',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_API_KEY'
  },
  body: JSON.stringify({
    "contact_status": {
      "name": "string",
      "color": "#f59e0b",
      "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/contact_statuses/abc123"
payload = json.dumps({
  "contact_status": {
    "name": "string",
    "color": "#f59e0b",
    "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/contact_statuses/abc123")

request = Net::HTTP::Patch.new(uri)
request["Content-Type"] = "application/json"
request["Authorization"] = "Bearer YOUR_API_KEY"
request.body = JSON.generate({
  "contact_status": {
    "name": "string",
    "color": "#f59e0b",
    "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/contact_statuses/abc123',
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_CUSTOMREQUEST => 'PATCH',
    CURLOPT_HTTPHEADER => [
        'Content-Type: application/json',
        'Authorization: Bearer YOUR_API_KEY',
    ],
    CURLOPT_POSTFIELDS => json_encode([
    'contact_status' => [
        'name' => 'string',
        'color' => '#f59e0b',
        '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

STATUSDESCRIPTION
200 OKupdated
401 Unauthorizedmissing or invalid API key
403 Forbiddenthe key lacks contacts_write scope
404 Not Foundno such contact status in this team
422 Unprocessable Contentvalidation errors (e.g. blank name, duplicate name)

Delete a contact status

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

Deletes a contact status. The DeletionService reassigns any contacts using this status to the team's default status before removing it. Returns 422 if the status is the team's default (set another status as default first) or if no default status exists to reassign contacts to. Requires contacts_write.

Path parameters

FIELDTYPEDESCRIPTION
idstring · requiredContact status id.

Code samples

curl --request DELETE \
  --url 'https://api.cornerspot.net/c/api/v1/contact_statuses/abc123' \
  --header 'Authorization: Bearer YOUR_API_KEY'
const response = await fetch('https://api.cornerspot.net/c/api/v1/contact_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/contact_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/contact_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/contact_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/contact_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

STATUSDESCRIPTION
204 No Contentdeleted
401 Unauthorizedmissing or invalid API key
403 Forbiddenthe key lacks contacts_write scope
404 Not Foundno such contact status in this team
422 Unprocessable Contentcannot delete the default status

Reorder contact statuses

POST /c/api/v1/contact_statuses/reorder

Sets the position of every contact status in one atomic operation. The ids array must contain exactly the ids of every contact status in the team — a partial list returns 422 incomplete_reorder. Requires contacts_write.

Request body

FIELDTYPEDESCRIPTION
ids[]array of string · requiredComplete ordered list of all contact status ids for the team.

Code samples

curl --request POST \
  --url 'https://api.cornerspot.net/c/api/v1/contact_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/contact_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/contact_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/contact_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/contact_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/contact_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

STATUSDESCRIPTION
200 OKreordered — returns the full list in new order
401 Unauthorizedmissing or invalid API key
403 Forbiddenthe key lacks contacts_write scope
422 Unprocessable Contentincomplete reorder — ids list does not match all team statuses

Was this article helpful?