Skip to main content
POST
Preview recurring requests (dry run)

Authorizations

X-API-KEY
string
header
required

Body

application/json
leave_type_id
string<uuid>
required
Pattern: ^([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})$
requester_member_id
string<uuid>
required
Pattern: ^([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})$
repeat
enum<string>
required
Available options:
daily,
weekly,
monthly
interval
integer
required
Required range: 1 <= x <= 100
from
string
required

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.

until
string | null
required

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.

count
integer | null
required
Required range: 1 <= x <= 365
weekDays
string | null
required
day
required
Required range: 1 <= x <= 31
month
integer | null
required
Required range: 1 <= x <= 12
pos
required
Required range: -1 <= x <= 5
reason
string
start_time
object
end_time
object
half_day
enum<string>
Available options:
full_day,
morning,
afternoon
exDates
string[]

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.

files
string<uuid>[]
Pattern: ^([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})$
representative_member_ids
string<uuid>[]
Pattern: ^([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})$
ignoreMaximumAbsence
boolean
admin_approval_option
enum<string>
Available options:
approve_request_immediately,
go_through_the_normal_approval_process

Response

Successful response

can_create
boolean
required

The one-line verdict: true means POST with this payload passes every rule the create endpoint applies, as of the data at preview time; false means it fails. False whenever rejection is set, a blocking conflict is listed or is_allowance_sufficient is false. Two things the preview cannot see: requests created in between, and changes to the member's approvers that the create call makes when approver sync from Microsoft 365 is on. A snapshot, not a reservation. department_limit_conflicts block unless the caller is an admin passing ignoreMaximumAbsence; representative_unavailable never blocks.

occurrence_count
integer
required
Required range: -9007199254740991 <= x <= 9007199254740991
duration
object | null
required
takes_from_allowance
boolean
required
allowance_type
object | null
required

The allowance the absence deducts from. Null when it deducts nothing.

is_allowance_sufficient
boolean | null
required

Verdict for the whole series: true means the allowance covers it, false means creating it fails with the allowance error and leaves nothing behind. Always true for leave types that do not deduct. Null when rejection is set: the allowance was not evaluated. The conflict arrays are reported separately and do not affect this flag.

conflicts
object[]
required

Occurrences that overlap an existing non-declined, non-cancelled request of the member.

department_limit_conflicts
object[]
required
representative_unavailable
object[]
required

Only populated when representative_member_ids are passed: occurrences on which a chosen representative is absent.

representative_overlaps
object[]
required

Occurrences on which the member is someone else's representative, pending or accepted. Only accepted ones reject the series for non-admins (REPRESENTATIVE_CONFLICT).

rejection
object | null
required

Set when creating the same series would be rejected with 400: the first failing rule, series rules first and then the per-occurrence rules, in the order the create endpoint applies them. Overlaps, the allowance and department limits are never a rejection; see the conflict arrays and is_allowance_sufficient. duration and is_allowance_sufficient are null when this is set. Match on code, not on message (which is translated into the API key member's language).