BambooHR is a leading cloud-based human resources software platform tailored for small to medium-sized businesses. It streamlines HR functions by offering a comprehensive suite of features such as employee data management, an applicant tracking system, onboarding tools, time-off management, performance management, and robust reporting and analytics. By centralizing these HR processes, BambooHR significantly reduces the administrative burden on HR teams, thereby enhancing overall productivity and efficiency.
One of the standout features of BambooHR is its employee self-service portal, which empowers employees to manage their own information, request time off, and access important documents, thereby fostering a more engaged and autonomous workforce. Additionally, the BambooHR API plays a crucial role in integrating this platform with other business systems, ensuring seamless data flow and enhancing the functionality of existing HR processes. In the following sections, we will delve deeper into the BambooHR API integration process and explore how it can be leveraged to optimize HR operations.
Key highlights of BambooHR APIs
- Easy Data Access
- Allows interaction with core HR data for retrieval and updates.
- Automation
- Supports automation through programmatic access to data and operations.
- Real-Time Sync
- Supports webhooks for real-time notifications of actions.
- Strong Security
- Provides detailed data access control.
- Scalable
- Designed to handle requests efficiently with rate limiting.
- Developer-Friendly
- RESTful API, familiar to developers.
- Error Handling and Logging
- Requires handling of 503 Service Unavailable responses.
- Detailed Analytics and Reporting
- Part of BambooHR's platform features.
- Sandbox Environment
- Often provided for testing purposes.
BambooHR API Endpoints
Benefits
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/benefits/settings/deduction_types/all : Get Benefit Deduction Types
Employee Dependents
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/employeedependents : Get All Employee Dependents
- PUT https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/employeedependents/{id} : Update An Employee Dependent
Employees
- POST https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/employees/ : Add Employee to BambooHR
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/employees/changed : Gets All Updated Employee Ids
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/employees/changed/tables/{table} : Gets All Updated Employee Table Data
- POST https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/employees/files/categories : Add Employee File Category
- POST https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/employees/{employeeId}/photo : Store A New Employee Photo
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/employees/{employeeId}/photo/{size} : Get An Employee Photo
- PUT https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/employees/{employeeId}/time_off/balance_adjustment/ : Adjust Time Off Balance
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/employees/{employeeId}/time_off/calculator : Estimate Future Time Off Balances
- PUT https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/employees/{employeeId}/time_off/history/ : Add A Time Off History Item For Time Off Request
- PUT https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/employees/{employeeId}/time_off/policies : Assign Time Off Policies For An Employee
- PUT https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/employees/{employeeId}/time_off/request : Add A Time Off Request
- POST https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/employees/{id}/ : Update Employee
- POST https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/employees/{id}/files : Upload Employee File
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/employees/{id}/files/view/ : List Employee Files and Categories
- POST https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/employees/{id}/files/{fileId} : Update Employee File
- POST https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/employees/{id}/tables/employmentStatus : Terminate Employee by Adding Row to Employment Status Table
- POST https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/employees/{id}/tables/{table} : Adds A Table Row
- DELETE https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/employees/{id}/tables/{table}/{rowId} : Deletes A Table Row
Company Files
- POST https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/files : Upload Company File
- POST https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/files/categories : Add Company File Category
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/files/view/ : List Company Files And Categories
- POST https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/files/{fileId} : Update Company File
Login
- POST https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/login : User Login
Meta
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/meta/fields/ : Get A List Of Fields
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/meta/lists/ : Get Details For List Fields
- PUT https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/meta/lists/{listFieldId} : Add Or Update Values For List Fields
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/meta/tables/ : Get A List Of Tabular Fields
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/meta/time_off/policies/ : Get Time Off Policies
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/meta/time_off/types/ : Get Time Off Types
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/meta/users/ : Get A List Of Users
Performance
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/performance/employees/{employeeId}/goals : Get Goals for an Employee
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/performance/employees/{employeeId}/goals/aggregate : Get All Aggregate Goal Info
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/performance/employees/{employeeId}/goals/alignmentOptions : Alignable Goal Options
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/performance/employees/{employeeId}/goals/canCreateGoals : Can Create A Goal
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/performance/employees/{employeeId}/goals/filters : Get Goal Status Counts
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/performance/employees/{employeeId}/goals/shareOptions : Available Goal Sharing Options
- PUT https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/performance/employees/{employeeId}/goals/{goalId} : Update Goal
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/performance/employees/{employeeId}/goals/{goalId}/aggregate : Get Aggregate Goal Info
- POST https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/performance/employees/{employeeId}/goals/{goalId}/close : Close Goal
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/performance/employees/{employeeId}/goals/{goalId}/comments : Get Goal Comments
- DELETE https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/performance/employees/{employeeId}/goals/{goalId}/comments/{commentId} : Delete Goal Comment
- PUT https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/performance/employees/{employeeId}/goals/{goalId}/progress : Update Goal Progress
- POST https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/performance/employees/{employeeId}/goals/{goalId}/reopen : Reopen A Goal
- PUT https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/performance/employees/{employeeId}/goals/{goalId}/sharedWith : Update Goal Sharing
Reports
- POST https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/reports/custom : List all employees
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/reports/{id} : Get Company Report
Time Off
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/time_off/requests/ : Get Time Off Requests
- PUT https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/time_off/requests/{requestId}/status : Change A Request Status
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/time_off/whos_out/ : Get A List Of Who's Out
Time Tracking
- POST https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/time_tracking/clock_entries/delete : Delete Timesheet Clock Entries
- POST https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/time_tracking/clock_entries/store : Add or Edit Timesheet Clock Entries
- POST https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/time_tracking/employees/{employeeId}/clock_in : Add Timesheet Clock-in Entry
- POST https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/time_tracking/employees/{employeeId}/clock_out : Add Timesheet Clock-out Entry
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/time_tracking/employees/{employeeId}/projects : Get Employee Projects
- POST https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/time_tracking/hour_entries/delete : Delete Timesheet Hour Entries
- POST https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/time_tracking/hour_entries/store : Add or Edit Timesheet Hour Entries
- POST https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/time_tracking/projects : Create A Time Tracking Project
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/time_tracking/timesheet_entries : Get Timesheet Entries
- POST https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/timetracking/add : Add An Hour Record
- PUT https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/timetracking/adjust : Edit An Hour Record
- DELETE https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/timetracking/delete/{id} : Delete An Hour Record
- POST https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/timetracking/record : Bulk Add or Edit Hour Records
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/timetracking/record/{id} : Get an Hour Record
Training
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/training/category : List Training Categories
- DELETE https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/training/category/{trainingCategoryId} : Delete Training Category
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/training/record/employee/{employeeId} : List Employee Trainings
- DELETE https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/training/record/{employeeTrainingRecordId} : Delete Employee Training Record
- POST https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/training/type : Add Training Type
- PUT https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/training/type/{trainingTypeId} : Update Training Type
Webhooks
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/webhooks/ : Gets List Of Webhooks For The User API Key
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/webhooks/monitor_fields : Get Monitor Fields
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/webhooks/{id}/ : Get Webhook
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1/webhooks/{id}/log : Get Webhook Logs
Version 1.1
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1_1/employees/{employeeId}/time_off/policies : Assign Time Off Policies For An Employee
- GET https://api.bamboohr.com/api/gateway.php/{companyDomain}/v1_1/performance/employees/{employeeId}/goals/filters : Get Goal Status Counts Version 1.1
BambooHR API FAQs
- How do I generate an API key in BambooHR?
- Answer: To generate an API key in BambooHR, log in to your account and click your name in the upper right-hand corner to access the user context menu. If you have sufficient permissions, select "API Keys" from the menu. On the API Keys page, click "Add New Key," provide a name for the key, and then click "Generate Key." Once generated, copy the key and store it securely, as it will not be displayed again.
- Source: Getting Started With The API - BambooHR
- What authentication method does the BambooHR API use?
- Answer: The BambooHR API uses HTTP Basic Authentication. When making API requests, use the API key as the username and any random string as the password. Include these credentials in the 'Authorization' header of your HTTP requests.
- Source: Getting Started With The API - BambooHR
- Are there rate limits for the BambooHR API?
- Answer: Yes, the BambooHR API enforces rate limits to ensure fair usage and system stability. If requests are deemed too frequent, the API may throttle them, resulting in a 503 Service Unavailable response. It's recommended to implement error handling in your application to manage such responses appropriately.
- Source: Technical Overview - BambooHR
- Can I retrieve employee data using the BambooHR API?
- Answer: Yes, you can retrieve employee data using the BambooHR API. To get data for a specific employee, make a GET request to the endpoint
/v1/employees/{id}/
, where{id}
is the employee's ID. You can specify which fields to retrieve by including a comma-separated list of field names in thefields
query parameter. - Source: Get Employee - BambooHR
- Answer: Yes, you can retrieve employee data using the BambooHR API. To get data for a specific employee, make a GET request to the endpoint
- Does the BambooHR API support webhooks?
- Answer: As of the latest available information, BambooHR supports two types of webhooks - global and permissioned. Global webhooks work on a subset of fields with open access while permissioned webhooks enable all fields but access is restricted via access control. You can also use third party service providers like Knit which provide virtual webhooks even for fields not supported natively by the BambooHR API for webhook functinality.
- Source: Webhooks - BambooHR
Get Started with BambooHR API Integration
For quick and seamless integration with BambooHR API, Knit API offers a convenient solution. It’s AI powered integration platform allows you to build any BambooHR API Integration use case. By integrating with Knit just once, you can integrate with multiple other ATS, HRIS, Payroll and other systems in one go with a unified approach. Knit takes care of all the authentication, authorization, and ongoing integration maintenance. This approach not only saves time but also ensures a smooth and reliable connection to BambooHR API.
To sign up for free, click here. To check the pricing, see our pricing page.