Skip to main content
POST
/
unified
/
hris
/
employees
/
{id}
/
employments
Create Employee Employment
curl --request POST \
  --url https://api.stackone.com/unified/hris/employees/{id}/employments \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --header 'x-account-id: <x-account-id>' \
  --data '
{
  "unified_custom_fields": {
    "my_project_custom_field_1": "REF-1236",
    "my_project_custom_field_2": "some other value"
  },
  "job_title": "Software Engineer",
  "pay_rate": "40.00",
  "pay_period": "monthly",
  "pay_frequency": "hourly",
  "pay_currency": "USD",
  "effective_date": "2021-01-01T01:01:01.000Z",
  "end_date": "2021-01-01T01:01:01.000Z",
  "grade": {
    "id": "1687-3",
    "remote_id": "8187e5da-dc77-475e-9949-af0f1fa4e4e3",
    "name": "1687-4",
    "description": "Mid-level employee demonstrating proficiency and autonomy."
  },
  "employment_type": "permanent",
  "employment_contract_type": "full_time",
  "type": {
    "id": "8187e5da-dc77-475e-9949-af0f1fa4e4e3",
    "remote_id": "8187e5da-dc77-475e-9949-af0f1fa4e4e3",
    "label": "Permanent",
    "type": "permanent"
  },
  "contract_type": {
    "id": "8187e5da-dc77-475e-9949-af0f1fa4e4e3",
    "remote_id": "8187e5da-dc77-475e-9949-af0f1fa4e4e3",
    "label": "Full-Time",
    "contract_type": "full_time"
  },
  "work_time": {
    "duration": "P0Y0M0DT8H0M0S",
    "period": "month"
  },
  "payroll_code": "PC1",
  "job_id": "5290",
  "passthrough": {
    "other_known_names": "John Doe"
  }
}
'
import requests

url = "https://api.stackone.com/unified/hris/employees/{id}/employments"

payload = {
"unified_custom_fields": {
"my_project_custom_field_1": "REF-1236",
"my_project_custom_field_2": "some other value"
},
"job_title": "Software Engineer",
"pay_rate": "40.00",
"pay_period": "monthly",
"pay_frequency": "hourly",
"pay_currency": "USD",
"effective_date": "2021-01-01T01:01:01.000Z",
"end_date": "2021-01-01T01:01:01.000Z",
"grade": {
"id": "1687-3",
"remote_id": "8187e5da-dc77-475e-9949-af0f1fa4e4e3",
"name": "1687-4",
"description": "Mid-level employee demonstrating proficiency and autonomy."
},
"employment_type": "permanent",
"employment_contract_type": "full_time",
"type": {
"id": "8187e5da-dc77-475e-9949-af0f1fa4e4e3",
"remote_id": "8187e5da-dc77-475e-9949-af0f1fa4e4e3",
"label": "Permanent",
"type": "permanent"
},
"contract_type": {
"id": "8187e5da-dc77-475e-9949-af0f1fa4e4e3",
"remote_id": "8187e5da-dc77-475e-9949-af0f1fa4e4e3",
"label": "Full-Time",
"contract_type": "full_time"
},
"work_time": {
"duration": "P0Y0M0DT8H0M0S",
"period": "month"
},
"payroll_code": "PC1",
"job_id": "5290",
"passthrough": { "other_known_names": "John Doe" }
}
headers = {
"x-account-id": "<x-account-id>",
"Authorization": "Basic <encoded-value>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {
'x-account-id': '<x-account-id>',
Authorization: 'Basic <encoded-value>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
unified_custom_fields: {
my_project_custom_field_1: 'REF-1236',
my_project_custom_field_2: 'some other value'
},
job_title: 'Software Engineer',
pay_rate: '40.00',
pay_period: 'monthly',
pay_frequency: 'hourly',
pay_currency: 'USD',
effective_date: '2021-01-01T01:01:01.000Z',
end_date: '2021-01-01T01:01:01.000Z',
grade: {
id: '1687-3',
remote_id: '8187e5da-dc77-475e-9949-af0f1fa4e4e3',
name: '1687-4',
description: 'Mid-level employee demonstrating proficiency and autonomy.'
},
employment_type: 'permanent',
employment_contract_type: 'full_time',
type: {
id: '8187e5da-dc77-475e-9949-af0f1fa4e4e3',
remote_id: '8187e5da-dc77-475e-9949-af0f1fa4e4e3',
label: 'Permanent',
type: 'permanent'
},
contract_type: {
id: '8187e5da-dc77-475e-9949-af0f1fa4e4e3',
remote_id: '8187e5da-dc77-475e-9949-af0f1fa4e4e3',
label: 'Full-Time',
contract_type: 'full_time'
},
work_time: {duration: 'P0Y0M0DT8H0M0S', period: 'month'},
payroll_code: 'PC1',
job_id: '5290',
passthrough: {other_known_names: 'John Doe'}
})
};

