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

ActionWhat it does
Approve or deny time offApprove, deny or cancel an existing BambooHR time off request.
Create a time off requestRequest time off for an employee.
Create an employeeAdd a new employee to BambooHR.
Delete an employeePermanently delete a BambooHR employee and everything attached to them.
Get an employeeFetch one BambooHR employee's record by their internal employee ID.
Get company informationFetch your company's BambooHR profile: legal name, display name, address and phone number.
Get employee table dataRead one of an employee's history tables: job info, compensation, employment status, emergency contacts and the rest.
Get the employee directoryFetch your company's published BambooHR employee directory: who everyone is, their job title, department and work contact details.
Get time off balancesWork out how much time off an employee has left, as of today or a date you choose.
List changed employeesList the employees whose records were added, updated or deleted since a given moment: the way to keep another system in step with BambooHR.
List employeesList the employees in your BambooHR account, optionally filtered to one field's value and sorted, a page at a time.
List fieldsList every employee field this BambooHR account has, custom fields included: the names the other steps accept.
List reportsList the saved custom reports in your BambooHR account, so a later step can run one.
List time off policiesList the account's time off policies and which type of time off each one accrues.
List time off requestsList the time off requests that overlap a date range, optionally narrowed to one employee, type or status.
List time off typesList the kinds of time off this account tracks and the unit each is measured in.
List usersList the people with a BambooHR login, and which employee record each one belongs to.
List who's outSee who is away between two dates, company holidays included.
Run a reportRun one of your saved BambooHR reports and return its rows.
Update an employeeChange 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 IDrequest_idtextRequired
The time off request to act on, from 'List time off requests'.
New statusstatustextRequired
What to set the request to.One of: approved, denied, canceled.
Notenotetext
A note explaining the decision.

Outputs

notetext
request_idtext
statustext
updatedtrue/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 IDemployee_idtextRequired
The internal BambooHR employee ID, as returned by 'List employees'. This is not the editable Employee # shown on a profile.
First day offstartdateRequired
The first day of the absence.
Last day offenddateRequired
The last day of the absence.
Time off typetime_off_type_idtextRequired
Which kind of time off this is.
Amountamountnumber
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.
Statusstatustext
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.
Notenotetext
A note to attach to the request.

Outputs

employee_idtext
requestobject
request_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 namefirst_nametextRequired
The employee's first name.
Last namelast_nametextRequired
The employee's last name.
Work emailwork_emailtext
The employee's work email. BambooHR rejects one that another employee already has.
Job titlejob_titletext
The employee's job title.
Departmentdepartmenttext
The department the employee belongs to.
Divisiondivisiontext
The division the employee belongs to.
Locationlocationtext
The location the employee works from.
Hire datehire_datedate
The day the employee started.
Mobile phonemobile_phonetext
The employee's mobile number.
Other fieldsextra_fieldsobject
Any other BambooHR field, by its field name, including this account's custom ones. Run 'List fields' to see every name.

Outputs

employeeobject
employee_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 IDemployee_idtextRequired
The internal BambooHR employee ID, as returned by 'List employees'. This is not the editable Employee # shown on a profile.

Outputs

deletedtrue/false
employee_idtext
Example output
{
  "deleted": true,
  "employee_id": "43"
}

Get an employee

Fetch one BambooHR employee's record by their internal employee ID.

Inputs

Employee IDemployee_idtextRequired
The internal BambooHR employee ID, as returned by 'List employees'. This is not the editable Employee # shown on a profile.
Fieldsfieldslist
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 valuesonly_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 IDemployee_idtextRequired
The internal BambooHR employee ID, or 'all' to read the table for every employee this connection can see.
TabletabletextRequired
Which of the employee's tables to read.

Outputs

countnumber
employee_idtext
rowslist
tabletext
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 employeesonly_currenttrue/false
Turn off to also include people whose hire date is still in the future.Default: true.

Outputs

countnumber
employeeslist
fieldslist
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 IDemployee_idtextRequired
The internal BambooHR employee ID, as returned by 'List employees'. This is not the editable Employee # shown on a profile.
As ofas_ofdate
The date to calculate the balance for. A future date projects the balance forward. Defaults to today.
Decimal placesprecisionnumber
How precisely to round the balances.From 0 to 4.

