Everything an AI agent can do with the HiBob API.

A reference guide for building AI agents: every method, how to authenticate, and the permissions each one needs.

Endpoints27
API versionv1
Last updated23 June 2026
Orientation

How the HiBob API works.

The HiBob API is how an app or AI agent works with a Bob HR account: searching and reading employee records, updating fields and creating people, submitting and reading time off, and pulling reports and company lists. Access is authenticated as a service user, and what it can see or change is decided entirely by the permission groups that service user belongs to, with no per-endpoint scopes on top. HiBob can also push events to a webhook URL when an employee record changes.

27Endpoints
8Capability groups
14Read
13Write
14Permissions
Authentication
Calls authenticate as an API service user using Basic authentication. The service user's ID and token are joined with a colon, Base64-encoded, and sent in the Authorization header as 'Authorization: Basic '. A service user is not a real employee and cannot log in to Bob; it exists only to authenticate API requests. The older API Access Token method was discontinued on 31 October 2024, leaving service users as the only method.
Permissions
There are no per-endpoint scopes. A service user starts with no access, and what it can read or change is set by the permission groups it is added to. A group grants three kinds of permission: which Bob features it can use, which people-data sections it can view, view history of, or edit, and which employees those rights apply to, whether everyone, by condition, or by named people. The permission group is the access boundary, so a request that the group does not allow is refused even though the endpoint exists.
Versioning
There is a single v1 API and no dated version header to pin. Changes ship through the dated changelog, where an endpoint due for removal is announced with a cutoff date and a replacement. Notably, the bulk 'read all employees' and 'read employee by ID' endpoints were retired on 31 March 2024 in favor of the POST /people/search endpoint, which returns chosen fields for many employees in one call.
Data model
The API is resource-oriented JSON over HTTPS at https://api.hibob.com/v1. People are the core resource at /people, with nested history tables for employment, work, salaries, equity, training, and bank accounts under /people/{id}. Time off lives under /timeoff, tasks under /tasks, documents under /docs-people/{id}, reports under /company/reports, and configuration such as fields and named lists under /company. Most read endpoints that return many records, including employee search and salaries, use a POST search body rather than query parameters.
Connect & authenticate

Connection & authentication methods.

How an app or AI agent connects to HiBob determines what it can reach. Calls are authenticated as a service user, and what that service user can see and change is set by the permission groups it belongs to.

Ways to connect

REST API

The REST API answers at https://api.hibob.com/v1. It serves a single v1 API with no dated version header, and changes ship through the dated changelog.

Best forConnecting an app or AI agent to HiBob.
Governed byThe service user and the permission groups it belongs to.
Docs ↗

MCP server (Model Context Protocol)

HiBob's first-party MCP server lets an agent call Bob through the Model Context Protocol to read information and perform actions across people, time off, and tasks. It launched in beta on 28 April 2026, with the remote endpoint at https://mcp.hibob.com/mcp/public and a sandbox at https://mcp.sandbox.hibob.com/mcp/public. It authenticates with a Bob service user, so its reach is the same permission boundary as the REST API. The source is at github.com/hibobio/hibob-public-mcp.

Best forConnecting an AI assistant to HiBob.
Governed byThe service user and the permission groups it belongs to.
Docs ↗

Webhooks

Webhooks deliver the chosen employee events to a receiver URL configured in Bob, including scheduled changes that fire at midnight in the site timezone on their effective date.

Best forConnecting an app or AI agent to HiBob.
Governed byThe service user and the permission groups it belongs to.
Docs ↗
Authentication

API service user

An API service user is a non-login identity created in Bob to authenticate API calls. Its ID and token are joined with a colon, Base64-encoded, and sent in the Authorization header as Basic credentials. What it can read or change is set entirely by the permission groups it is added to, not by scopes on the token. This is the only supported method since 31 October 2024.

TokenService user ID and token (Basic)
Best forAll current HiBob API access
Docs ↗

API access token (discontinued)

The legacy API access token authenticated calls as the admin who created it. New tokens could not be created after 31 May 2024, and the method was discontinued entirely on 31 October 2024 in favor of service users.

TokenAPI access token (legacy)
Best forNo longer available
Docs ↗
Capability map

What an AI agent can do in HiBob.

The HiBob API is split into areas an agent can act on, such as employee records, time off, tasks, documents, payroll, reports, and company lists. Each area reads or writes real people data, and the service user's permission groups decide which of it is reachable.

Endpoint reference

Every HiBob API method.

Filter by method, access, or permission, or search any path. Select a row for version detail, rate limits, the related webhook event, and the source.

MethodEndpointWhat it doesAccessPermissionVersion

