BambooHR
App · Jobs & Hiring · 20 actions
Manage your BambooHR employee records, time off, and reports: look people up, keep their details current, and see who is out.
Actions
| Action | What it does |
|---|---|
| Approve or deny time off | Approve, deny or cancel an existing BambooHR time off request. |
| Create a time off request | Request time off for an employee. |
| Create an employee | Add a new employee to BambooHR. |
| Delete an employee | Permanently delete a BambooHR employee and everything attached to them. |
| Get an employee | Fetch one BambooHR employee's record by their internal employee ID. |
| Get company information | Fetch your company's BambooHR profile: legal name, display name, address and phone number. |
| Get employee table data | Read one of an employee's history tables: job info, compensation, employment status, emergency contacts and the rest. |
| Get the employee directory | Fetch your company's published BambooHR employee directory: who everyone is, their job title, department and work contact details. |
| Get time off balances | Work out how much time off an employee has left, as of today or a date you choose. |
| List changed employees | List the employees whose records were added, updated or deleted since a given moment: the way to keep another system in step with BambooHR. |
| List employees | List the employees in your BambooHR account, optionally filtered to one field's value and sorted, a page at a time. |
| List fields | List every employee field this BambooHR account has, custom fields included: the names the other steps accept. |
| List reports | List the saved custom reports in your BambooHR account, so a later step can run one. |
| List time off policies | List the account's time off policies and which type of time off each one accrues. |
| List time off requests | List the time off requests that overlap a date range, optionally narrowed to one employee, type or status. |
| List time off types | List the kinds of time off this account tracks and the unit each is measured in. |
| List users | List the people with a BambooHR login, and which employee record each one belongs to. |
| List who's out | See who is away between two dates, company holidays included. |
| Run a report | Run one of your saved BambooHR reports and return its rows. |
| Update an employee | Change fields on an existing BambooHR employee, then read the updated record back. |
Approve or deny time off
Approve, deny or cancel an existing BambooHR time off request.
Inputs
- Request ID
request_idtextRequired - The time off request to act on, from 'List time off requests'.
- New status
statustextRequired - What to set the request to.One of:
approved,denied,canceled. - Note
notetext - A note explaining the decision.
Outputs
notetextrequest_idtextstatustextupdatedtrue/false
Example output
{
"note": "Have a good break.",
"request_id": "902",
"status": "approved",
"updated": true
}Create a time off request
Request time off for an employee. They have to be on a policy for the type you choose.
Inputs
- Employee ID
employee_idtextRequired - The internal BambooHR employee ID, as returned by 'List employees'. This is not the editable Employee # shown on a profile.
- First day off
startdateRequired - The first day of the absence.
- Last day off
enddateRequired - The last day of the absence.
- Time off type
time_off_type_idtextRequired - Which kind of time off this is.
- Amount
amountnumber - How much time off, in the unit the chosen type is measured in, usually hours. Must be more than zero. Leave empty to let BambooHR work it out from the dates.From 0.0 to 10000.0.
- Status
statustext - What state to create the request in. Approving it outright needs the connected user to have that permission.One of:
requested,approved,denied. Default:requested. - Note
notetext - A note to attach to the request.
Outputs
employee_idtextrequestobjectrequest_idtext
Example output
{
"employee_id": "42",
"request": {
"amount": {
"amount": 16,
"unit": "hours"
},
"employeeId": "42",
"end": "2026-11-03",
"id": "902",
"name": "Ada Lovelace",
"start": "2026-11-02",
"status": {
"status": "requested"
},
"type": {
"id": "78",
"name": "Vacation"
}
},
"request_id": "902"
}Create an employee
Add a new employee to BambooHR. Work emails have to be unique across the account.
Inputs
- First name
first_nametextRequired - The employee's first name.
- Last name
last_nametextRequired - The employee's last name.
- Work email
work_emailtext - The employee's work email. BambooHR rejects one that another employee already has.
- Job title
job_titletext - The employee's job title.
- Department
departmenttext - The department the employee belongs to.
- Division
divisiontext - The division the employee belongs to.
- Location
locationtext - The location the employee works from.
- Hire date
hire_datedate - The day the employee started.
- Mobile phone
mobile_phonetext - The employee's mobile number.
- Other fields
extra_fieldsobject - Any other BambooHR field, by its field name, including this account's custom ones. Run 'List fields' to see every name.
Outputs
employeeobjectemployee_idtext
Example output
{
"employee": {
"displayName": "Grace Hopper",
"firstName": "Grace",
"id": "43",
"lastName": "Hopper",
"workEmail": "grace@example.com"
},
"employee_id": "43"
}Delete an employee
Permanently delete a BambooHR employee and everything attached to them. This cannot be undone.
Inputs
- Employee ID
employee_idtextRequired - The internal BambooHR employee ID, as returned by 'List employees'. This is not the editable Employee # shown on a profile.
Outputs
deletedtrue/falseemployee_idtext
Example output
{
"deleted": true,
"employee_id": "43"
}Get an employee
Fetch one BambooHR employee's record by their internal employee ID.
Inputs
- Employee ID
employee_idtextRequired - The internal BambooHR employee ID, as returned by 'List employees'. This is not the editable Employee # shown on a profile.
- Fields
fieldslist - Which fields to return. Leave empty for the standard identity and job fields. Run 'List fields' to see every name this account has.
- Only current values
only_currenttrue/false - Turn off to include future-dated rows from the history tables (job, compensation, status).Default:
true.
Outputs
employeeobject
Example output
{
"employee": {
"department": "Engineering",
"displayName": "Ada Lovelace",
"firstName": "Ada",
"hireDate": "2024-03-01",
"id": "42",
"jobTitle": "Software Engineer",
"lastName": "Lovelace",
"workEmail": "ada@example.com"
}
}Get company information
Fetch your company's BambooHR profile: legal name, display name, address and phone number.
Inputs
None.
Outputs
companyobject
Example output
{
"company": {
"address": {
"city": "Lindon",
"line1": "1 Example Way",
"state": "UT",
"zip": "84042"
},
"displayName": "Acme",
"legalName": "Acme Corporation",
"phone": "+1 555 0100"
}
}Get employee table data
Read one of an employee's history tables: job info, compensation, employment status, emergency contacts and the rest.
Inputs
- Employee ID
employee_idtextRequired - The internal BambooHR employee ID, or 'all' to read the table for every employee this connection can see.
- Table
tabletextRequired - Which of the employee's tables to read.
Outputs
countnumberemployee_idtextrowslisttabletext
Example output
{
"count": 1,
"employee_id": "42",
"rows": [
{
"date": "2024-03-01",
"department": "Engineering",
"employeeId": "42",
"id": "1",
"jobTitle": "Software Engineer"
}
],
"table": "jobInfo"
}Get the employee directory
Fetch your company's published BambooHR employee directory: who everyone is, their job title, department and work contact details.
Inputs
- Only current employees
only_currenttrue/false - Turn off to also include people whose hire date is still in the future.Default:
true.
Outputs
countnumberemployeeslistfieldslist
Example output
{
"count": 1,
"employees": [
{
"department": "Engineering",
"displayName": "Ada Lovelace",
"id": "42",
"jobTitle": "Software Engineer",
"workEmail": "ada@example.com"
}
],
"fields": [
{
"id": "displayName",
"name": "Display Name",
"type": "text"
}
]
}Get time off balances
Work out how much time off an employee has left, as of today or a date you choose.
Inputs
- Employee ID
employee_idtextRequired - The internal BambooHR employee ID, as returned by 'List employees'. This is not the editable Employee # shown on a profile.
- As of
as_ofdate - The date to calculate the balance for. A future date projects the balance forward. Defaults to today.
- Decimal places
precisionnumber - How precisely to round the balances.From 0 to 4.
Outputs
balanceslistcountnumberemployee_idtext
Example output
{
"balances": [
{
"balance": "62.50",
"end": "2026-09-03",
"name": "Vacation",
"policyType": "accruing",
"timeOffType": "78",
"units": "hours",
"usedYearToDate": "16.00"
}
],
"count": 1,
"employee_id": "42"
}List changed employees
List the employees whose records were added, updated or deleted since a given moment: the way to keep another system in step with BambooHR.
Inputs
- Changed since
sincedate and timeRequired - Only report employees changed after this moment. Use the 'latest' value from the last run to pick up where it left off.
- Change type
change_typetext - Which kind of change to report.One of:
all(All changes),inserted(Added),updated,deleted. Default:all.
Outputs
countnumberemployeeslistlatesttext
Example output
{
"count": 1,
"employees": [
{
"action": "Updated",
"id": "42",
"lastChanged": "2026-09-01T12:00:00+00:00"
}
],
"latest": "2026-09-01T12:00:00+00:00"
}List employees
List the employees in your BambooHR account, optionally filtered to one field's value and sorted, a page at a time.
Inputs
- Extra fields
fieldslist - Extra employee fields to include beyond the standard identity and job ones, by BambooHR field name, for example workEmail or hireDate. Run 'List fields' to see every name this account has.
- Filter on field
filter_fieldtext - Narrow the list to employees whose chosen field matches 'Filter value'.One of:
firstName(First name),lastName(Last name),preferredName(Preferred name),jobTitleName(Job title),status(Employment status),workEmail(Work email),departmentName(Department),divisionName(Division),locationName(Location). - Filter value
filter_valuetext - The value the chosen field has to match.
- Only these employee IDs
employee_idslist - Look up specific employees by their internal IDs instead of listing everyone.
- Sort by
sorttext - The order the employees come back in.One of:
lastName(Last name (A-Z)),-lastName(Last name (Z-A)),firstName(First name (A-Z)),-firstName(First name (Z-A)),employeeId(Employee ID (ascending)),-employeeId(Employee ID (descending)),jobTitleName(Job title (A-Z)),-jobTitleName(Job title (Z-A)),status(Status (A-Z)),-status(Status (Z-A)). - Employees per page
limitnumber - How many employees to return in one page.From 1 to 2500. Default:
100. - Next page cursor
cursortext - The 'next_cursor' from a previous run of this step, to fetch the following page.
Outputs
countnumberemployeeslisthas_moretrue/falsenext_cursortexttotalnumber
Example output
{
"count": 1,
"employees": [
{
"departmentName": "Engineering",
"displayName": "Ada Lovelace",
"employeeId": "42",
"firstName": "Ada",
"jobTitleName": "Software Engineer",
"lastName": "Lovelace",
"status": "Active",
"workEmail": "ada@example.com"
}
],
"has_more": false,
"next_cursor": null,
"total": 1
}List fields
List every employee field this BambooHR account has, custom fields included: the names the other steps accept.
Inputs
None.
Outputs
countnumberfieldslist
Example output
{
"count": 1,
"fields": [
{
"alias": "firstName",
"deprecated": false,
"id": "1",
"name": "First name",
"type": "text"
}
]
}List reports
List the saved custom reports in your BambooHR account, so a later step can run one.
Inputs
- Page
pagenumber - Which page of reports to return.At least 1. Default:
1. - Reports per page
page_sizenumber - How many reports to return in one page.From 1 to 1000. Default:
100.
Outputs
countnumberhas_moretrue/falsepagenumberreportslisttotalnumber
Example output
{
"count": 1,
"has_more": false,
"page": 1,
"reports": [
{
"id": 128,
"name": "Headcount by department"
}
],
"total": 1
}List time off policies
List the account's time off policies and which type of time off each one accrues.
Inputs
None.
Outputs
countnumberpolicieslist
Example output
{
"count": 1,
"policies": [
{
"id": 12,
"name": "Standard vacation",
"timeOffTypeId": 78,
"type": "accruing"
}
]
}List time off requests
List the time off requests that overlap a date range, optionally narrowed to one employee, type or status.
Inputs
- From
startdateRequired - The start of the window. A request is included when it is still running on this date, even if it began earlier.
- To
enddateRequired - The end of the window. A request is included when it has begun by this date, even if it runs on past it.
- Employee ID
employee_idtext - Only this employee's requests.
- Request ID
request_idtext - Only this one request.
- Time off types
type_idslist - Only requests of these kinds of time off.
- Statuses
statuseslist - Only requests in these states.One or more of:
requested,approved,denied,canceled,superceded(Superseded). - Scope
scopetext - Whose requests to report, from the connected user's point of view.One of:
view(Requests the caller can view),approve(Requests the caller can approve),myRequests(Only the caller's own requests). - Leave out notes
exclude_notestrue/false - Turn on to omit the employee and manager notes from each request.Default:
false.
Outputs
countnumberrequestslist
Example output
{
"count": 1,
"requests": [
{
"amount": {
"amount": 40,
"unit": "hours"
},
"employeeId": "42",
"end": "2026-10-09",
"id": "901",
"name": "Ada Lovelace",
"start": "2026-10-05",
"status": {
"status": "approved"
},
"type": {
"id": "78",
"name": "Vacation"
}
}
]
}List time off types
List the kinds of time off this account tracks and the unit each is measured in.
Inputs
- Only types I can request
requestable_onlytrue/false - Limit the list to the types the connected user is allowed to request time off under.Default:
false.
Outputs
countnumberdefault_hourslisttime_off_typeslist
Example output
{
"count": 1,
"default_hours": [
{
"amount": "8",
"name": "Vacation"
}
],
"time_off_types": [
{
"id": "78",
"name": "Vacation",
"units": "hours"
}
]
}List users
List the people with a BambooHR login, and which employee record each one belongs to.
Inputs
- Account status
statuslist - Only report users whose login is in one of these states. Leave empty for all of them.One or more of:
enabled,disabled.
Outputs
countnumberuserslist
Example output
{
"count": 1,
"users": [
{
"email": "ada@example.com",
"employeeId": "42",
"firstName": "Ada",
"id": "7",
"lastName": "Lovelace",
"status": "enabled"
}
]
}List who's out
See who is away between two dates, company holidays included. The range can span at most 366 days.
Inputs
- From
startdateRequired - The first day of the window.
- To
enddateRequired - The last day of the window, at most 366 days after the first.
- Employee ID
employee_idtext - Only this employee's time away.
- Only my direct reports
direct_reports_onlytrue/false - Limit the answer to the connected user's direct reports.Default:
false. - Include people details
include_peopletrue/false - Also return each absent employee's name and photo alongside the entries.Default:
false. - Page
pagenumber - Which page of results to return.At least 1. Default:
1. - Results per page
page_sizenumber - How many entries to return in one page.From 1 to 1000. Default:
100.
Outputs
countnumberentrieslisthas_moretrue/falsepagenumberpeopleobjecttotalnumber
Example output
{
"count": 1,
"entries": [
{
"employeeId": 42,
"end": "2026-10-09",
"id": "901",
"name": "Ada Lovelace",
"start": "2026-10-05",
"type": "timeOff"
}
],
"has_more": false,
"page": 1,
"people": {},
"total": 1
}Run a report
Run one of your saved BambooHR reports and return its rows.
Inputs
- Report
report_idtextRequired - Which saved report to run.
- Duplicate rows
deduplicatetext - Whether to collapse rows that are identical. BambooHR removes them by default.One of:
yes(Remove duplicate rows),no(Keep every row). - Only current values
only_currenttrue/false - Turn off to include future-dated values from the history tables.Default:
true.
Outputs
countnumberfieldslistreport_idtextrowslisttitletext
Example output
{
"count": 1,
"fields": [
{
"id": "displayName",
"name": "Display Name",
"type": "text"
}
],
"report_id": "128",
"rows": [
{
"displayName": "Ada Lovelace",
"id": "42"
}
],
"title": "Headcount by department"
}Update an employee
Change fields on an existing BambooHR employee, then read the updated record back.
Inputs
- Employee ID
employee_idtextRequired - The internal BambooHR employee ID, as returned by 'List employees'. This is not the editable Employee # shown on a profile.
- First name
first_nametext - A new first name, if it is changing.
- Last name
last_nametext - A new last name, if it is changing.
- Work email
work_emailtext - A new work email, if it is changing.
- Job title
job_titletext - A new job title, if it is changing.
- Department
departmenttext - A new department, if it is changing.
- Division
divisiontext - A new division, if it is changing.
- Location
locationtext - A new location, if it is changing.
- Mobile phone
mobile_phonetext - A new mobile number, if it is changing.
- Other fields
extra_fieldsobject - Any other BambooHR field to set, by its field name, including this account's custom ones.
Outputs
employeeobjectemployee_idtextread_backtrue/falseupdated_fieldslist
Example output
{
"employee": {
"id": "42",
"jobTitle": "Staff Engineer"
},
"employee_id": "42",
"read_back": true,
"updated_fields": [
"jobTitle"
]
}