Breathe HR
BUSINESS · PEOPLE
Employees, absences, leave requests, and expenses from their own company.
Connecting Breathe HR in practice
Breathe allows "a maximum of 60 requests in 60 seconds per customer" — one bucket for the whole company, not per API key — and caps a page at 100 records, so a full employee-and-absence sync for a few hundred staff spends most of a minute and competes with every other integration the customer has connected.
Rate limits
- 60 requests in 60 seconds per customer. Over the limit the response is a 429 with a rate limit error.
- Pagination defaults to 25 records per page and accepts per_page "up to a maximum of 100".
- Paginated responses include a Total HTTP header with the total number of results.
Worth knowing
- The quota is per customer rather than per credential, so adding a second integration to the same Breathe account halves what the agent gets and no amount of key rotation helps.
- Sandbox and production are separate worlds: the sandbox key is issued on the developer site and works against isolated test data, so a key that works in testing is not the key that ships.
- At 100 records a page and 60 requests a minute, the practical ceiling is about 6,000 records a minute even when nothing else is running.
Checked against Breathe API FAQs (2026-09-29)
What an agent can do
Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.
Often connected alongside
Put Breathe HR behind one governed endpoint.
Same permissions, same audit trail, whatever else you connect next.