People & employees

Search employees, create and update employee records, change a work email, terminate, invite, and set a start date.8

The service user needs view permission on each requested field's category, and the audience is limited to employees the permission group can see. Returns only currently employed people unless showInactive is set. Replaced the retired read-all and read-by-id endpoints.

Acts onemployee
Permission (capability)People: view
VersionAvailable since the API’s base version
Webhook eventNone
Rate limit50 requests per minute

Requires view permission on the requested field categories for an employee the permission group can see.

Acts onemployee
Permission (capability)People: view
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Needs edit permission on the relevant people-data sections. Newly created data can take up to about 20 seconds to appear in a following read.

Acts onemployee
Permission (capability)People: edit
VersionAvailable since the API’s base version
Webhook eventemployee-created
Rate limitStandard limits apply

Needs edit permission on the field categories being changed. Returns 304 when nothing changed, so the right field IDs must be sent.

Acts onemployee
Permission (capability)People: edit
VersionAvailable since the API’s base version
Webhook eventemployee-updated
Rate limitStandard limits apply

Needs edit permission on the employee's contact section.

Acts onemployee
Permission (capability)People: edit
VersionAvailable since the API’s base version
Webhook eventemployee-updated
Rate limitStandard limits apply

Needs edit permission on the lifecycle section. Termination triggers the lifecycle webhook for an employee leaving.

Acts onemployee
Permission (capability)People: edit
VersionAvailable since the API’s base version
Webhook eventemployee-left
Rate limitStandard limits apply

Needs edit permission on the employee. Granting access can fire the lifecycle event for an employee joining.

Acts onemployee
Permission (capability)People: edit
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Needs edit permission on the employment section.

Acts onemployee
Permission (capability)People: edit
VersionAvailable since the API’s base version
Webhook eventemployee-updated
Rate limitStandard limits apply

Employment history

Read and write an employee's employment and work history entries.4

Needs view permission on the employment section.

Acts onemployment entry
Permission (capability)People: view
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Needs edit permission on the employment section. Adding a row fires the table entry created webhook.

Acts onemployment entry
Permission (capability)People: edit
VersionAvailable since the API’s base version
Webhook eventtable-entry-created
Rate limitStandard limits apply

Needs edit permission on the employment section.

Acts onemployment entry
Permission (capability)People: edit
VersionAvailable since the API’s base version
Webhook eventtable-entry-updated
Rate limitStandard limits apply

Needs view permission on the work section.

Acts onwork entry
Permission (capability)People: view
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Time off

Read who's out, read a balance, and submit a new time off request.3

Returns only the people the service user is allowed to see. Private and hourly time off are excluded unless explicitly included.

Acts ontime off
Permission (capability)Time off: view
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Needs view permission on the employee's time off.

Acts ontime off
Permission (capability)Time off: view
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Needs edit permission on time off. The body sets the policy type, range type, start and end dates, and can bypass approval or name an approver.

Acts ontime off request
Permission (capability)Time off: edit
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Tasks

List the company's open tasks, read one employee's tasks, and mark a task complete.3

Needs the tasks feature permission. Returns open tasks the service user can see.

Acts ontask
Permission (capability)Tasks: view
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Replaced the retired 'read my tasks' endpoint on 31 July 2024.

Acts ontask
Permission (capability)Tasks: view
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Needs edit permission on tasks.

Acts ontask
Permission (capability)Tasks: edit
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Documents

List an employee's documents and upload a shared document to their profile.2

Needs view permission on the employee's documents, or the call returns 403.

Acts ondocument
Permission (capability)Documents: view
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Needs edit permission on the employee's shared documents.

Acts ondocument
Permission (capability)Documents: edit
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Payroll & salaries

Read and write an employee's salary entries.2

Needs view permission on the salaries section, which is among the most sensitive people-data categories.

Acts onsalary entry
Permission (capability)Salaries: view
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Needs edit permission on the salaries section. Adding a row fires the table entry created webhook.

Acts onsalary entry
Permission (capability)Salaries: edit
VersionAvailable since the API’s base version
Webhook eventtable-entry-created
Rate limitStandard limits apply

Reports

List the company's saved reports and download one as CSV, XLSX, or JSON.2

Needs the reports feature permission.

Acts onreport
Permission (capability)Reports: view
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A report can return wide data across many employees, so its contents follow what the report was built on, not a narrow field filter. The format parameter selects csv, xlsx, or json.

Acts onreport
Permission (capability)Reports: view
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Company lists & fields

Read the people fields metadata and read and write company named lists, such as departments and sites.3

Used to discover the correct field IDs and JSON structure before reading or writing employee data.

