curl --request POST \
--url https://prod.skillsdbnext.com/api/v1/assessments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "Q2 Skills Review",
"description": "Annual proficiency check-in.",
"managerGradesVisibleAt": "immediately",
"allPeople": true,
"scope": {
"businessUnitIds": [
"3"
],
"divisionIds": [
"<string>"
],
"countryIds": [
"<string>"
],
"businessRegionIds": [
"<string>"
],
"cityIds": [
"<string>"
],
"siteIds": [
"<string>"
],
"departmentIds": [
"12",
"15"
],
"teamIds": [
"<string>"
],
"shiftIds": [
"<string>"
]
},
"peopleTypeIds": [
"<string>"
],
"employeeDeadlineAt": "2026-03-31",
"managerDeadlineAt": "2026-04-15"
}
'import requests
url = "https://prod.skillsdbnext.com/api/v1/assessments"
payload = {
"title": "Q2 Skills Review",
"description": "Annual proficiency check-in.",
"managerGradesVisibleAt": "immediately",
"allPeople": True,
"scope": {
"businessUnitIds": ["3"],
"divisionIds": ["<string>"],
"countryIds": ["<string>"],
"businessRegionIds": ["<string>"],
"cityIds": ["<string>"],
"siteIds": ["<string>"],
"departmentIds": ["12", "15"],
"teamIds": ["<string>"],
"shiftIds": ["<string>"]
},
"peopleTypeIds": ["<string>"],
"employeeDeadlineAt": "2026-03-31",
"managerDeadlineAt": "2026-04-15"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: 'Q2 Skills Review',
description: 'Annual proficiency check-in.',
managerGradesVisibleAt: 'immediately',
allPeople: true,
scope: {
businessUnitIds: ['3'],
divisionIds: ['<string>'],
countryIds: ['<string>'],
businessRegionIds: ['<string>'],
cityIds: ['<string>'],
siteIds: ['<string>'],
departmentIds: ['12', '15'],
teamIds: ['<string>'],
shiftIds: ['<string>']
},
peopleTypeIds: ['<string>'],
employeeDeadlineAt: '2026-03-31',
managerDeadlineAt: '2026-04-15'
})
};
fetch('https://prod.skillsdbnext.com/api/v1/assessments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://prod.skillsdbnext.com/api/v1/assessments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'title' => 'Q2 Skills Review',
'description' => 'Annual proficiency check-in.',
'managerGradesVisibleAt' => 'immediately',
'allPeople' => true,
'scope' => [
'businessUnitIds' => [
'3'
],
'divisionIds' => [
'<string>'
],
'countryIds' => [
'<string>'
],
'businessRegionIds' => [
'<string>'
],
'cityIds' => [
'<string>'
],
'siteIds' => [
'<string>'
],
'departmentIds' => [
'12',
'15'
],
'teamIds' => [
'<string>'
],
'shiftIds' => [
'<string>'
]
],
'peopleTypeIds' => [
'<string>'
],
'employeeDeadlineAt' => '2026-03-31',
'managerDeadlineAt' => '2026-04-15'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://prod.skillsdbnext.com/api/v1/assessments"
payload := strings.NewReader("{\n \"title\": \"Q2 Skills Review\",\n \"description\": \"Annual proficiency check-in.\",\n \"managerGradesVisibleAt\": \"immediately\",\n \"allPeople\": true,\n \"scope\": {\n \"businessUnitIds\": [\n \"3\"\n ],\n \"divisionIds\": [\n \"<string>\"\n ],\n \"countryIds\": [\n \"<string>\"\n ],\n \"businessRegionIds\": [\n \"<string>\"\n ],\n \"cityIds\": [\n \"<string>\"\n ],\n \"siteIds\": [\n \"<string>\"\n ],\n \"departmentIds\": [\n \"12\",\n \"15\"\n ],\n \"teamIds\": [\n \"<string>\"\n ],\n \"shiftIds\": [\n \"<string>\"\n ]\n },\n \"peopleTypeIds\": [\n \"<string>\"\n ],\n \"employeeDeadlineAt\": \"2026-03-31\",\n \"managerDeadlineAt\": \"2026-04-15\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://prod.skillsdbnext.com/api/v1/assessments")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"Q2 Skills Review\",\n \"description\": \"Annual proficiency check-in.\",\n \"managerGradesVisibleAt\": \"immediately\",\n \"allPeople\": true,\n \"scope\": {\n \"businessUnitIds\": [\n \"3\"\n ],\n \"divisionIds\": [\n \"<string>\"\n ],\n \"countryIds\": [\n \"<string>\"\n ],\n \"businessRegionIds\": [\n \"<string>\"\n ],\n \"cityIds\": [\n \"<string>\"\n ],\n \"siteIds\": [\n \"<string>\"\n ],\n \"departmentIds\": [\n \"12\",\n \"15\"\n ],\n \"teamIds\": [\n \"<string>\"\n ],\n \"shiftIds\": [\n \"<string>\"\n ]\n },\n \"peopleTypeIds\": [\n \"<string>\"\n ],\n \"employeeDeadlineAt\": \"2026-03-31\",\n \"managerDeadlineAt\": \"2026-04-15\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://prod.skillsdbnext.com/api/v1/assessments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"Q2 Skills Review\",\n \"description\": \"Annual proficiency check-in.\",\n \"managerGradesVisibleAt\": \"immediately\",\n \"allPeople\": true,\n \"scope\": {\n \"businessUnitIds\": [\n \"3\"\n ],\n \"divisionIds\": [\n \"<string>\"\n ],\n \"countryIds\": [\n \"<string>\"\n ],\n \"businessRegionIds\": [\n \"<string>\"\n ],\n \"cityIds\": [\n \"<string>\"\n ],\n \"siteIds\": [\n \"<string>\"\n ],\n \"departmentIds\": [\n \"12\",\n \"15\"\n ],\n \"teamIds\": [\n \"<string>\"\n ],\n \"shiftIds\": [\n \"<string>\"\n ]\n },\n \"peopleTypeIds\": [\n \"<string>\"\n ],\n \"employeeDeadlineAt\": \"2026-03-31\",\n \"managerDeadlineAt\": \"2026-04-15\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "42",
"title": "Q2 Skills Review",
"description": "Annual proficiency check-in.",
"status": "draft",
"tracks": {
"employee": {
"status": "active",
"startedAt": "2026-03-01T00:00:00.000Z",
"endedAt": null,
"deadlineAt": "2026-03-31T00:00:00.000Z"
},
"manager": {
"status": "active",
"startedAt": "2026-03-01T00:00:00.000Z",
"endedAt": null,
"deadlineAt": "2026-03-31T00:00:00.000Z"
}
},
"startedAt": "2026-03-01T00:00:00.000Z",
"endedAt": null,
"deadlineAt": null,
"managerGradesVisibleAt": "immediately",
"allPeople": true,
"counts": {
"assigned": 120,
"completed": 40,
"employeesAssigned": 118,
"employeesCompleted": 60,
"managersAssigned": 14,
"managersCompleted": 5
},
"createdAt": "2026-02-20T09:00:00.000Z",
"updatedAt": null,
"scope": {
"allPeople": false,
"businessUnitIds": [
"3"
],
"divisionIds": [],
"countryIds": [],
"businessRegionIds": [],
"cityIds": [],
"siteIds": [],
"departmentIds": [
"12",
"15"
],
"teamIds": [],
"shiftIds": [],
"peopleTypeIds": []
}
}
}{
"type": "https://help.skillsdb.com/api-docs/errors/validation-error",
"title": "Validation failed",
"status": 400,
"detail": "limit must be between 1 and 200",
"instance": "/api/v1/people",
"requestId": "0192c2f1-6f4e-7ab3-b1c4-5f6a7b8c9d0e",
"errors": [
{
"field": "email",
"code": "max_length",
"message": "email must be shorter than or equal to 75 characters"
}
],
"error": "trial_expired",
"upgrade_url": "https://app.skillsdb.com/settings/billing"
}{
"type": "https://help.skillsdb.com/api-docs/errors/validation-error",
"title": "Validation failed",
"status": 400,
"detail": "limit must be between 1 and 200",
"instance": "/api/v1/people",
"requestId": "0192c2f1-6f4e-7ab3-b1c4-5f6a7b8c9d0e",
"errors": [
{
"field": "email",
"code": "max_length",
"message": "email must be shorter than or equal to 75 characters"
}
],
"error": "trial_expired",
"upgrade_url": "https://app.skillsdb.com/settings/billing"
}{
"type": "https://help.skillsdb.com/api-docs/errors/validation-error",
"title": "Validation failed",
"status": 400,
"detail": "limit must be between 1 and 200",
"instance": "/api/v1/people",
"requestId": "0192c2f1-6f4e-7ab3-b1c4-5f6a7b8c9d0e",
"errors": [
{
"field": "email",
"code": "max_length",
"message": "email must be shorter than or equal to 75 characters"
}
],
"error": "trial_expired",
"upgrade_url": "https://app.skillsdb.com/settings/billing"
}{
"type": "https://help.skillsdb.com/api-docs/errors/validation-error",
"title": "Validation failed",
"status": 400,
"detail": "limit must be between 1 and 200",
"instance": "/api/v1/people",
"requestId": "0192c2f1-6f4e-7ab3-b1c4-5f6a7b8c9d0e",
"errors": [
{
"field": "email",
"code": "max_length",
"message": "email must be shorter than or equal to 75 characters"
}
],
"error": "trial_expired",
"upgrade_url": "https://app.skillsdb.com/settings/billing"
}{
"type": "https://help.skillsdb.com/api-docs/errors/validation-error",
"title": "Validation failed",
"status": 400,
"detail": "limit must be between 1 and 200",
"instance": "/api/v1/people",
"requestId": "0192c2f1-6f4e-7ab3-b1c4-5f6a7b8c9d0e",
"errors": [
{
"field": "email",
"code": "max_length",
"message": "email must be shorter than or equal to 75 characters"
}
],
"error": "trial_expired",
"upgrade_url": "https://app.skillsdb.com/settings/billing"
}{
"type": "https://help.skillsdb.com/api-docs/errors/validation-error",
"title": "Validation failed",
"status": 400,
"detail": "limit must be between 1 and 200",
"instance": "/api/v1/people",
"requestId": "0192c2f1-6f4e-7ab3-b1c4-5f6a7b8c9d0e",
"errors": [
{
"field": "email",
"code": "max_length",
"message": "email must be shorter than or equal to 75 characters"
}
],
"error": "trial_expired",
"upgrade_url": "https://app.skillsdb.com/settings/billing"
}{
"type": "https://help.skillsdb.com/api-docs/errors/validation-error",
"title": "Validation failed",
"status": 400,
"detail": "limit must be between 1 and 200",
"instance": "/api/v1/people",
"requestId": "0192c2f1-6f4e-7ab3-b1c4-5f6a7b8c9d0e",
"errors": [
{
"field": "email",
"code": "max_length",
"message": "email must be shorter than or equal to 75 characters"
}
],
"error": "trial_expired",
"upgrade_url": "https://app.skillsdb.com/settings/billing"
}Create an assessment
A draft cycle: title, description, when manager grades become visible, the population (everyone, or org dimension selections) and the two track deadlines.
Requires scope: assessments:write.
curl --request POST \
--url https://prod.skillsdbnext.com/api/v1/assessments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"title": "Q2 Skills Review",
"description": "Annual proficiency check-in.",
"managerGradesVisibleAt": "immediately",
"allPeople": true,
"scope": {
"businessUnitIds": [
"3"
],
"divisionIds": [
"<string>"
],
"countryIds": [
"<string>"
],
"businessRegionIds": [
"<string>"
],
"cityIds": [
"<string>"
],
"siteIds": [
"<string>"
],
"departmentIds": [
"12",
"15"
],
"teamIds": [
"<string>"
],
"shiftIds": [
"<string>"
]
},
"peopleTypeIds": [
"<string>"
],
"employeeDeadlineAt": "2026-03-31",
"managerDeadlineAt": "2026-04-15"
}
'import requests
url = "https://prod.skillsdbnext.com/api/v1/assessments"
payload = {
"title": "Q2 Skills Review",
"description": "Annual proficiency check-in.",
"managerGradesVisibleAt": "immediately",
"allPeople": True,
"scope": {
"businessUnitIds": ["3"],
"divisionIds": ["<string>"],
"countryIds": ["<string>"],
"businessRegionIds": ["<string>"],
"cityIds": ["<string>"],
"siteIds": ["<string>"],
"departmentIds": ["12", "15"],
"teamIds": ["<string>"],
"shiftIds": ["<string>"]
},
"peopleTypeIds": ["<string>"],
"employeeDeadlineAt": "2026-03-31",
"managerDeadlineAt": "2026-04-15"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
title: 'Q2 Skills Review',
description: 'Annual proficiency check-in.',
managerGradesVisibleAt: 'immediately',
allPeople: true,
scope: {
businessUnitIds: ['3'],
divisionIds: ['<string>'],
countryIds: ['<string>'],
businessRegionIds: ['<string>'],
cityIds: ['<string>'],
siteIds: ['<string>'],
departmentIds: ['12', '15'],
teamIds: ['<string>'],
shiftIds: ['<string>']
},
peopleTypeIds: ['<string>'],
employeeDeadlineAt: '2026-03-31',
managerDeadlineAt: '2026-04-15'
})
};
fetch('https://prod.skillsdbnext.com/api/v1/assessments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://prod.skillsdbnext.com/api/v1/assessments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'title' => 'Q2 Skills Review',
'description' => 'Annual proficiency check-in.',
'managerGradesVisibleAt' => 'immediately',
'allPeople' => true,
'scope' => [
'businessUnitIds' => [
'3'
],
'divisionIds' => [
'<string>'
],
'countryIds' => [
'<string>'
],
'businessRegionIds' => [
'<string>'
],
'cityIds' => [
'<string>'
],
'siteIds' => [
'<string>'
],
'departmentIds' => [
'12',
'15'
],
'teamIds' => [
'<string>'
],
'shiftIds' => [
'<string>'
]
],
'peopleTypeIds' => [
'<string>'
],
'employeeDeadlineAt' => '2026-03-31',
'managerDeadlineAt' => '2026-04-15'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://prod.skillsdbnext.com/api/v1/assessments"
payload := strings.NewReader("{\n \"title\": \"Q2 Skills Review\",\n \"description\": \"Annual proficiency check-in.\",\n \"managerGradesVisibleAt\": \"immediately\",\n \"allPeople\": true,\n \"scope\": {\n \"businessUnitIds\": [\n \"3\"\n ],\n \"divisionIds\": [\n \"<string>\"\n ],\n \"countryIds\": [\n \"<string>\"\n ],\n \"businessRegionIds\": [\n \"<string>\"\n ],\n \"cityIds\": [\n \"<string>\"\n ],\n \"siteIds\": [\n \"<string>\"\n ],\n \"departmentIds\": [\n \"12\",\n \"15\"\n ],\n \"teamIds\": [\n \"<string>\"\n ],\n \"shiftIds\": [\n \"<string>\"\n ]\n },\n \"peopleTypeIds\": [\n \"<string>\"\n ],\n \"employeeDeadlineAt\": \"2026-03-31\",\n \"managerDeadlineAt\": \"2026-04-15\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://prod.skillsdbnext.com/api/v1/assessments")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"Q2 Skills Review\",\n \"description\": \"Annual proficiency check-in.\",\n \"managerGradesVisibleAt\": \"immediately\",\n \"allPeople\": true,\n \"scope\": {\n \"businessUnitIds\": [\n \"3\"\n ],\n \"divisionIds\": [\n \"<string>\"\n ],\n \"countryIds\": [\n \"<string>\"\n ],\n \"businessRegionIds\": [\n \"<string>\"\n ],\n \"cityIds\": [\n \"<string>\"\n ],\n \"siteIds\": [\n \"<string>\"\n ],\n \"departmentIds\": [\n \"12\",\n \"15\"\n ],\n \"teamIds\": [\n \"<string>\"\n ],\n \"shiftIds\": [\n \"<string>\"\n ]\n },\n \"peopleTypeIds\": [\n \"<string>\"\n ],\n \"employeeDeadlineAt\": \"2026-03-31\",\n \"managerDeadlineAt\": \"2026-04-15\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://prod.skillsdbnext.com/api/v1/assessments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"Q2 Skills Review\",\n \"description\": \"Annual proficiency check-in.\",\n \"managerGradesVisibleAt\": \"immediately\",\n \"allPeople\": true,\n \"scope\": {\n \"businessUnitIds\": [\n \"3\"\n ],\n \"divisionIds\": [\n \"<string>\"\n ],\n \"countryIds\": [\n \"<string>\"\n ],\n \"businessRegionIds\": [\n \"<string>\"\n ],\n \"cityIds\": [\n \"<string>\"\n ],\n \"siteIds\": [\n \"<string>\"\n ],\n \"departmentIds\": [\n \"12\",\n \"15\"\n ],\n \"teamIds\": [\n \"<string>\"\n ],\n \"shiftIds\": [\n \"<string>\"\n ]\n },\n \"peopleTypeIds\": [\n \"<string>\"\n ],\n \"employeeDeadlineAt\": \"2026-03-31\",\n \"managerDeadlineAt\": \"2026-04-15\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "42",
"title": "Q2 Skills Review",
"description": "Annual proficiency check-in.",
"status": "draft",
"tracks": {
"employee": {
"status": "active",
"startedAt": "2026-03-01T00:00:00.000Z",
"endedAt": null,
"deadlineAt": "2026-03-31T00:00:00.000Z"
},
"manager": {
"status": "active",
"startedAt": "2026-03-01T00:00:00.000Z",
"endedAt": null,
"deadlineAt": "2026-03-31T00:00:00.000Z"
}
},
"startedAt": "2026-03-01T00:00:00.000Z",
"endedAt": null,
"deadlineAt": null,
"managerGradesVisibleAt": "immediately",
"allPeople": true,
"counts": {
"assigned": 120,
"completed": 40,
"employeesAssigned": 118,
"employeesCompleted": 60,
"managersAssigned": 14,
"managersCompleted": 5
},
"createdAt": "2026-02-20T09:00:00.000Z",
"updatedAt": null,
"scope": {
"allPeople": false,
"businessUnitIds": [
"3"
],
"divisionIds": [],
"countryIds": [],
"businessRegionIds": [],
"cityIds": [],
"siteIds": [],
"departmentIds": [
"12",
"15"
],
"teamIds": [],
"shiftIds": [],
"peopleTypeIds": []
}
}
}{
"type": "https://help.skillsdb.com/api-docs/errors/validation-error",
"title": "Validation failed",
"status": 400,
"detail": "limit must be between 1 and 200",
"instance": "/api/v1/people",
"requestId": "0192c2f1-6f4e-7ab3-b1c4-5f6a7b8c9d0e",
"errors": [
{
"field": "email",
"code": "max_length",
"message": "email must be shorter than or equal to 75 characters"
}
],
"error": "trial_expired",
"upgrade_url": "https://app.skillsdb.com/settings/billing"
}{
"type": "https://help.skillsdb.com/api-docs/errors/validation-error",
"title": "Validation failed",
"status": 400,
"detail": "limit must be between 1 and 200",
"instance": "/api/v1/people",
"requestId": "0192c2f1-6f4e-7ab3-b1c4-5f6a7b8c9d0e",
"errors": [
{
"field": "email",
"code": "max_length",
"message": "email must be shorter than or equal to 75 characters"
}
],
"error": "trial_expired",
"upgrade_url": "https://app.skillsdb.com/settings/billing"
}{
"type": "https://help.skillsdb.com/api-docs/errors/validation-error",
"title": "Validation failed",
"status": 400,
"detail": "limit must be between 1 and 200",
"instance": "/api/v1/people",
"requestId": "0192c2f1-6f4e-7ab3-b1c4-5f6a7b8c9d0e",
"errors": [
{
"field": "email",
"code": "max_length",
"message": "email must be shorter than or equal to 75 characters"
}
],
"error": "trial_expired",
"upgrade_url": "https://app.skillsdb.com/settings/billing"
}{
"type": "https://help.skillsdb.com/api-docs/errors/validation-error",
"title": "Validation failed",
"status": 400,
"detail": "limit must be between 1 and 200",
"instance": "/api/v1/people",
"requestId": "0192c2f1-6f4e-7ab3-b1c4-5f6a7b8c9d0e",
"errors": [
{
"field": "email",
"code": "max_length",
"message": "email must be shorter than or equal to 75 characters"
}
],
"error": "trial_expired",
"upgrade_url": "https://app.skillsdb.com/settings/billing"
}{
"type": "https://help.skillsdb.com/api-docs/errors/validation-error",
"title": "Validation failed",
"status": 400,
"detail": "limit must be between 1 and 200",
"instance": "/api/v1/people",
"requestId": "0192c2f1-6f4e-7ab3-b1c4-5f6a7b8c9d0e",
"errors": [
{
"field": "email",
"code": "max_length",
"message": "email must be shorter than or equal to 75 characters"
}
],
"error": "trial_expired",
"upgrade_url": "https://app.skillsdb.com/settings/billing"
}{
"type": "https://help.skillsdb.com/api-docs/errors/validation-error",
"title": "Validation failed",
"status": 400,
"detail": "limit must be between 1 and 200",
"instance": "/api/v1/people",
"requestId": "0192c2f1-6f4e-7ab3-b1c4-5f6a7b8c9d0e",
"errors": [
{
"field": "email",
"code": "max_length",
"message": "email must be shorter than or equal to 75 characters"
}
],
"error": "trial_expired",
"upgrade_url": "https://app.skillsdb.com/settings/billing"
}{
"type": "https://help.skillsdb.com/api-docs/errors/validation-error",
"title": "Validation failed",
"status": 400,
"detail": "limit must be between 1 and 200",
"instance": "/api/v1/people",
"requestId": "0192c2f1-6f4e-7ab3-b1c4-5f6a7b8c9d0e",
"errors": [
{
"field": "email",
"code": "max_length",
"message": "email must be shorter than or equal to 75 characters"
}
],
"error": "trial_expired",
"upgrade_url": "https://app.skillsdb.com/settings/billing"
}Authorizations
An API key issued by a company administrator — an environment prefix (production: sdb_live_) followed by 32 characters. The prefix identifies the environment and MUST NOT be hard-coded or validated by clients; treat the whole key as opaque. Shown exactly once at creation; only a one-way hash is stored.
Scopes (granted per key on the create screen; :write never implies :read):
skills:readskills:writepeople:readpeople:writecareers:readcareers:writetraining:readtraining:writeflags:readflags:writeorg:readorg:writeassessments:readlearning:readlearning:writecertifications:readcertifications:writeassessments:writeproficiency:readproficiency:writesurveys:readsurveys:writelabels:readlabels:write
Headers
Any unique string (at most 200 characters). Retrying with the same key and identical content replays the stored response for 24h instead of executing twice.
200Body
500"Q2 Skills Review"
4000"Annual proficiency check-in."
immediately, after_employee_assessment, after_manager_assessment, after_assessment_ended Target everyone. Defaults to true when no scope is given.
true
Population selections; ignored when allPeople is true.
Show child attributes
Show child attributes
People type ids to include.
Employee track deadline (ISO 8601).
"2026-03-31"
Manager track deadline (ISO 8601).
"2026-04-15"
Response
The created resource, enveloped.
Show child attributes
Show child attributes