Skip to content
GET /unified/hris/timeoff_balances

Query Parameters

Refer Specifying query parameters in Truto APIs

employeeobject

This represents the employee the balance belongs to..

References: Employees → id
13 supported9 required10 notes
Deel
required

The employee, referencing employees.id (the Deel HRIS profile id). Required: Deel returns this data per employee.

Omni HR
required

The employee (employees.id, the Omni user id) whose time-off balances to read. Required: Omni HR only exposes this per employee (Omni requires the employee's user id as its user_id parameter). Exactly one employee: employee_id=, employee[id]=, [eq] or [in] with one id, or a one-element array. Several different ids, any other operator or a non-integer id is refused with a 400 (Omni HR has no multi-employee endpoint).

Paychex
required

The employee (employees.id, Paychex workerId) whose balances to list. Required: Paychex only returns balances per worker.

PeopleForce
required
Personio
required
Remote
required

The employee (employees.id, a Remote employment id). Required: Remote only exposes this data per employment.

UKG Dimensions
required

Required: UKG returns accrual balances per employee (employees.id); one employee per call. Accepts one value, several comma-separated, a repeated key (x[]=a&x[]=b) or an eq/in filter; a filter form UKG cannot express is refused with 400 rather than ignored.

Workable
required

This represents the employee the balance belongs to.

Workday
required

The employee (employees.id, a Workday worker WID, or a reference such as Employee_ID=21001). Required: Workday only exposes this data per worker.

HR Partner
supported

The employee to filter the time off balances by

HR WORKS
supported

Only these employees (employees.id, the HR WORKS person uuid). HR WORKS filters by username, so the ids are resolved through the person list Truto reads anyway; an id HR WORKS does not know returns an empty list without calling HR WORKS. Several values are supported: repeat the parameter, separate them with commas, use the [] form, or the operator forms [eq] / [in]. Any other form (for example [ne] or a nested object) is refused with a 400 instead of being ignored, so a filter Truto cannot express never returns unfiltered data. Truto resolves the person of every record by listing the company's persons once per page (GET /v2/persons, leavers included), because HR WORKS keys the response by a person identifier and the records themselves carry no person: the key pair therefore needs read permission for /persons as well. A key that no person matches, a key that two different persons match (one person's HR WORKS username can be another person's personnel number — HR WORKS keeps the two apart in nothing but their names) and a key pair without that permission all give the same answer: the record is returned WITHOUT employee, with the raw key in remote_data.truto_person_key. An employee is never guessed.

Humaans
supported

Filter by employee, referencing employees.id.

Charlie
supported
idstring
required·

The unique identifier for employees

employee_idstring
9 supported1 required9 notes
HiBob
required

The employee ID you want to get the time off balances for

Deel
supported

Flat alternative to employee.id.

HR WORKS
supported

Flat alternative to employee.id (same values and forms).

Humaans
supported

Filter by the employee's unified id. Prefer the nested employee object form; this is a flat fallback.

Omni HR
supported

Flat alternative to employee.id (same forms).

Paychex
supported

Flat alternative to employee.id.

Remote
supported

Flat alternative to employee.id.

UKG Dimensions
supported

Flat alternative to employee.id.

Workday
supported

Flat alternative to employee.id.

datestring · date-time
5 supported1 required5 notes
HiBob
required

The date for which the time off balance is calculated

Deel
supported

Deel tracking_period_date: return the balance of the tracking period containing this date (YYYY-MM-DD).

Humaans
supported

Calculate the balance as of this date (calendar date is used; time/offset is ignored). Defaults to today if omitted.

UKG Dimensions
supported

Return the balance as of this date (UKG date, YYYY-MM-DD). The balance reported is UKG's balance for that day, or the latest day UKG returns that is not after it. Without it, UKG's own default date applies (undocumented) and the latest day UKG returns is reported. A balance UKG keeps in money rather than time is left out instead of being reported as 0 hours. Accepts a date or date-time string (only the date part is used) or an eq filter; a value that is not a date is refused with 400 rather than ignored.

Workday
supported

Return balances as of this date (YYYY-MM-DD; a date-time's time part is ignored). Defaults to today.

timeoff_policy_idstring
2 supported1 required2 notes
HiBob
required

The time off policy ID you want to get the time off balances for

Omni HR
supported

Flat alternative to timeoff_policy.id (same forms).

timeoff_policyobject

Only the balance of this Omni time-off type (timeoff_types.id; Omni exposes no policies, balances are per time-off type). Without it one balance-overview call is made per time-off type the token's user may adjust. Exactly one type, in any of the usual forms ([eq] / [in] with one id); several ids or any other operator is refused with a 400.

2 supported
HR Partner
supported
Omni HR
supported
idstring
required
reference_datestring

HR WORKS-specific: the reference date of the leave account (referenceDate, YYYY-MM-DD). "The date interval over which the data will be generated always starts from January 1st of the year specified in this parameter and ends at the reference date." When it is omitted Truto sends nothing and HR WORKS uses its own default, which it does not document. Accepts a date (YYYY-MM-DD), a date-time (only the date part is sent) or the operator forms [eq]/[gte]/[gt] and [eq]/[lte]/[lt]; gt and lt are treated as inclusive, because HR WORKS's window is inclusive. Several values, [ne] or a nested object are refused with a 400. HR WORKS keeps one annual-leave account per person: balance is its unplanned value ("The number of unplanned/still available vacation days"), counted in days. The entitlement, requested, approved, planned and expiring counters and the next expiration date have nowhere to land in the unified model and stay in remote_data. There is no link to a timeoff_policy: HR WORKS does not expose which vacation type a person is assigned to.

1 supported
HR WORKS
supported
include_inactiveboolean

Also return the leave accounts of persons who have left the company and were set to gone (onlyActive=false). Default false. HR WORKS ignores it when an employee filter is given. Accepts true/false in any letter case, also as [eq]; any other value or form is refused with a 400.

1 supported
HR WORKS
supported
Show Truto-specific parameters
integrated_account_idstring · uuid
required·

The ID of the integrated account to use for the request.

Example: 62f44730-dd91-461e-bd6a-aedd9e0ad79d
truto_response_formatstring

The format of the response.

  • unified returns the response with unified mappings applied.
  • raw returns the unprocessed, raw response from the remote API.
  • normalized applies the unified mappings and returns the data in a normalized format.
  • stream returns the response as a stream, which is ideal for transmitting large datasets, files, or binary data. Using streaming mode helps to efficiently handle large payloads or real-time data flows without requiring the entire data to be buffered in memory.
  • debug returns the final unified result alongside raw remote fetch information. The response is an envelope containing result (identical to unified mode output) and debug (with requestUrl, requestOptions, data, responseHeaders, and for list operations: nextCursor, isLooping, isEmptyResult, resultCount). When the upstream body exceeds 1 MiB, data is replaced by { truto_truncated: true, truto_max_bytes, truto_excerpt }. debug is null for static responses or when truto_skip_api_call=true.

Defaults to unified.

Example: unified
Possible values:
unifiedrawnormalizedstreamdebug
truto_key_bystring

By default the result attribute is an array of objects. This parameter allows you to specify a field in each result objects to use as key, which transforms the result array into an object with the array items keyed by the field. This is useful for when you want to use the result as a lookup table.

Example: id
truto_ignore_limitboolean

Ignores the limit query parameter.

truto_ignore_remote_databoolean

Excludes the remote_data attribute from the response.

truto_exclude_fieldsstring[]

Array of fields to exclude from the response.

Example: truto_exclude_fields[]=id&truto_exclude_fields[]=name
remote_queryRecord<string, any>

Query parameters to pass to the underlying API without any transformations. Refer this guide to see how to structure the query parameters.

Example: remote_query[foo]=bar

Response Body

debugobject

Present only when truto_response_format=debug. Contains raw fetch details: requestUrl, requestOptions, data, responseHeaders, nextCursor, isLooping, isEmptyResult, resultCount. data is the parsed upstream body; when its JSON form exceeds 1 MiB it is replaced by { truto_truncated: true, truto_max_bytes, truto_excerpt }, where truto_excerpt is the leading bytes of that body. The same applies to a string requestOptions.body. null for static responses or when truto_skip_api_call=true.

data
isEmptyResultboolean
isLoopingboolean
nextCursorstring
requestOptionsRecord<string, any>
requestUrlstring
responseHeadersRecord<string, any>
resultCountnumber
next_cursorstring

The cursor to use for the next page of results. Pass this value as next_cursor in the query parameter in the next request to get the next page of results.

resultobject[]

List of Timeoff balances

idstring
required·

The unique identifier for time off balances

14 supported
Charlie
supported
Deel
supported
HiBob
supported
HR Partner
supported
HR WORKS
supported
Humaans
supported
Omni HR
supported
Paychex
supported
PeopleForce
supported
Personio
supported
Remote
supported
UKG Dimensions
supported
Workable
supported
Workday
supported
balancenumber

This represents the balance of the time off request.

14 supported
Charlie
supported
Deel
supported
HiBob
supported
HR Partner
supported
HR WORKS
supported
Humaans
supported
Omni HR
supported
Paychex
supported
PeopleForce
supported
Personio
supported
Remote
supported
UKG Dimensions
supported
Workable
supported
Workday
supported
created_atstring · date-time

This represents the date when the timeoffbalances was created

2 supported
Humaans
supported
PeopleForce
supported
employeeobject

This represents the employee the balance belongs to..

References: Employees → id
14 supported
Charlie
supported
Deel
supported
HiBob
supported
HR Partner
supported
HR WORKS
supported
Humaans
supported
Omni HR
supported
Paychex
supported
PeopleForce
supported
Personio
supported
Remote
supported
UKG Dimensions
supported
Workable
supported
Workday
supported
2 properties
idstring

The unique identifier for employees

namestring

This represents the name of the employee.

remote_dataRecord<string, any>

Raw data returned from the remote API call.

timeoff_policystring

This represents the time off policy of the time off request.

10 supported
Deel
supported
HiBob
supported
HR Partner
supported
Humaans
supported
Omni HR
supported
Paychex
supported
PeopleForce
supported
Remote
supported
UKG Dimensions
supported
Workday
supported
updated_atstring · date-time

This represents the date when the timeoffbalances was updated

2 supported
Humaans
supported
PeopleForce
supported
truto unified hris timeoffbalances \
  -a '<integrated_account_id>' \
  -o json
import Truto from '@truto/truto-ts-sdk';

const truto = new Truto({
  token: '<your_api_token>',
});

const result = await truto.unifiedApi.list(
  'hris',
  'timeoffbalances',
  { integrated_account_id: '<integrated_account_id>' }
);

console.log(result);
import asyncio
from truto_python_sdk import TrutoApi

truto_api = TrutoApi(token="<your_api_token>")

async def main():
    async for item in truto_api.unified_api.list(
        "hris",
        "timeoffbalances",
        {"integrated_account_id": "<integrated_account_id>"}
    ):
        print(item)

asyncio.run(main())
curl -X GET 'https://api.truto.one/unified/hris/timeoff_balances?integrated_account_id=<integrated_account_id>' \
  -H 'Authorization: Bearer <your_api_token>' \
  -H 'Content-Type: application/json'
const integratedAccountId = '<integrated_account_id>';

const response = await fetch(`https://api.truto.one/unified/hris/timeoff_balances?integrated_account_id=${integratedAccountId}`, {
  method: 'GET',
  headers: {
    'Authorization': 'Bearer <your_api_token>',
    'Content-Type': 'application/json',
  },
});

const data = await response.json();
console.log(data);
import requests

url = "https://api.truto.one/unified/hris/timeoff_balances"
headers = {
    "Authorization": "Bearer <your_api_token>",
    "Content-Type": "application/json",
}
params = {
    "integrated_account_id": "<integrated_account_id>"
}

response = requests.get(url, headers=headers, params=params)
print(response.json())