Acts onfield
Permission (capability)Fields: view
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Named lists are the configurable value sets behind company-wide dropdowns. Archived lists are excluded unless includeArchived is set.

Acts onnamed list
Permission (capability)Named lists: view
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Changes a company-wide value set used across many employee records.

Acts onnamed list
Permission (capability)Named lists: edit
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply
No endpoints match those filters.
Webhooks

Webhook events.

HiBob can notify an app or AI agent when something changes about an employee, instead of the app repeatedly asking. HiBob posts the event to a webhook URL that has been configured for the chosen events, including scheduled changes that fire at midnight in the site timezone on their effective date.

EventWhat it signalsTriggered by
employee.createdFires when an employee is created./v1/people
employee.updatedFires when one of an employee's fields is updated./v1/people/{identifier}
/v1/people/{id}/email
/v1/employees/{employeeId}/start-date
employee.deletedFires when an employee is deleted. The payload includes the employee's email address for reference.In-app only
employee.joinedLifecycle event that fires when an employee gains access to the system.In-app only
employee.leftLifecycle event that fires when an employee is terminated or placed on garden leave./v1/employees/{identifier}/terminate
table.entry.createdFires when a new row is added to an employee's table, such as employment, work, or salary history./v1/people/{id}/employment
/v1/people/{id}/salaries
table.entry.updatedFires when an existing table entry changes. Deleting a table entry does not trigger a webhook./v1/people/{id}/employment/{entry-id}
No events match that search.
Rate limits & pagination

Rate limits, pagination & request size.

HiBob limits how fast an app or AI agent can call, with a per-minute request quota set per service user that varies by endpoint, and a separate block on repeated failed authentication.

Request rate

HiBob limits how many requests a service user can make per minute, and the limit is set per endpoint rather than as one global number. The employee search endpoint, POST /people/search, is documented at 50 requests per minute, and each section of the reference lists the limits for its own endpoints. Going over returns HTTP 429 Too Many Requests. Every response carries X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset, where reset is a Unix timestamp for when the window clears. A separate protection blocks an IP address for five minutes after more than 50 requests that return HTTP 401 from the same IP within ten seconds, so repeated failed authentication trips a temporary block.

Pagination

Most list and search endpoints return all matching records in a single array rather than paging. The employee search endpoint returns every matching employee at once, filtered by the fields, filters, and audience set in the request body, so the result set is shaped by the request and the service user's access rather than by a page cursor.

Request size

Requests and responses are JSON. Report downloads can be returned as CSV, XLSX, or JSON through a format parameter, and document endpoints return download links rather than file bytes. Newly written employee data can take up to about 20 seconds to appear in a following read.

Errors

Status codes & error handling.

The status codes an agent should handle, and what to do about each.

StatusCodeMeaningWhat to do
400Bad RequestThe request is malformed or a parameter is invalid, such as an unknown field ID or an invalid time off policy. The body can include a structured message naming the invalid parameter.Read the error message, correct the named field or parameter, and resend. Use the fields metadata endpoint to confirm the right field IDs.
401UnauthorizedAuthentication is missing or the service user ID and token are invalid. More than 50 such responses from one IP within ten seconds blocks that IP for five minutes.Check the Base64-encoded service user ID and token in the Authorization header, then send valid credentials and avoid retry storms.
403ForbiddenThe service user is authenticated but its permission groups do not allow the requested data or action.Add the service user to a permission group that grants the needed feature, people-data section, and employee audience.
404Not FoundThe endpoint path or resource does not exist, such as an unknown employee ID or report ID.Confirm the path and identifiers are correct and that the resource exists.
429Too Many RequestsThe per-minute request limit for the endpoint and service user was exceeded.Read X-RateLimit-Reset for when the window clears, then back off and retry. Prefer bulk endpoints over many single calls.
500Internal Server ErrorAn unexpected error occurred on HiBob's side.Retry after a short delay, and if it persists contact HiBob support.
Versioning & freshness

Version history.

HiBob serves a single v1 API with no dated version string to pin. It evolves through dated changes in its changelog, where older endpoints are deprecated with a stated cutoff date and replaced.

Version history

What changed, and when

Latest versionv1
v1Current version
Single versioned API, evolving through the changelog

HiBob serves one v1 API at https://api.hibob.com/v1 with no dated version header to pin. New capability and breaking changes both ship through the dated changelog, where an endpoint due for removal is announced ahead of time with a stated cutoff date and a replacement. An integration tracks the changelog rather than pinning a version.

What changed
  • MCP server (beta) released on 28 April 2026, authenticated with a Bob service user
  • Time Off API added access to calendar events
  • Hiring API and Learning API gained additional endpoints through 2026
