SkillPanel API (3.0.0)

Download OpenAPI specification:

SkillPanel API Support: support@skillpanel.com

API key authentication

Our API employs API key authentication to secure access to endpoints. This authentication mechanism requires clients to include an API key in the header of their HTTP requests.

Obtaining an API key

To obtain an API key, please follow these steps:

  1. Contact support: Send an email to support@skillpanel.com requesting an API key. Please include the following information:

    • your organization or company name,
    • contact information for your technical team (if applicable).
  2. Our support team will generate a unique API key for your organization and provide it to you securely.

Using the API key

Once you have obtained your API key, you can use it to authenticate your requests to our API. Follow these guidelines to include the API key in your requests:

  • Header parameter name: X-API-KEY
  • Example request:
    GET /boost/v3/people HTTP/1.1
    Host: api.skillpanel.com
    X-API-KEY: your-api-key-here
    
    Replace your-api-key-here with the API key provided to you by our support team.

Security considerations

  • Keep your API key secure: treat your API key as you would any other sensitive credential. Do not share it publicly or expose it in client-side code.
  • Rotate your API key: for security purposes, consider rotating your API key periodically, especially if you suspect it has been compromised.

For further assistance or inquiries regarding API key authentication, please contact our support team at support@skillpanel.com.

People

Search people

Authorizations:
ApiKeyAuth
query Parameters
after
string
Example: after=MzjpdfWsbzJPETbGk3GmGarPe6e93QJhuSHc8lo3NDo

Cursor for pagination

email
string
Example: email=john.smith@skillpanel.com

E-mail address of the person

customId
string
Example: customId=18382

Customer provided ID of the person

Responses

Response samples

Content type
application/json
{
  • "next": "MzjpdfWsbzJPETbGk3GmGarPe6e93QJhuSHc8lo3NDo",
  • "content": [
    ]
}

Get a person by ID

Authorizations:
ApiKeyAuth
path Parameters
personId
required
string

ID of the person to get

Responses

Response samples

Content type
application/json
{
  • "id": "3rzOhn61E7Zo98KEZTRWXA",
  • "email": "john.smith@skillpanel.com",
  • "firstName": "John",
  • "lastName": "Smith",
  • "customId": "18382",
  • "jobPositionId": "5ixodYgXVkm4Yc09mzGvvR",
  • "teams": [
    ],
  • "onboarding": {
    },
  • "accountEnabled": true
}

Patch a person by ID

Authorizations:
ApiKeyAuth
path Parameters
personId
required
string

ID of the person to be patched

Request Body schema: application/merge-patch+json
required
firstName
string or null

The person's first name

lastName
string or null

The person's last name

jobPositionId
string or null

The person's job position ID

teams
Array of strings

The person's teams

Responses

Request samples

Content type
application/merge-patch+json
{
  • "firstName": "Ann",
  • "jobPositionId": null
}

Response samples

Content type
application/json
{
  • "id": "3rzOhn61E7Zo98KEZTRWXA",
  • "email": "john.smith@skillpanel.com",
  • "firstName": "John",
  • "lastName": "Smith",
  • "customId": "18382",
  • "jobPositionId": "5ixodYgXVkm4Yc09mzGvvR",
  • "teams": [
    ],
  • "onboarding": {
    },
  • "accountEnabled": true
}

Delete a person by ID

Authorizations:
ApiKeyAuth
path Parameters
personId
required
string

ID of the person to be deleted

Responses

Update person's teams

Authorizations:
ApiKeyAuth
path Parameters
personId
required
string

ID of the person to update teams

Request Body schema: application/json
required

Teams information to be updated

teamIds
required
Array of strings

List of team identifiers

Responses

Request samples

Content type
application/json
{
  • "teamIds": [
    ]
}

Response samples

Content type
application/json
{
  • "message": "Resource [597hqzYRAGOrFFFyFmxSZP] of type [PERSON] does not exist",
  • "errorType": "RESOURCE_NOT_FOUND",
  • "resourceId": "597hqzYRAGOrFFFyFmxSZP",
  • "resourceType": "PERSON"
}

Get person's skills

Authorizations:
ApiKeyAuth
path Parameters
personId
required
string
Example: 3rzOhn61E7Zo98KEZTRWXA

ID of the person whose skills are to be retrieved

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get person's custom fields

Authorizations:
ApiKeyAuth
path Parameters
personId
required
string

ID of the person to get custom fields

Responses

Response samples

