---
title: "Approve Time Off Request"
method: POST
path: "/api/v1/time-off/requests/{id}/approvals"
tags: ["Time Off", "Public API"]
---

# Approve Time Off Request

`POST /api/v1/time-off/requests/{id}/approvals`

## Request

- Base URL: `https://companySubDomain.bamboohr.com`
- URL: `https://companySubDomain.bamboohr.com/api/v1/time-off/requests/{id}/approvals`
- Auth: one of:
  - HTTP basic
  - OAuth 2
    - Authorization code: `/authorize.php`
    - Token URL: `/token.php` scopes: `time_off:requests.write`
- TypeScript: <https://skmtc.dev/bamboohr/apis/bamboohr-api/docs/api/v1/time-off/requests/:id/approvals/post.ts> (a function with typed inputs; its response is checked against the schema)

Approves a time off request. Completes the caller's step in the approval chain, or every remaining step when `bypass` is true. Returns the updated time off request, which remains in REQUESTED status when further approvals are still outstanding.

OAuth Scopes: time_off:requests.write

## Path parameters

- `id` integer, required

## Query parameters

- `returnActions` boolean

## Request body

- TimeOffCreateApprovalV1: Data contract for approving a time off request. All fields are optional.
  - `managerNote` string, nullable: An optional note recorded on the request by the approver. Maximum 1024 characters.
  - `bypass` boolean: When true, completes every remaining approval step instead of only the caller's. Requires authority to bypass the remaining approvers.

## Response `200`

The updated time off request.

- TimeOffRequestV1: A request of time off to be taken by an employee.
  - `id` integer: The unique identifier for the time off request.
  - `employeeId` integer: The id of the employee requesting time off.
  - `categoryId` integer: The id of the time off category for the request.
  - `startDate` string, date: The date the time off starts, in ISO 8601 format (YYYY-MM-DD).
  - `endDate` string, date: The date the time off ends, in ISO 8601 format (YYYY-MM-DD).
  - `amount` number: The amount of time off requested, measured in the unit defined by the time off category (e.g. 3.5 days if the unit is days, or 3.5 hours if the unit is hours).
  - `unit` 'HOURS' | 'DAYS': The unit of measurement for the time off request.
  - `status` 'REQUESTED' | 'APPROVED' | 'DENIED' | 'CANCELED': The status of the time off request.
  - `requestedAt` string, date-time: UTC timestamp when the time off request was requested.
  - `dailyAmounts` TimeOffRequestDailyAmountV1[]: The amount of time off requested per day.
    - `date` string, date: The date, in ISO 8601 format (YYYY-MM-DD).
    - `amount` number: The amount of time off requested on this day, measured in the request unit.
  - `employeeNote` string, nullable: The free-form note left by the employee who requested the time off. Null when never set.
  - `managerNote` string, nullable: The manager's note left when the request was approved or denied. Null when never set.
  - `statusUpdatedAt` string, date-time, nullable: UTC timestamp when the status was last updated. Null when the status has never changed.
  - `statusUpdatedBy` integer, nullable: The id of the user who last updated the status. Null when the status has never changed.
  - `_links` object: The state transitions available to the caller for this request. Only present when the request was made with `returnActions=true`. `self` is always present when the block is returned, and the absence of a transition is authoritative: calling it anyway returns 403 or 409.

## Other responses

- `400`: Malformed request body.
- `401`: Unauthorized. Missing or invalid authentication.
- `403`: Forbidden. The caller cannot approve this time off request.
- `404`: The time off request does not exist.
- `409`: The request is not in REQUESTED status, or approving it would bypass remaining approvers.
- `422`: Invalid request data (e.g. an over-long manager note or a non-boolean bypass), or the employment provider rejected the change.

## Changes

- **2026-11-03** `922fc15f43a7`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/bamboohr/apis/bamboohr-api/changes/api/v1/time-off/requests/:id/approvals/post.md)

---

[API](https://skmtc.dev/bamboohr/apis/bamboohr-api.md) - [All operations](https://skmtc.dev/bamboohr/apis/bamboohr-api/llms.txt) - [OpenAPI document](https://skmtc.dev/bamboohr/apis/bamboohr-api/revisions/922fc15f43a7?raw)