2024-10-31Requires migration
API access tokens discontinued

The legacy API access token method was switched off on 31 October 2024, after new tokens stopped being issued on 31 May 2024. Service users became the only supported authentication method, where access is governed by permission groups rather than the creating admin's own rights.

What changed
  • API access token authentication discontinued on 31 October 2024
  • No new API access tokens issued after 31 May 2024
  • Service users became the sole authentication method
2024-07-31Requires migration
Per-user task and avatar endpoints retired

The 'read my tasks' and 'read avatar for the logged-in user' endpoints were retired on 31 July 2024. They were replaced by endpoints that name the employee explicitly, such as reading tasks for a specific employee and reading an avatar by employee ID or email.

What changed
  • 'Read my tasks' retired, replaced by reading a specific employee's tasks
  • 'Read avatar for logged-in user' retired, replaced by avatar-by-employee endpoints
2024-03-31Requires migration
Bulk employee reads replaced by search

The 'read all company employees' and 'read company employee by ID' endpoints were deprecated and removed on 31 March 2024, in favor of the POST /people/search endpoint. Search returns the chosen fields for many employees in one call, filtered by an audience the service user is allowed to see, which gives more controlled access to employee data.

What changed
  • 'Read all company employees' and 'read employee by ID' removed
  • POST /people/search introduced as the replacement
  • Employee search rate limit set to 50 requests per minute, down from earlier higher limits

An integration pins nothing; it tracks the changelog for deprecations and their cutoff dates.

HiBob API changelog ↗
Questions

HiBob API, answered.

How does an agent authenticate to the HiBob API?+
As an API service user. An admin creates a service user in Bob and receives an ID and a token. The two are joined with a colon, that string is Base64-encoded, and the result is sent in the Authorization header as 'Authorization: Basic '. A service user is not a real employee and cannot log in to Bob; it exists only to authenticate API calls. The older API Access Token method was switched off on 31 October 2024.
How are permissions scoped, since there are no per-endpoint scopes?+
Through permission groups in Bob, not through scopes on the token. A service user begins with no access and is added to a permission group, which grants three things: which features it can use, which people-data sections it can view, see the history of, or edit, and which employees those rights cover, whether everyone, a condition, or named people. The group is the boundary, so the same token reaches only what its group allows. This is coarser than per-endpoint scopes and is set inside Bob, not by the API.
How do I read employee data?+
Use the POST /people/search endpoint, which returns the fields chosen for many employees in one call, filtered by an audience the service user is allowed to see. It replaced the older 'read all employees' and 'read employee by ID' endpoints, which were retired on 31 March 2024. The service user must have view permission on each field's category, and the default is to return only currently employed people unless showInactive is set.
What are the rate limits?+
Limits are per service user and set per endpoint rather than as one global figure, so each section of the reference states its own. The employee search endpoint is documented at 50 requests per minute. Exceeding a limit returns HTTP 429, and the X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset response headers report the current window. Separately, more than 50 requests returning HTTP 401 from one IP within ten seconds blocks that IP for five minutes.
How does an agent receive changes instead of polling?+
Through webhooks. A webhook URL is configured in Bob and subscribed to events such as employee.created, employee.updated, and employee.deleted, lifecycle events such as employee.joined and employee.left, and table events such as table.entry.created and table.entry.updated. HiBob posts the event when it fires, including scheduled changes that fire at midnight in the site timezone on their effective date. The payload carries the employeeId and the changed field identifiers.
Does HiBob have an official MCP server?+
Yes. HiBob publishes a first-party Model Context Protocol server, released in beta on 28 April 2026, that lets an AI assistant connect to Bob to read information and perform actions. The remote endpoint is https://mcp.hibob.com/mcp/public, with a sandbox at https://mcp.sandbox.hibob.com/mcp/public. It authenticates with a Bob service user, so everything the assistant can see or do is limited to that service user's permissions, the same boundary as the REST API.
Related

More hr API guides for agents

What is Bollard AI?

Control what every AI agent can do in HiBob.

Bollard AI sits between a team's AI agents and HiBob. Grant each agent exactly the access it needs, read or write, area by area, and every call is checked and logged.

  • Set read, write, or no access per agent, never a shared HiBob service user token.
  • Denied by default, so an agent reaches only the people data that has been explicitly allowed.
  • Every call recorded in plain English: who, what, where, and the decision.
HiBob
HR Agent
Read employee directory ResourceOffReadFull use
Submit time off requests ActionOffReadFull use
Read salaries and payroll ResourceOffReadFull use
Per-agent access, set in Bollard AI, not in HiBob