fetch('https://api.stackone.com/unified/hris/employees/{id}/employments', 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.stackone.com/unified/hris/employees/{id}/employments",
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([
'unified_custom_fields' => [
'my_project_custom_field_1' => 'REF-1236',
'my_project_custom_field_2' => 'some other value'
],
'job_title' => 'Software Engineer',
'pay_rate' => '40.00',
'pay_period' => 'monthly',
'pay_frequency' => 'hourly',
'pay_currency' => 'USD',
'effective_date' => '2021-01-01T01:01:01.000Z',
'end_date' => '2021-01-01T01:01:01.000Z',
'grade' => [
'id' => '1687-3',
'remote_id' => '8187e5da-dc77-475e-9949-af0f1fa4e4e3',
'name' => '1687-4',
'description' => 'Mid-level employee demonstrating proficiency and autonomy.'
],
'employment_type' => 'permanent',
'employment_contract_type' => 'full_time',
'type' => [
'id' => '8187e5da-dc77-475e-9949-af0f1fa4e4e3',
'remote_id' => '8187e5da-dc77-475e-9949-af0f1fa4e4e3',
'label' => 'Permanent',
'type' => 'permanent'
],
'contract_type' => [
'id' => '8187e5da-dc77-475e-9949-af0f1fa4e4e3',
'remote_id' => '8187e5da-dc77-475e-9949-af0f1fa4e4e3',
'label' => 'Full-Time',
'contract_type' => 'full_time'
],
'work_time' => [
'duration' => 'P0Y0M0DT8H0M0S',
'period' => 'month'
],
'payroll_code' => 'PC1',
'job_id' => '5290',
'passthrough' => [
'other_known_names' => 'John Doe'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json",
"x-account-id: <x-account-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.stackone.com/unified/hris/employees/{id}/employments"

payload := strings.NewReader("{\n \"unified_custom_fields\": {\n \"my_project_custom_field_1\": \"REF-1236\",\n \"my_project_custom_field_2\": \"some other value\"\n },\n \"job_title\": \"Software Engineer\",\n \"pay_rate\": \"40.00\",\n \"pay_period\": \"monthly\",\n \"pay_frequency\": \"hourly\",\n \"pay_currency\": \"USD\",\n \"effective_date\": \"2021-01-01T01:01:01.000Z\",\n \"end_date\": \"2021-01-01T01:01:01.000Z\",\n \"grade\": {\n \"id\": \"1687-3\",\n \"remote_id\": \"8187e5da-dc77-475e-9949-af0f1fa4e4e3\",\n \"name\": \"1687-4\",\n \"description\": \"Mid-level employee demonstrating proficiency and autonomy.\"\n },\n \"employment_type\": \"permanent\",\n \"employment_contract_type\": \"full_time\",\n \"type\": {\n \"id\": \"8187e5da-dc77-475e-9949-af0f1fa4e4e3\",\n \"remote_id\": \"8187e5da-dc77-475e-9949-af0f1fa4e4e3\",\n \"label\": \"Permanent\",\n \"type\": \"permanent\"\n },\n \"contract_type\": {\n \"id\": \"8187e5da-dc77-475e-9949-af0f1fa4e4e3\",\n \"remote_id\": \"8187e5da-dc77-475e-9949-af0f1fa4e4e3\",\n \"label\": \"Full-Time\",\n \"contract_type\": \"full_time\"\n },\n \"work_time\": {\n \"duration\": \"P0Y0M0DT8H0M0S\",\n \"period\": \"month\"\n },\n \"payroll_code\": \"PC1\",\n \"job_id\": \"5290\",\n \"passthrough\": {\n \"other_known_names\": \"John Doe\"\n }\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("x-account-id", "<x-account-id>")
req.Header.Add("Authorization", "Basic <encoded-value>")
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.stackone.com/unified/hris/employees/{id}/employments")
.header("x-account-id", "<x-account-id>")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"unified_custom_fields\": {\n \"my_project_custom_field_1\": \"REF-1236\",\n \"my_project_custom_field_2\": \"some other value\"\n },\n \"job_title\": \"Software Engineer\",\n \"pay_rate\": \"40.00\",\n \"pay_period\": \"monthly\",\n \"pay_frequency\": \"hourly\",\n \"pay_currency\": \"USD\",\n \"effective_date\": \"2021-01-01T01:01:01.000Z\",\n \"end_date\": \"2021-01-01T01:01:01.000Z\",\n \"grade\": {\n \"id\": \"1687-3\",\n \"remote_id\": \"8187e5da-dc77-475e-9949-af0f1fa4e4e3\",\n \"name\": \"1687-4\",\n \"description\": \"Mid-level employee demonstrating proficiency and autonomy.\"\n },\n \"employment_type\": \"permanent\",\n \"employment_contract_type\": \"full_time\",\n \"type\": {\n \"id\": \"8187e5da-dc77-475e-9949-af0f1fa4e4e3\",\n \"remote_id\": \"8187e5da-dc77-475e-9949-af0f1fa4e4e3\",\n \"label\": \"Permanent\",\n \"type\": \"permanent\"\n },\n \"contract_type\": {\n \"id\": \"8187e5da-dc77-475e-9949-af0f1fa4e4e3\",\n \"remote_id\": \"8187e5da-dc77-475e-9949-af0f1fa4e4e3\",\n \"label\": \"Full-Time\",\n \"contract_type\": \"full_time\"\n },\n \"work_time\": {\n \"duration\": \"P0Y0M0DT8H0M0S\",\n \"period\": \"month\"\n },\n \"payroll_code\": \"PC1\",\n \"job_id\": \"5290\",\n \"passthrough\": {\n \"other_known_names\": \"John Doe\"\n }\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.stackone.com/unified/hris/employees/{id}/employments")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["x-account-id"] = '<x-account-id>'
request["Authorization"] = 'Basic <encoded-value>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"unified_custom_fields\": {\n \"my_project_custom_field_1\": \"REF-1236\",\n \"my_project_custom_field_2\": \"some other value\"\n },\n \"job_title\": \"Software Engineer\",\n \"pay_rate\": \"40.00\",\n \"pay_period\": \"monthly\",\n \"pay_frequency\": \"hourly\",\n \"pay_currency\": \"USD\",\n \"effective_date\": \"2021-01-01T01:01:01.000Z\",\n \"end_date\": \"2021-01-01T01:01:01.000Z\",\n \"grade\": {\n \"id\": \"1687-3\",\n \"remote_id\": \"8187e5da-dc77-475e-9949-af0f1fa4e4e3\",\n \"name\": \"1687-4\",\n \"description\": \"Mid-level employee demonstrating proficiency and autonomy.\"\n },\n \"employment_type\": \"permanent\",\n \"employment_contract_type\": \"full_time\",\n \"type\": {\n \"id\": \"8187e5da-dc77-475e-9949-af0f1fa4e4e3\",\n \"remote_id\": \"8187e5da-dc77-475e-9949-af0f1fa4e4e3\",\n \"label\": \"Permanent\",\n \"type\": \"permanent\"\n },\n \"contract_type\": {\n \"id\": \"8187e5da-dc77-475e-9949-af0f1fa4e4e3\",\n \"remote_id\": \"8187e5da-dc77-475e-9949-af0f1fa4e4e3\",\n \"label\": \"Full-Time\",\n \"contract_type\": \"full_time\"\n },\n \"work_time\": {\n \"duration\": \"P0Y0M0DT8H0M0S\",\n \"period\": \"month\"\n },\n \"payroll_code\": \"PC1\",\n \"job_id\": \"5290\",\n \"passthrough\": {\n \"other_known_names\": \"John Doe\"\n }\n}"

response = http.request(request)
puts response.read_body
{
  "statusCode": 201,
  "message": "Record created successfully.",
  "timestamp": "2021-01-01T01:01:01.000Z",
  "data": {
    "id": "8187e5da-dc77-475e-9949-af0f1fa4e4e3",
    "remote_id": "8187e5da-dc77-475e-9949-af0f1fa4e4e3"
  }
}
{
"statusCode": 400,
"message": "Bad Request",
"timestamp": "2023-05-30T00:00:00.000Z",
"data": {
"statusCode": 400,
"message": "Bad Request",
"headers": {
"content-type": "application/json",
"x-request-id": "5678c28b211dace4e0a0f9171e6b88c5"
}
},
"provider_errors": [
{
"status": 400,
"url": "https://api.provider.com/v1/resource",
"raw": {
"message": "Invalid input parameters"
},
"headers": {
"content-type": "application/json",
"x-request-id": "5678c28b211dace4e0a0f9171e6b88c5"
}
}
]
}
{
"statusCode": 401,
"message": "Unauthorized",
"timestamp": "2023-05-30T00:00:00.000Z"
}
{
"statusCode": 403,
"message": "Forbidden resource",
"timestamp": "2023-05-30T00:00:00.000Z"
}
{
"statusCode": 404,
"message": "Not Found",
"timestamp": "2023-05-30T00:00:00.000Z"
}
{
"statusCode": 408,
"message": "Request timed out",
"timestamp": "2023-05-30T00:00:00.000Z"
}
{
"statusCode": 409,
"message": "Conflict",
"timestamp": "2023-05-30T00:00:00.000Z"
}
{
"statusCode": 412,
"message": "Precondition failed",
"timestamp": "2023-05-30T00:00:00.000Z"
}
{
"statusCode": 422,
"message": "Unprocessable Entity",
"timestamp": "2023-05-30T00:00:00.000Z"
}
{
"statusCode": 429,
"message": "Too many requests",
"timestamp": "2023-05-30T00:00:00.000Z"
}
{
"statusCode": 500,
"message": "Internal server error",
"timestamp": "2023-05-30T00:00:00.000Z"
}
{
"statusCode": 501,
"message": "Not Implemented",
"timestamp": "2023-05-30T00:00:00.000Z"
}
{
"statusCode": 502,
"message": "Bad Gateway",
"timestamp": "2023-05-30T00:00:00.000Z"
}

Authorizations

Authorization
string
header
required

Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.

Headers

x-account-id
string
required

The account identifier

Prefer
string

Set to "heartbeat" to enable keep-alive newline heartbeats during long-running requests. Response includes Preference-Applied: heartbeat header when honored. (RFC 7240)

Example:

"heartbeat"

Path Parameters

id
string
required

Body

application/json
unified_custom_fields
object | null

Custom Unified Fields configured in your StackOne project

Example:
{
"my_project_custom_field_1": "REF-1236",
"my_project_custom_field_2": "some other value"
}
job_title
string | null

The job title of the employee

Example:

"Software Engineer"

pay_rate
string | null

The amount of compensation for the employee

Example:

"40.00"

pay_period
object | null

The time period over which the pay rate is calculated

Example:

"monthly"

pay_frequency
object | null

How often the employee is paid

Example:

"hourly"

pay_currency
string | null

The currency used for pay

Example:

"USD"

effective_date
string<date-time> | null

The effective date of the employment contract

Example:

"2021-01-01T01:01:01.000Z"

end_date
string<date-time> | null

The end date of employment

Example:

"2021-01-01T01:01:01.000Z"

grade
object | null

Represents the employee’s position within the organizational hierarchy.

employment_type
object | null
deprecated

The type of employment (e.g., contractor, permanent)

Example:

"permanent"

employment_contract_type
object | null
deprecated

The employment work schedule type (e.g., full-time, part-time)

Example:

"full_time"

type
object | null

The type of employment

contract_type
object | null

The employment work schedule type

work_time
object | null
payroll_code
string | null

The payroll code of the employee

Example:

"PC1"

job_id
string | null

The employee job id

Example:

"5290"

passthrough
object | null

Value to pass through to the provider

Example:
{ "other_known_names": "John Doe" }

Response

The employee employment was created successfully.

statusCode
number
required
Example:

201

message
string
required
Example:

"Record created successfully."

timestamp
string<date-time>
required
Example:

"2021-01-01T01:01:01.000Z"

data
object
required