# Get Timeoff balances

> Source: https://truto.one/docs/api-reference/unified-hris-api/timeoffbalances/get/

`GET /unified/hris/timeoff_balances/{id}`

Resource: **TimeoffBalances** · API: **Unified HRIS API**

## Supported integrations

HR WORKS

## Path parameters

- **`id`** _(string, required)_
  The ID of the resource.

## Query parameters

- **`integrated_account_id`** _(string, required)_
  The ID of the integrated account to use for the request.
- **`truto_response_format`** _(string)_
  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`.
  Allowed: `unified`, `raw`, `normalized`, `stream`, `debug`
- **`truto_ignore_remote_data`** _(boolean)_
  Excludes the `remote_data` attribute from the response.
- **`truto_exclude_fields`** _(array<string>)_
  Array of fields to exclude from the response.
- **`remote_query`** _(object)_
  Query parameters to pass to the underlying API without any transformations. Refer [this guide](https://truto.one/docs/api-reference/overview/querying#remote-query-parameters) to see how to structure the query parameters.
- **`reference_date`** _(string)_
  HR WORKS-specific: the reference date of the leave account (referenceDate, YYYY-MM-DD), as on the list. 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. The id is the identifier HR WORKS itself keys its leave-account list by (timeoff_balances.list publishes exactly that), and an employees.id (person uuid) is accepted too: Truto resolves either against the company's person list and sends the personnel number HR WORKS wants in the path. An identifier that two different persons match — one person's HR WORKS username can be another's personnel number — is refused with a 400 rather than read for the wrong person, and an identifier nobody matches is a 404. This resolution needs read permission for /persons: without it the call is refused with HR WORKS's own status and a message naming the endpoint, because GET /v2/persons/{personnelNumber}/leave-account takes nothing but a personnel number.

## Response body

- **`id`** _(string, required)_
  The unique identifier for time off balances
- **`employee`** _(object)_
  This represents the employee the balance belongs to..
  - **`id`** _(string)_
    The unique identifier for employees
  - **`name`** _(string)_
    This represents the name of the employee.
- **`timeoff_policy`** _(string)_
  This represents the time off policy of the time off request.
- **`balance`** _(number)_
  This represents the balance of the time off request.
- **`created_at`** _(string)_
  This represents the date when the timeoffbalances was created
- **`updated_at`** _(string)_
  This represents the date when the timeoffbalances was updated
- **`remote_data`** _(object)_
  Raw data returned from the remote API call.

## Code examples

### Truto CLI

```bash
truto unified hris timeoffbalances '<resource_id>' \
  -m get \
  -a '<integrated_account_id>' \
  -o json
```

### Truto TS SDK

```typescript
import Truto from '@truto/truto-ts-sdk';

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

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

console.log(result);
```

### Truto Python SDK

```python
import asyncio
from truto_python_sdk import TrutoApi

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

async def main():
    result = await truto_api.unified_api.get(
        "hris",
        "timeoffbalances",
        "<resource_id>",
        {"integrated_account_id": "<integrated_account_id>"}
    )
    print(result)

asyncio.run(main())
```

### curl

```bash
curl -X GET 'https://api.truto.one/unified/hris/timeoff_balances/{id}?integrated_account_id=<integrated_account_id>' \
  -H 'Authorization: Bearer <your_api_token>' \
  -H 'Content-Type: application/json'
```

### JavaScript

```javascript
const integratedAccountId = '<integrated_account_id>';

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

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

### Python

```python
import requests

url = "https://api.truto.one/unified/hris/timeoff_balances/{id}"
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())
```
