curl --request POST \
--url https://api.absentify.com/api/v1/requests/recurring \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"leave_type_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"requester_member_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"interval": 50,
"from": "<string>",
"until": "<string>",
"count": 183,
"weekDays": "<string>",
"day": 16,
"month": 6,
"pos": 2,
"reason": "<string>",
"exDates": [
"<string>"
],
"files": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"representative_member_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"ignoreMaximumAbsence": true
}
'import requests
url = "https://api.absentify.com/api/v1/requests/recurring"
payload = {
"leave_type_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"requester_member_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"interval": 50,
"from": "<string>",
"until": "<string>",
"count": 183,
"weekDays": "<string>",
"day": 16,
"month": 6,
"pos": 2,
"reason": "<string>",
"exDates": ["<string>"],
"files": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"representative_member_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"ignoreMaximumAbsence": True
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
leave_type_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
requester_member_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
interval: 50,
from: '<string>',
until: '<string>',
count: 183,
weekDays: '<string>',
day: 16,
month: 6,
pos: 2,
reason: '<string>',
exDates: ['<string>'],
files: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
representative_member_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
ignoreMaximumAbsence: true
})
};
fetch('https://api.absentify.com/api/v1/requests/recurring', 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/requests/recurring",
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([
'leave_type_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'requester_member_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'interval' => 50,
'from' => '<string>',
'until' => '<string>',
'count' => 183,
'weekDays' => '<string>',
'day' => 16,
'month' => 6,
'pos' => 2,
'reason' => '<string>',
'exDates' => [
'<string>'
],
'files' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'representative_member_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'ignoreMaximumAbsence' => true
]),
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/requests/recurring"
payload := strings.NewReader("{\n \"leave_type_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"requester_member_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"interval\": 50,\n \"from\": \"<string>\",\n \"until\": \"<string>\",\n \"count\": 183,\n \"weekDays\": \"<string>\",\n \"day\": 16,\n \"month\": 6,\n \"pos\": 2,\n \"reason\": \"<string>\",\n \"exDates\": [\n \"<string>\"\n ],\n \"files\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"representative_member_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"ignoreMaximumAbsence\": true\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.absentify.com/api/v1/requests/recurring")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"leave_type_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"requester_member_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"interval\": 50,\n \"from\": \"<string>\",\n \"until\": \"<string>\",\n \"count\": 183,\n \"weekDays\": \"<string>\",\n \"day\": 16,\n \"month\": 6,\n \"pos\": 2,\n \"reason\": \"<string>\",\n \"exDates\": [\n \"<string>\"\n ],\n \"files\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"representative_member_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"ignoreMaximumAbsence\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.absentify.com/api/v1/requests/recurring")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"leave_type_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"requester_member_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"interval\": 50,\n \"from\": \"<string>\",\n \"until\": \"<string>\",\n \"count\": 183,\n \"weekDays\": \"<string>\",\n \"day\": 16,\n \"month\": 6,\n \"pos\": 2,\n \"reason\": \"<string>\",\n \"exDates\": [\n \"<string>\"\n ],\n \"files\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"representative_member_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"ignoreMaximumAbsence\": true\n}"
response = http.request(request)
puts response.read_body{
"created": 123,
"requestIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"recurrenceId": "<string>"
}{
"code": "BAD_REQUEST",
"message": "Invalid input data",
"issues": []
}{
"code": "UNAUTHORIZED",
"message": "Authorization not provided",
"issues": []
}{
"code": "FORBIDDEN",
"message": "Insufficient access",
"issues": []
}{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error",
"issues": []
}Create recurring requests
Create multiple recurring requests based on a recurrence pattern. Note: half_day=‘morning’/‘afternoon’ requires a leave type with leave_unit ‘half_days’ — on a full-day-only ‘days’ leave type it is rejected. Employment period: the series is created all-or-nothing, so a single occurrence that starts before employment_start_date or ends after employment_end_date rejects the whole series with 400 rather than skipping that occurrence. An occurrence straddling either boundary is rejected too, never truncated. The comparison is on calendar days, so both boundary dates are themselves bookable and a null boundary means open ended on that side.
curl --request POST \
--url https://api.absentify.com/api/v1/requests/recurring \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"leave_type_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"requester_member_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"interval": 50,
"from": "<string>",
"until": "<string>",
"count": 183,
"weekDays": "<string>",
"day": 16,
"month": 6,
"pos": 2,
"reason": "<string>",
"exDates": [
"<string>"
],
"files": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"representative_member_ids": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"ignoreMaximumAbsence": true
}
'import requests
url = "https://api.absentify.com/api/v1/requests/recurring"
payload = {
"leave_type_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"requester_member_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"interval": 50,
"from": "<string>",
"until": "<string>",
"count": 183,
"weekDays": "<string>",
"day": 16,
"month": 6,
"pos": 2,
"reason": "<string>",
"exDates": ["<string>"],
"files": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"representative_member_ids": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"ignoreMaximumAbsence": True
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
leave_type_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
requester_member_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
interval: 50,
from: '<string>',
until: '<string>',
count: 183,
weekDays: '<string>',
day: 16,
month: 6,
pos: 2,
reason: '<string>',
exDates: ['<string>'],
files: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
representative_member_ids: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
ignoreMaximumAbsence: true
})
};
fetch('https://api.absentify.com/api/v1/requests/recurring', 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/requests/recurring",
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([
'leave_type_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'requester_member_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a',
'interval' => 50,
'from' => '<string>',
'until' => '<string>',
'count' => 183,
'weekDays' => '<string>',
'day' => 16,
'month' => 6,
'pos' => 2,
'reason' => '<string>',
'exDates' => [
'<string>'
],
'files' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'representative_member_ids' => [
'3c90c3cc-0d44-4b50-8888-8dd25736052a'
],
'ignoreMaximumAbsence' => true
]),
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/requests/recurring"
payload := strings.NewReader("{\n \"leave_type_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"requester_member_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"interval\": 50,\n \"from\": \"<string>\",\n \"until\": \"<string>\",\n \"count\": 183,\n \"weekDays\": \"<string>\",\n \"day\": 16,\n \"month\": 6,\n \"pos\": 2,\n \"reason\": \"<string>\",\n \"exDates\": [\n \"<string>\"\n ],\n \"files\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"representative_member_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"ignoreMaximumAbsence\": true\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.absentify.com/api/v1/requests/recurring")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"leave_type_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"requester_member_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"interval\": 50,\n \"from\": \"<string>\",\n \"until\": \"<string>\",\n \"count\": 183,\n \"weekDays\": \"<string>\",\n \"day\": 16,\n \"month\": 6,\n \"pos\": 2,\n \"reason\": \"<string>\",\n \"exDates\": [\n \"<string>\"\n ],\n \"files\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"representative_member_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"ignoreMaximumAbsence\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.absentify.com/api/v1/requests/recurring")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"leave_type_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"requester_member_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\",\n \"interval\": 50,\n \"from\": \"<string>\",\n \"until\": \"<string>\",\n \"count\": 183,\n \"weekDays\": \"<string>\",\n \"day\": 16,\n \"month\": 6,\n \"pos\": 2,\n \"reason\": \"<string>\",\n \"exDates\": [\n \"<string>\"\n ],\n \"files\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"representative_member_ids\": [\n \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n ],\n \"ignoreMaximumAbsence\": true\n}"
response = http.request(request)
puts response.read_body{
"created": 123,
"requestIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"recurrenceId": "<string>"
}{
"code": "BAD_REQUEST",
"message": "Invalid input data",
"issues": []
}{
"code": "UNAUTHORIZED",
"message": "Authorization not provided",
"issues": []
}{
"code": "FORBIDDEN",
"message": "Insufficient access",
"issues": []
}{
"code": "INTERNAL_SERVER_ERROR",
"message": "Internal server error",
"issues": []
}Autorisierungen
Body
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$daily, weekly, monthly 1 <= x <= 100Date/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.
1 <= x <= 3651 <= x <= 311 <= x <= 12-1 <= x <= 5Show child attributes
Show child attributes
Show child attributes
Show child attributes
full_day, morning, afternoon 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.
^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12})$approve_request_immediately, go_through_the_normal_approval_process War diese Seite hilfreich?