Content type
application/json
{
  • "someInteger": 123,
  • "someText": "Lorem ipsum"
}

Patch person's custom fields

Authorizations:
ApiKeyAuth
path Parameters
personId
required
string

ID of the person to patch custom fields

Request Body schema: application/merge-patch+json
required

Custom fields to be merged

additional property
(string or null) or (integer or null)

Responses

Request samples

Content type
application/merge-patch+json
{
  • "someFieldToRemove": null,
  • "someInteger": 123,
  • "someText": "Lorem ipsum"
}

Response samples

Content type
application/json
{
  • "message": "Resource [597hqzYRAGOrFFFyFmxSZP] of type [PERSON] does not exist",
  • "errorType": "RESOURCE_NOT_FOUND",
  • "resourceId": "597hqzYRAGOrFFFyFmxSZP",
  • "resourceType": "PERSON"
}

Get roles for a person by ID

Authorizations:
ApiKeyAuth
path Parameters
personId
required
string

ID of the person to get roles for

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get aggregated person data by ID

Authorizations:
ApiKeyAuth
path Parameters
personId
required
string
Example: 3rzOhn61E7Zo98KEZTRWXA

ID of the person

query Parameters
sections
Array of strings
Items Enum: "core" "teams" "roles" "tags" "customFields" "onboarding" "jobPosition" "skills" "timeline" "pluginData" "goals"

Comma-separated list of data sections to include. If omitted, only the core section is returned. Valid values: core, teams, roles, tags, customFields, onboarding, jobPosition, skills, timeline, pluginData, goals

Responses

Response samples

Content type
application/json
{
  • "id": "3rzOhn61E7Zo98KEZTRWXA",
  • "core": {
    },
  • "teams": [
    ],
  • "roles": [
    ],
  • "tags": [
    ],
  • "customFields": { },
  • "onboarding": {
    },
  • "jobPosition": {
    },
  • "skills": [
    ],
  • "timeline": [
    ],
  • "pluginData": [
    ],
  • "goals": [
    ]
}

Invitations

Create an invitation

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
email
required
string

E-mail address of the person to invite

teamId
required
string

ID of the team the person belongs to

jobPositionId
string or null

ID of the job position

firstName
string or null

First name of the person

lastName
string or null

Last name of the person

customId
string or null

Custom ID provided by the customer

sendNotification
boolean
Default: true

Indicates whether to send a notification

additionalJobPositionIds
Array of strings or null

Additional job position IDs

Responses

Request samples

Content type
application/json
{
  • "email": "john.smith@skillpanel.com",
  • "teamId": "5ixodYgXVkm4Yc09mzGvvR",
  • "jobPositionId": "2tnS87nbomps1GBWHqN2Wg",
  • "firstName": "John",
  • "lastName": "Smith",
  • "customId": "18382",
  • "sendNotification": true,
  • "additionalJobPositionIds": [
    ]
}

Response samples

Content type
application/json
{
  • "message": "E-mail address [john.smith@skillpanel.com] already exists",
  • "errorType": "EMAIL_ALREADY_EXISTS",
  • "email": "john.smith@skillpanel.com"
}

Teams

Search teams

Authorizations:
ApiKeyAuth
query Parameters
after
string
Example: after=MzjpdfWsbzJPETbGk3GmGarPe6e93QJhuSHc8lo3NDo

Cursor for pagination

supervisorId
string
Example: supervisorId=7Qy2WC7yLotpvTOjywooLr

ID of the team's supervisor

customId
string
Example: customId=xyz123

Customer provided ID of the team

Responses

Response samples

Content type
application/json
{
  • "next": "MzjpdfWsbzJPETbGk3GmGarPe6e93QJhuSHc8lo3NDo",
  • "content": [
    ]
}

Create a team

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
name
required
string
parentTeamId
string or null
color
string or null
supervisorId
string or null
customId
string or null

The customer provided ID of the team

Responses

Request samples

Content type
application/json
{
  • "name": "Development Team",
  • "parentTeamId": "3Q03LTA4e2WOBJn3Q9YsmT",
  • "color": "#FFA500",
  • "supervisorId": "3GgasUsfv0FVyoTuILi2X6",
  • "customId": "DEV123"
}

Response samples

Content type
application/json
{
  • "id": "3VJrxKAy8F3MD5AOQpbiAK",
  • "name": "Development Team",
  • "parentTeamId": "3Q03LTA4e2WOBJn3Q9YsmT",
  • "color": "#FFA500",
  • "businessUnit": true,
  • "supervisorId": "3GgasUsfv0FVyoTuILi2X6",
  • "customId": "DEV123"
}

Get a team by ID

Authorizations:
ApiKeyAuth
path Parameters
teamId
required
string

ID of the team to get

Responses

Response samples

Content type
application/json
{
  • "id": "3VJrxKAy8F3MD5AOQpbiAK",
  • "name": "Development Team",
  • "parentTeamId": "3Q03LTA4e2WOBJn3Q9YsmT",
  • "color": "#FFA500",
  • "businessUnit": true,
  • "supervisorId": "3GgasUsfv0FVyoTuILi2X6",
  • "customId": "DEV123"
}

Update a team

Authorizations:
ApiKeyAuth
path Parameters
teamId
required
string

ID of the team to update

Request Body schema: application/json
required
name
required
string
parentTeamId
string or null
color
string or null
supervisorId
string or null
customId
string or null

The customer provided ID of the team

Responses

Request samples

Content type
application/json
{
  • "name": "Development Team",
  • "parentTeamId": "3Q03LTA4e2WOBJn3Q9YsmT",
  • "color": "#FFA500",
  • "supervisorId": "3GgasUsfv0FVyoTuILi2X6",
  • "customId": "DEV123"
}

Response samples

Content type
application/json
{
  • "id": "3VJrxKAy8F3MD5AOQpbiAK",
  • "name": "Development Team",
  • "parentTeamId": "3Q03LTA4e2WOBJn3Q9YsmT",
  • "color": "#FFA500",
  • "businessUnit": true,
  • "supervisorId": "3GgasUsfv0FVyoTuILi2X6",
  • "customId": "DEV123"
}

Delete a team

Authorizations:
ApiKeyAuth
path Parameters
teamId
required
string

ID of the team to delete

Responses

Skills

Search skills

Authorizations:
ApiKeyAuth
query Parameters
after
string
Example: after=MzjpdfWsbzJPETbGk3GmGarPe6e93QJhuSHc8lo3NDo

Cursor for pagination

includeDisabled
boolean
Default: false

Whether to include disabled skills

includeHidden
boolean
Default: false

Whether to include hidden skills

Responses

Response samples

Content type
application/json
{
  • "next": "MzjpdfWsbzJPETbGk3GmGarPe6e93QJhuSHc8lo3NDo",
  • "content": [
    ]
}

Get a skill by ID

Authorizations:
ApiKeyAuth
path Parameters
skillId
required
string

ID of the skill to get

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "description": "string",
  • "folderId": "string",
  • "recommendedToLearn": true,
  • "hidden": true,
  • "disabled": true,
  • "global": true,
  • "relationsToSkills": [
    ],
  • "relationsToFolders": [
    ]
}

Skill folders

Search skill folders

Authorizations:
ApiKeyAuth
query Parameters
after
string
Example: after=MzjpdfWsbzJPETbGk3GmGarPe6e93QJhuSHc8lo3NDo

Cursor for pagination

includeHidden
boolean
Default: false

Whether to include disabled skill folders

includeDisabled
boolean
Default: false

Whether to include hidden skill folders

Responses

Response samples

Content type
application/json
{
  • "next": "MzjpdfWsbzJPETbGk3GmGarPe6e93QJhuSHc8lo3NDo",
  • "content": [
    ]
}

Get a skill folder by ID

Authorizations:
ApiKeyAuth
path Parameters
folderId
required
string

ID of the skill folder to get

Responses

Response samples

Content type
application/json
{
  • "id": "1LWedQwy9dtGLYzepZnLHx",
  • "name": "Java",
  • "level": "GROUP",
  • "parentId": "4wu7znJxPgtGJu8n3xQYcq",
  • "hidden": false,
  • "disabled": false,
  • "global": true
}

Skillsets

List active skillsets

Authorizations:
ApiKeyAuth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Position families

List position families

Authorizations:
ApiKeyAuth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Seniority levels

List seniority levels

Authorizations:
ApiKeyAuth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Certificates

Certificate data served by the certificates-hub plugin through the public API proxy.

List a person's certificates

Returns all certificates held by a person, including the certificate name and issuing organization. Served by the certificates-hub plugin through the public API proxy. Dates are returned as Unix epoch milliseconds.

Authorizations:
ApiKeyAuth
path Parameters
personId
required
string
Example: 4kwrBaCMEFUjEK9MzVYepR

ID of the person

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Search certificate definitions

Returns the dictionary of certificate definitions (the certificate catalog). Served by the certificates-hub plugin through the public API proxy. Results are cursor-paginated.

Authorizations:
ApiKeyAuth
query Parameters
after
string
Example: after=MzjpdfWsbzJPETbGk3GmGarPe6e93QJhuSHc8lo3NDo

Cursor for pagination

searchText
string

Case-insensitive match on certificate name, acronym, or organization name

organizationId
string

Filter by issuing organization ID

isActive
string
Default: "true"
Enum: "true" "false" "all"

Filter by active state. Defaults to active definitions only; false returns inactive only, all disables the filter.

limit
integer <= 1000
Default: 100

Page size (maximum 1000)

Responses

Response samples

Content type
application/json
{
  • "next": "MzjpdfWsbzJPETbGk3GmGarPe6e93QJhuSHc8lo3NDo",
  • "content": [
    ],
  • "totalCount": 2443
}

Get a certificate definition by ID

Returns a single certificate definition by its ID. Served by the certificates-hub plugin through the public API proxy.

Authorizations:
ApiKeyAuth
path Parameters
id
required
string
Example: 7eMvZmDL8jczUaE8VL3BMg

ID of the certificate definition

Responses

Response samples

Content type
application/json
{
  • "id": "7eMvZmDL8jczUaE8VL3BMg",
  • "name": "AWS Certified Solutions Architect",
  • "acronym": "string",
  • "description": "string",
  • "websiteUrl": "string",
  • "defaultValidityPeriod": 0,
  • "isActive": true,
  • "organization": {
    }
}

Job positions

Search job positions

Authorizations:
ApiKeyAuth
query Parameters
after
string
Example: after=MzjpdfWsbzJPETbGk3GmGarPe6e93QJhuSHc8lo3NDo

Cursor for pagination

Responses

Response samples

Content type
application/json
{
  • "next": "MzjpdfWsbzJPETbGk3GmGarPe6e93QJhuSHc8lo3NDo",
  • "content": [
    ]
}

Create a job position

Authorizations:
ApiKeyAuth
Request Body schema: application/json
required
name
required
string

The name of the job position (the default translation)

description
string or null

The description of the job position

abstract
boolean
Default: false

Whether the job position is abstract (can't be directly assigned to a person)

defaultSkillsetMasteryLevel
integer or null [ 0 .. 100 ]

The default mastery level applied to assigned skillsets without an explicit level

family
string or null

The ID of the position family (see GET /positionFamilies)

seniority
string or null

The ID of the seniority level (see GET /seniorityLevels)

Array of objects (JobPositionCreateSkillset)

Skillsets to assign (see GET /skillsets)

feeders
Array of strings unique

IDs of job positions to set as feeders

Responses

Request samples

Content type
application/json
{
  • "name": "Senior Backend Developer",
  • "description": "Leads backend work",
  • "abstract": false,
  • "defaultSkillsetMasteryLevel": 80,
  • "family": "6yT2rN8xQ1aLpZ0bV3cD4e",
  • "seniority": "SLlCEStpg47BkQnC6tMNZ",
  • "skillsets": [
    ],
  • "feeders": [
    ]
}

Response samples

Content type
application/json
{
  • "id": "5kfEmtHyEwWii9GV6UjI6V",
  • "name": "Junior Java Developer",
  • "description": "Develops in Java. Who would've thought?",
  • "abstract": true,
  • "defaultSkillsetMasteryLevel": 30,
  • "feeders": [
    ],
  • "translations": {
    },
  • "skillsets": [
    ],
  • "family": "6yT2rN8xQ1aLpZ0bV3cD4e",
  • "seniority": "SLlCEStpg47BkQnC6tMNZ"
}

Get a job position by ID

Authorizations:
ApiKeyAuth
path Parameters
jobPositionId
required
string
Example: 5kfEmtHyEwWii9GV6UjI6V

ID of the job position to get

Responses

Response samples

Content type
application/json
{
  • "id": "5kfEmtHyEwWii9GV6UjI6V",
  • "name": "Junior Java Developer",
  • "description": "Develops in Java. Who would've thought?",
  • "abstract": true,
  • "defaultSkillsetMasteryLevel": 30,
  • "feeders": [
    ],
  • "translations": {
    },
  • "skillsets": [
    ],
  • "family": "6yT2rN8xQ1aLpZ0bV3cD4e",
  • "seniority": "SLlCEStpg47BkQnC6tMNZ"
}