curl --request POST \
--url https://prod.skillsdbnext.com/api/v1/surveys \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Q3 onboarding pulse",
"templateVersionId": "88",
"toAllPeople": false,
"businessUnitIds": [
"<string>"
],
"divisionIds": [
"<string>"
],
"countryIds": [
"<string>"
],
"businessRegionIds": [
"<string>"
],
"cityIds": [
"<string>"
],
"siteIds": [
"<string>"
],
"departmentIds": [
"<string>"
],
"teamIds": [
"<string>"
],
"shiftIds": [
"<string>"
],
"people": [
"<string>"
],
"description": "Sent to everyone who joined this quarter.",
"dueDate": "2026-07-31T00:00:00.000Z",
"scheduledFor": "2026-07-01T08:00:00.000Z"
}
'import requests
url = "https://prod.skillsdbnext.com/api/v1/surveys"
payload = {
"name": "Q3 onboarding pulse",
"templateVersionId": "88",
"toAllPeople": False,
"businessUnitIds": ["<string>"],
"divisionIds": ["<string>"],
"countryIds": ["<string>"],
"businessRegionIds": ["<string>"],
"cityIds": ["<string>"],
"siteIds": ["<string>"],
"departmentIds": ["<string>"],
"teamIds": ["<string>"],
"shiftIds": ["<string>"],
"people": ["<string>"],
"description": "Sent to everyone who joined this quarter.",
"dueDate": "2026-07-31T00:00:00.000Z",
"scheduledFor": "2026-07-01T08:00:00.000Z"
}
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({
name: 'Q3 onboarding pulse',
templateVersionId: '88',
toAllPeople: false,
businessUnitIds: ['<string>'],
divisionIds: ['<string>'],
countryIds: ['<string>'],
businessRegionIds: ['<string>'],
cityIds: ['<string>'],
siteIds: ['<string>'],
departmentIds: ['<string>'],
teamIds: ['<string>'],
shiftIds: ['<string>'],
people: ['<string>'],
description: 'Sent to everyone who joined this quarter.',
dueDate: '2026-07-31T00:00:00.000Z',
scheduledFor: '2026-07-01T08:00:00.000Z'
})
};
fetch('https://prod.skillsdbnext.com/api/v1/surveys', 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/surveys",
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([
'name' => 'Q3 onboarding pulse',
'templateVersionId' => '88',
'toAllPeople' => false,
'businessUnitIds' => [
'<string>'
],
'divisionIds' => [
'<string>'
],
'countryIds' => [
'<string>'
],
'businessRegionIds' => [
'<string>'
],
'cityIds' => [
'<string>'
],
'siteIds' => [
'<string>'
],
'departmentIds' => [
'<string>'
],
'teamIds' => [
'<string>'
],
'shiftIds' => [
'<string>'
],
'people' => [
'<string>'
],
'description' => 'Sent to everyone who joined this quarter.',
'dueDate' => '2026-07-31T00:00:00.000Z',
'scheduledFor' => '2026-07-01T08:00:00.000Z'
]),
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/surveys"
payload := strings.NewReader("{\n \"name\": \"Q3 onboarding pulse\",\n \"templateVersionId\": \"88\",\n \"toAllPeople\": false,\n \"businessUnitIds\": [\n \"<string>\"\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 \"<string>\"\n ],\n \"teamIds\": [\n \"<string>\"\n ],\n \"shiftIds\": [\n \"<string>\"\n ],\n \"people\": [\n \"<string>\"\n ],\n \"description\": \"Sent to everyone who joined this quarter.\",\n \"dueDate\": \"2026-07-31T00:00:00.000Z\",\n \"scheduledFor\": \"2026-07-01T08:00:00.000Z\"\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/surveys")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Q3 onboarding pulse\",\n \"templateVersionId\": \"88\",\n \"toAllPeople\": false,\n \"businessUnitIds\": [\n \"<string>\"\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 \"<string>\"\n ],\n \"teamIds\": [\n \"<string>\"\n ],\n \"shiftIds\": [\n \"<string>\"\n ],\n \"people\": [\n \"<string>\"\n ],\n \"description\": \"Sent to everyone who joined this quarter.\",\n \"dueDate\": \"2026-07-31T00:00:00.000Z\",\n \"scheduledFor\": \"2026-07-01T08:00:00.000Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://prod.skillsdbnext.com/api/v1/surveys")
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 \"name\": \"Q3 onboarding pulse\",\n \"templateVersionId\": \"88\",\n \"toAllPeople\": false,\n \"businessUnitIds\": [\n \"<string>\"\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 \"<string>\"\n ],\n \"teamIds\": [\n \"<string>\"\n ],\n \"shiftIds\": [\n \"<string>\"\n ],\n \"people\": [\n \"<string>\"\n ],\n \"description\": \"Sent to everyone who joined this quarter.\",\n \"dueDate\": \"2026-07-31T00:00:00.000Z\",\n \"scheduledFor\": \"2026-07-01T08:00:00.000Z\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "301",
"name": "Q3 onboarding pulse",
"description": null,
"status": "launched",
"templateVersion": {
"id": "88",
"name": "Onboarding pulse",
"version": "2.1",
"templateId": "12",
"templateName": "Onboarding pulse"
},
"toAllPeople": true,
"scheduledFor": null,
"launchedAt": "2026-07-01T08:00:00.000Z",
"dueDate": "2026-07-31T00:00:00.000Z",
"lastNudgeSentAt": null,
"participants": {
"notStarted": 40,
"inProgress": 12,
"completed": 25
},
"createdById": "1042",
"createdAt": "2026-06-20T09:00:00.000Z",
"updatedAt": null
}
}{
"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 a survey
A draft (or, with scheduledFor, a scheduled run) pointing at an existing template version. Without any scope selection the survey targets everyone.
Requires scope: surveys:write.
curl --request POST \
--url https://prod.skillsdbnext.com/api/v1/surveys \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Q3 onboarding pulse",
"templateVersionId": "88",
"toAllPeople": false,
"businessUnitIds": [
"<string>"
],
"divisionIds": [
"<string>"
],
"countryIds": [
"<string>"
],
"businessRegionIds": [
"<string>"
],
"cityIds": [
"<string>"
],
"siteIds": [
"<string>"
],
"departmentIds": [
"<string>"
],
"teamIds": [
"<string>"
],
"shiftIds": [
"<string>"
],
"people": [
"<string>"
],
"description": "Sent to everyone who joined this quarter.",
"dueDate": "2026-07-31T00:00:00.000Z",
"scheduledFor": "2026-07-01T08:00:00.000Z"
}
'import requests
url = "https://prod.skillsdbnext.com/api/v1/surveys"
payload = {
"name": "Q3 onboarding pulse",
"templateVersionId": "88",
"toAllPeople": False,
"businessUnitIds": ["<string>"],
"divisionIds": ["<string>"],
"countryIds": ["<string>"],
"businessRegionIds": ["<string>"],
"cityIds": ["<string>"],
"siteIds": ["<string>"],
"departmentIds": ["<string>"],
"teamIds": ["<string>"],
"shiftIds": ["<string>"],
"people": ["<string>"],
"description": "Sent to everyone who joined this quarter.",
"dueDate": "2026-07-31T00:00:00.000Z",
"scheduledFor": "2026-07-01T08:00:00.000Z"
}
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({
name: 'Q3 onboarding pulse',
templateVersionId: '88',
toAllPeople: false,
businessUnitIds: ['<string>'],
divisionIds: ['<string>'],
countryIds: ['<string>'],
businessRegionIds: ['<string>'],
cityIds: ['<string>'],
siteIds: ['<string>'],
departmentIds: ['<string>'],
teamIds: ['<string>'],
shiftIds: ['<string>'],
people: ['<string>'],
description: 'Sent to everyone who joined this quarter.',
dueDate: '2026-07-31T00:00:00.000Z',
scheduledFor: '2026-07-01T08:00:00.000Z'
})
};
fetch('https://prod.skillsdbnext.com/api/v1/surveys', 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/surveys",
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([
'name' => 'Q3 onboarding pulse',
'templateVersionId' => '88',
'toAllPeople' => false,
'businessUnitIds' => [
'<string>'
],
'divisionIds' => [
'<string>'
],
'countryIds' => [
'<string>'
],
'businessRegionIds' => [
'<string>'
],
'cityIds' => [
'<string>'
],
'siteIds' => [
'<string>'
],
'departmentIds' => [
'<string>'
],
'teamIds' => [
'<string>'
],
'shiftIds' => [
'<string>'
],
'people' => [
'<string>'
],
'description' => 'Sent to everyone who joined this quarter.',
'dueDate' => '2026-07-31T00:00:00.000Z',
'scheduledFor' => '2026-07-01T08:00:00.000Z'
]),
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/surveys"
payload := strings.NewReader("{\n \"name\": \"Q3 onboarding pulse\",\n \"templateVersionId\": \"88\",\n \"toAllPeople\": false,\n \"businessUnitIds\": [\n \"<string>\"\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 \"<string>\"\n ],\n \"teamIds\": [\n \"<string>\"\n ],\n \"shiftIds\": [\n \"<string>\"\n ],\n \"people\": [\n \"<string>\"\n ],\n \"description\": \"Sent to everyone who joined this quarter.\",\n \"dueDate\": \"2026-07-31T00:00:00.000Z\",\n \"scheduledFor\": \"2026-07-01T08:00:00.000Z\"\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/surveys")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Q3 onboarding pulse\",\n \"templateVersionId\": \"88\",\n \"toAllPeople\": false,\n \"businessUnitIds\": [\n \"<string>\"\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 \"<string>\"\n ],\n \"teamIds\": [\n \"<string>\"\n ],\n \"shiftIds\": [\n \"<string>\"\n ],\n \"people\": [\n \"<string>\"\n ],\n \"description\": \"Sent to everyone who joined this quarter.\",\n \"dueDate\": \"2026-07-31T00:00:00.000Z\",\n \"scheduledFor\": \"2026-07-01T08:00:00.000Z\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://prod.skillsdbnext.com/api/v1/surveys")
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 \"name\": \"Q3 onboarding pulse\",\n \"templateVersionId\": \"88\",\n \"toAllPeople\": false,\n \"businessUnitIds\": [\n \"<string>\"\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 \"<string>\"\n ],\n \"teamIds\": [\n \"<string>\"\n ],\n \"shiftIds\": [\n \"<string>\"\n ],\n \"people\": [\n \"<string>\"\n ],\n \"description\": \"Sent to everyone who joined this quarter.\",\n \"dueDate\": \"2026-07-31T00:00:00.000Z\",\n \"scheduledFor\": \"2026-07-01T08:00:00.000Z\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "301",
"name": "Q3 onboarding pulse",
"description": null,
"status": "launched",
"templateVersion": {
"id": "88",
"name": "Onboarding pulse",
"version": "2.1",
"templateId": "12",
"templateName": "Onboarding pulse"
},
"toAllPeople": true,
"scheduledFor": null,
"launchedAt": "2026-07-01T08:00:00.000Z",
"dueDate": "2026-07-31T00:00:00.000Z",
"lastNudgeSentAt": null,
"participants": {
"notStarted": 40,
"inProgress": 12,
"completed": 25
},
"createdById": "1042",
"createdAt": "2026-06-20T09:00:00.000Z",
"updatedAt": null
}
}{
"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
255"Q3 onboarding pulse"
A survey template version of the company. Authoring templates is not part of the API.
"88"
When true the selections below are ignored and everyone is targeted.
false
People to include by name — emails or ids.
2000"Sent to everyone who joined this quarter."
"2026-07-31T00:00:00.000Z"
A future launch time; the survey is created as scheduled.
"2026-07-01T08:00:00.000Z"
Response
The created resource, enveloped.
Show child attributes
Show child attributes