KalHR logo

Connect your systems to KalHR

Read employees, leave, attendance and payroll with an API key that holds only the access you give it. Get a signed webhook the moment something changes, so your other systems are never out of date.

Part of the Premium and Enterprise plans, and open to every organisation while the free usage policy lasts.

Request
curl "https://api.kalhr.com/v1/employee/list?Status=Active&PageSize=2" \
  -H "Authorization: Bearer $KALHR_API_KEY"
Response
{
  "isSuccessful": true,
  "code": "00",
  "data": {
    "data": [
      { "id": "4b9d…", "employeeId": "ACM-0042", "firstName": "Ada", "lastName": "Okafor" },
      { "id": "7e21…", "employeeId": "ACM-0043", "firstName": "Tunde", "lastName": "Bello" }
    ],
    "pageNumber": 1,
    "pageSize": 2,
    "totalRecords": 134,
    "totalPages": 67
  }
}

How it fits together

Most integrations use both halves. The webhook tells you what changed; the API gives you the detail.

  1. 1

    Something happens in KalHR

    Leave is approved, an employee joins, a payroll is paid.

  2. 2

    KalHR sends your webhook

    A signed event within seconds: its type and the record's id.

  3. 3

    Your system calls the API

    It fetches the record with its key and updates itself.

Start here

What the API reads

Each key reaches only its own organisation, and only the parts it was given access to.

32 webhook events

Subscribe to all of them, or tick only those your system needs. Each carries ids and statuses, never pay or case notes.

Basic

People, onboarding and leave

  • employee.created
  • employee.terminated
  • leave.approved

Standard

Payroll, loans and attendance

  • payroll.paid
  • payroll.transfer_failed
  • loan.disbursed

Advanced

Recruitment, offers, approvals, cases and policies

  • candidate.stage_changed
  • offer.accepted
  • approval.completed
See every event

What teams build

Provision accounts

Create email and system accounts when employee.created arrives, and close them on employee.terminated.

Post payroll to your ledger

On payroll.paid, fetch the run's totals and each employee's pay, and post the journal.

Keep rotas right

Block the days in your scheduling tool on leave.approved, and free them on leave.cancelled.

Feed your other tools

Send recruitment, approval and policy events to your reporting, ticketing or workflow tools.

Safe to depend on

Scoped keys

A key holds only the access you choose, never more than its creator's, and never payouts.

Signed webhooks

HMAC-SHA256 on every delivery, with a timestamp so a captured request can't be replayed.

Safe retries

Idempotency keys replay the first answer for 24 hours; failed webhooks are retried for two days.

Clear limits

300 requests a minute per key, with Retry-After telling you exactly how long to wait.

Security checklist

Missing an endpoint or an event?

Tell us what you're building. The API grows from what integrators ask for.

See KalHR in action - 30 min demo