Upsert skills
curl --request POST \
--url https://api.kombo.dev/v1/hris/skills/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Integration-Id: <x-integration-id>' \
--data '
{
"items": [
{
"origin_id": "skill-1",
"name": "TypeScript Programming"
},
{
"origin_id": "skill-2",
"name": "Kubernetes"
}
]
}
'import requests
url = "https://api.kombo.dev/v1/hris/skills/bulk"
payload = { "items": [
{
"origin_id": "skill-1",
"name": "TypeScript Programming"
},
{
"origin_id": "skill-2",
"name": "Kubernetes"
}
] }
headers = {
"X-Integration-Id": "<x-integration-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Integration-Id': '<x-integration-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
items: [
{origin_id: 'skill-1', name: 'TypeScript Programming'},
{origin_id: 'skill-2', name: 'Kubernetes'}
]
})
};
fetch('https://api.kombo.dev/v1/hris/skills/bulk', 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://api.kombo.dev/v1/hris/skills/bulk",
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([
'items' => [
[
'origin_id' => 'skill-1',
'name' => 'TypeScript Programming'
],
[
'origin_id' => 'skill-2',
'name' => 'Kubernetes'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"X-Integration-Id: <x-integration-id>"
],
]);
$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://api.kombo.dev/v1/hris/skills/bulk"
payload := strings.NewReader("{\n \"items\": [\n {\n \"origin_id\": \"skill-1\",\n \"name\": \"TypeScript Programming\"\n },\n {\n \"origin_id\": \"skill-2\",\n \"name\": \"Kubernetes\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Integration-Id", "<x-integration-id>")
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://api.kombo.dev/v1/hris/skills/bulk")
.header("X-Integration-Id", "<x-integration-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"items\": [\n {\n \"origin_id\": \"skill-1\",\n \"name\": \"TypeScript Programming\"\n },\n {\n \"origin_id\": \"skill-2\",\n \"name\": \"Kubernetes\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kombo.dev/v1/hris/skills/bulk")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Integration-Id"] = '<x-integration-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"items\": [\n {\n \"origin_id\": \"skill-1\",\n \"name\": \"TypeScript Programming\"\n },\n {\n \"origin_id\": \"skill-2\",\n \"name\": \"Kubernetes\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"task_id": "task_28KMdr68N8kG9EzLwjsN9aoz"
}
}Skills
Upsert skills
Upsert skills
POST
/
hris
/
skills
/
bulk
Upsert skills
curl --request POST \
--url https://api.kombo.dev/v1/hris/skills/bulk \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Integration-Id: <x-integration-id>' \
--data '
{
"items": [
{
"origin_id": "skill-1",
"name": "TypeScript Programming"
},
{
"origin_id": "skill-2",
"name": "Kubernetes"
}
]
}
'import requests
url = "https://api.kombo.dev/v1/hris/skills/bulk"
payload = { "items": [
{
"origin_id": "skill-1",
"name": "TypeScript Programming"
},
{
"origin_id": "skill-2",
"name": "Kubernetes"
}
] }
headers = {
"X-Integration-Id": "<x-integration-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Integration-Id': '<x-integration-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
items: [
{origin_id: 'skill-1', name: 'TypeScript Programming'},
{origin_id: 'skill-2', name: 'Kubernetes'}
]
})
};
fetch('https://api.kombo.dev/v1/hris/skills/bulk', 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://api.kombo.dev/v1/hris/skills/bulk",
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([
'items' => [
[
'origin_id' => 'skill-1',
'name' => 'TypeScript Programming'
],
[
'origin_id' => 'skill-2',
'name' => 'Kubernetes'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"X-Integration-Id: <x-integration-id>"
],
]);
$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://api.kombo.dev/v1/hris/skills/bulk"
payload := strings.NewReader("{\n \"items\": [\n {\n \"origin_id\": \"skill-1\",\n \"name\": \"TypeScript Programming\"\n },\n {\n \"origin_id\": \"skill-2\",\n \"name\": \"Kubernetes\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Integration-Id", "<x-integration-id>")
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://api.kombo.dev/v1/hris/skills/bulk")
.header("X-Integration-Id", "<x-integration-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"items\": [\n {\n \"origin_id\": \"skill-1\",\n \"name\": \"TypeScript Programming\"\n },\n {\n \"origin_id\": \"skill-2\",\n \"name\": \"Kubernetes\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kombo.dev/v1/hris/skills/bulk")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Integration-Id"] = '<x-integration-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"items\": [\n {\n \"origin_id\": \"skill-1\",\n \"name\": \"TypeScript Programming\"\n },\n {\n \"origin_id\": \"skill-2\",\n \"name\": \"Kubernetes\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"status": "success",
"data": {
"task_id": "task_28KMdr68N8kG9EzLwjsN9aoz"
}
}Closed Beta Feature: This endpoint is currently in closed beta. We’re testing it with selected customers before its public release. If you’re interested in learning more or getting early access, please reach out.
origin_id – re-sending the same origin_id updates that skill, a new one creates it.
Note: This endpoint is asynchronous – it returns a
task_id immediately and processes the request in the background. Use the corresponding GET endpoint to poll for the task status until it reaches COMPLETED or FAILED. Learn more in our async endpoints guide.Authorizations
Headers
ID of the integration you want to interact with.
Body
application/json
POST /hris/skills/bulk Request body
The skills to create or update.
Show child attributes
Show child attributes
Was this page helpful?
⌘I