Outputs

balanceslist
countnumber
employee_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 sincesincedate 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 typechange_typetext
Which kind of change to report.One of: all (All changes), inserted (Added), updated, deleted. Default: all.

Outputs

countnumber
employeeslist
latesttext
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 fieldsfieldslist
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 fieldfilter_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 valuefilter_valuetext
The value the chosen field has to match.
Only these employee IDsemployee_idslist
Look up specific employees by their internal IDs instead of listing everyone.
Sort bysorttext
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 pagelimitnumber
How many employees to return in one page.From 1 to 2500. Default: 100.
Next page cursorcursortext
The 'next_cursor' from a previous run of this step, to fetch the following page.

Outputs

countnumber
employeeslist
has_moretrue/false
next_cursortext
totalnumber
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

countnumber
fieldslist
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

Pagepagenumber
Which page of reports to return.At least 1. Default: 1.
Reports per pagepage_sizenumber
How many reports to return in one page.From 1 to 1000. Default: 100.

Outputs

countnumber
has_moretrue/false
pagenumber
reportslist
totalnumber
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

countnumber
policieslist
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

FromstartdateRequired
The start of the window. A request is included when it is still running on this date, even if it began earlier.
ToenddateRequired
The end of the window. A request is included when it has begun by this date, even if it runs on past it.
Employee IDemployee_idtext
Only this employee's requests.
Request IDrequest_idtext
Only this one request.
Time off typestype_idslist
Only requests of these kinds of time off.
Statusesstatuseslist
Only requests in these states.One or more of: requested, approved, denied, canceled, superceded (Superseded).
Scopescopetext
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 notesexclude_notestrue/false
Turn on to omit the employee and manager notes from each request.Default: false.

Outputs

countnumber
requestslist
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 requestrequestable_onlytrue/false
Limit the list to the types the connected user is allowed to request time off under.Default: false.

Outputs

countnumber
default_hourslist
time_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 statusstatuslist
Only report users whose login is in one of these states. Leave empty for all of them.One or more of: enabled, disabled.

Outputs

countnumber
userslist
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

FromstartdateRequired
The first day of the window.
ToenddateRequired
The last day of the window, at most 366 days after the first.
Employee IDemployee_idtext
Only this employee's time away.
Only my direct reportsdirect_reports_onlytrue/false
Limit the answer to the connected user's direct reports.Default: false.
Include people detailsinclude_peopletrue/false
Also return each absent employee's name and photo alongside the entries.Default: false.
Pagepagenumber
Which page of results to return.At least 1. Default: 1.
Results per pagepage_sizenumber
How many entries to return in one page.From 1 to 1000. Default: 100.

Outputs

countnumber
entrieslist
has_moretrue/false
pagenumber
peopleobject
totalnumber
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

Reportreport_idtextRequired
Which saved report to run.
Duplicate rowsdeduplicatetext
Whether to collapse rows that are identical. BambooHR removes them by default.One of: yes (Remove duplicate rows), no (Keep every row).
Only current valuesonly_currenttrue/false
Turn off to include future-dated values from the history tables.Default: true.

Outputs

countnumber
fieldslist
report_idtext
rowslist
titletext
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 IDemployee_idtextRequired
The internal BambooHR employee ID, as returned by 'List employees'. This is not the editable Employee # shown on a profile.
First namefirst_nametext
A new first name, if it is changing.
Last namelast_nametext
A new last name, if it is changing.
Work emailwork_emailtext
A new work email, if it is changing.
Job titlejob_titletext
A new job title, if it is changing.
Departmentdepartmenttext
A new department, if it is changing.
Divisiondivisiontext
A new division, if it is changing.
Locationlocationtext
A new location, if it is changing.
Mobile phonemobile_phonetext
A new mobile number, if it is changing.
Other fieldsextra_fieldsobject
Any other BambooHR field to set, by its field name, including this account's custom ones.

Outputs

employeeobject
employee_idtext
read_backtrue/false
updated_fieldslist
Example output
{
  "employee": {
    "id": "42",
    "jobTitle": "Staff Engineer"
  },
  "employee_id": "42",
  "read_back": true,
  "updated_fields": [
    "jobTitle"
  ]
}

On this page