curl --request PUT \
--url https://api.absentify.com/api/v1/members/{id} \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"is_admin": true,
"department_ids": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"employment_start_date": "<string>",
"employment_end_date": "<string>",
"public_holiday_id": "<string>",
"birthday": "<string>",
"custom_id": "<string>"
}
'import requests
url = "https://api.absentify.com/api/v1/members/{id}"
payload = {
"is_admin": True,
"department_ids": [{ "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a" }],
"employment_start_date": "<string>",
"employment_end_date": "<string>",
"public_holiday_id": "<string>",
"birthday": "<string>",
"custom_id": "<string>"
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
is_admin: true,
department_ids: [{id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'}],
employment_start_date: '<string>',
employment_end_date: '<string>',
public_holiday_id: '<string>',
birthday: '<string>',
custom_id: '<string>'
})
};
fetch('https://api.absentify.com/api/v1/members/{id}', 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.absentify.com/api/v1/members/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'is_admin' => true,
'department_ids' => [
[
'id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]
],
'employment_start_date' => '<string>',
'employment_end_date' => '<string>',
'public_holiday_id' => '<string>',
'birthday' => '<string>',
'custom_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$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.absentify.com/api/v1/members/{id}"
payload := strings.NewReader("{\n \"is_admin\": true,\n \"department_ids\": [\n {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"employment_start_date\": \"<string>\",\n \"employment_end_date\": \"<string>\",\n \"public_holiday_id\": \"<string>\",\n \"birthday\": \"<string>\",\n \"custom_id\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
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.put("https://api.absentify.com/api/v1/members/{id}")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"is_admin\": true,\n \"department_ids\": [\n {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"employment_start_date\": \"<string>\",\n \"employment_end_date\": \"<string>\",\n \"public_holiday_id\": \"<string>\",\n \"birthday\": \"<string>\",\n \"custom_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.absentify.com/api/v1/members/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"is_admin\": true,\n \"department_ids\": [\n {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"employment_start_date\": \"<string>\",\n \"employment_end_date\": \"<string>\",\n \"public_holiday_id\": \"<string>\",\n \"birthday\": \"<string>\",\n \"custom_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body"3c90c3cc-0d44-4b50-8888-8dd25736052a"{
"code": "BAD_REQUEST",
"message": "Invalid input data",
"issues": []
}{
"code": "UNAUTHORIZED",
"message": "Authorization not provided",
"issues": []
}{
"code": "FORBIDDEN",
"message": "Insufficient access",
"issues": []
}{
"code": "NOT_FOUND",
"message": "Not found",
"issues": []
}{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error",
"issues": []
}Update a member
Update a member. Employment period: changing employment_start_date or employment_end_date so that absences currently inside the period would fall outside the new one is rejected with 400 (error code EMPLOYMENT_PERIOD_ABSENCES_AFFECTED, including the affected counts). Absences that already sat outside the stored period do not by themselves block a change, so existing absences never stand in the way of widening the period. The API never cancels absences; resolve them in the absentify UI, which asks for explicit confirmation before cancelling. Clearing employment_start_date (setting it to null) is rejected with 400 while the member has an ACTIVE assignment to an allowance rule that anchors its accrual year on the hire date (an assignment whose rule_end_date has already passed does not block it) — that rule has nothing to anchor on without the date, and the response names the rule. Either move the member to a rule with a fixed year start first, or keep the date. Setting or changing the date is unaffected, and a member who already has no date stays editable.
curl --request PUT \
--url https://api.absentify.com/api/v1/members/{id} \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"is_admin": true,
"department_ids": [
{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
],
"employment_start_date": "<string>",
"employment_end_date": "<string>",
"public_holiday_id": "<string>",
"birthday": "<string>",
"custom_id": "<string>"
}
'import requests
url = "https://api.absentify.com/api/v1/members/{id}"
payload = {
"is_admin": True,
"department_ids": [{ "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a" }],
"employment_start_date": "<string>",
"employment_end_date": "<string>",
"public_holiday_id": "<string>",
"birthday": "<string>",
"custom_id": "<string>"
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
is_admin: true,
department_ids: [{id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'}],
employment_start_date: '<string>',
employment_end_date: '<string>',
public_holiday_id: '<string>',
birthday: '<string>',
custom_id: '<string>'
})
};
fetch('https://api.absentify.com/api/v1/members/{id}', 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.absentify.com/api/v1/members/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'is_admin' => true,
'department_ids' => [
[
'id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]
],
'employment_start_date' => '<string>',
'employment_end_date' => '<string>',
'public_holiday_id' => '<string>',
'birthday' => '<string>',
'custom_id' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <api-key>"
],
]);
$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.absentify.com/api/v1/members/{id}"
payload := strings.NewReader("{\n \"is_admin\": true,\n \"department_ids\": [\n {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"employment_start_date\": \"<string>\",\n \"employment_end_date\": \"<string>\",\n \"public_holiday_id\": \"<string>\",\n \"birthday\": \"<string>\",\n \"custom_id\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("X-API-KEY", "<api-key>")
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.put("https://api.absentify.com/api/v1/members/{id}")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"is_admin\": true,\n \"department_ids\": [\n {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"employment_start_date\": \"<string>\",\n \"employment_end_date\": \"<string>\",\n \"public_holiday_id\": \"<string>\",\n \"birthday\": \"<string>\",\n \"custom_id\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.absentify.com/api/v1/members/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"is_admin\": true,\n \"department_ids\": [\n {\n \"id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n }\n ],\n \"employment_start_date\": \"<string>\",\n \"employment_end_date\": \"<string>\",\n \"public_holiday_id\": \"<string>\",\n \"birthday\": \"<string>\",\n \"custom_id\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body"3c90c3cc-0d44-4b50-8888-8dd25736052a"{
"code": "BAD_REQUEST",
"message": "Invalid input data",
"issues": []
}{
"code": "UNAUTHORIZED",
"message": "Authorization not provided",
"issues": []
}{
"code": "FORBIDDEN",
"message": "Insufficient access",
"issues": []
}{
"code": "NOT_FOUND",
"message": "Not found",
"issues": []
}{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error",
"issues": []
}Authorizations
Path Parameters
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Body
1Show child attributes
Show child attributes
Date/time in ISO 8601 format, e.g. 2026-06-01 (interpreted as UTC midnight) or 2026-06-01T09:00:00Z. Always include a time zone designator (Z for UTC) when sending a time of day. Localized formats such as 01.06.2026 or 06/01/2026 are misinterpreted and must not be used.
Date/time in ISO 8601 format, e.g. 2026-06-01 (interpreted as UTC midnight) or 2026-06-01T09:00:00Z. Always include a time zone designator (Z for UTC) when sending a time of day. Localized formats such as 01.06.2026 or 06/01/2026 are misinterpreted and must not be used.
Date/time in ISO 8601 format, e.g. 2026-06-01 (interpreted as UTC midnight) or 2026-06-01T09:00:00Z. Always include a time zone designator (Z for UTC) when sending a time of day. Localized formats such as 01.06.2026 or 06/01/2026 are misinterpreted and must not be used.
INACTIVE, ACTIVE, ARCHIVED Response
Successful response
The response is of type string<uuid>.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$Was this page helpful?