Generate an API key from the BambooHR account settings (My Account > API Keys) and use it as the username in HTTP Basic Auth with any string as the password.
Call GET /v1/meta/fields against your company subdomain (https://{companyDomain}.bamboohr.com/api/gateway.php/{companyDomain}/v1/meta/fields) to discover all available fields including custom ones and their numeric IDs.
Call GET /v1/employees/directory or GET /v1/employees/{id} with a fields query parameter listing the desired field IDs (comma-separated, including custom field IDs from the previous step).
Parse the returned JSON; custom fields appear at the same level as standard fields, keyed by their numeric ID.
To retrieve all employees with specific fields in bulk, use POST /v1/reports/custom with a JSON body specifying the field IDs.
Known gotchas
Custom field IDs are account-specific — they vary between BambooHR customers and must be fetched via /v1/meta/fields at setup time rather than hardcoded.
The directory endpoint returns a limited default field set; unlisted fields are silently omitted unless explicitly requested via the fields parameter.
BambooHR API keys are tied to a specific user account; if that user is deactivated, all API calls using their key will fail — use a dedicated service account.
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp