Docs

Get a leave request

Preview· P9
GET
/leave-requests/{leave_id}

Returns one leave request. A private type comes back as away.

Scope: attendance:read · Plan: Pro and Enterprise in live mode; every plan in test mode.

Authorization

headerAuthorizationBearer <token>

Send Authorization: Bearer <token> on every request. The token is one of:

PrefixWhat it isWhere it may be used
agoo_sk_live_Secret key, live modeYour servers only
agoo_sk_test_Secret key, test modeYour servers only
agoo_pk_live_Publishable key, live modeBrowsers and apps: create pre-registrations and bookings, read public booking types (with their intake questions) and their free slots, read the visit types open for pre-registration with their public forms. Never lists people.
agoo_pk_test_Publishable key, test modeAs above, in test mode

Admins create keys in Console → Developers → API keys and choose each key's scopes. A key is shown once. Never put a secret key in a URL, a browser or a mobile app.

Scope: attendance:read

Path Parameters

leave_id*string

The leave request's ID.

Match^leave_[0-7][0-9a-hjkmnp-tv-z]{25}$
Example"leave_01m4z0q2k8fv7tqz3x9c1nbe5d"

Response Body

The leave request.

application/json
  1. response

A leave request. A private type (sick and maternity by default) comes back as kind: away, without its type, reason or note.

id*LeaveRequestId

A leave request ID (TypeID with the leave prefix).

Match^leave_[0-7][0-9a-hjkmnp-tv-z]{25}$
Example"leave_01m4z0q2k8fv7tqz3x9c1nbe5d"
person_id*PersonId

A person ID (TypeID with the person prefix).

Match^person_[0-7][0-9a-hjkmnp-tv-z]{25}$
Example"person_01kjsesxm0e4zbyvkr7bcfxbfg"
type_id*|

null for a private type.

Match^ltype_[0-7][0-9a-hjkmnp-tv-z]{25}$
type_name*string
Example"Annual leave"
Example"Away"
kind*string
Value in"annual""sick""maternity""paternity""compassionate""study""unpaid""other""away"
private*boolean
status*string
Value in"pending""approved""declined""cancelled"
starts_on*string
Formatdate
ends_on*string

The last day of leave.

Formatdate
half_day*boolean
half_day_part*|
Value in"morning""afternoon"null
days*number

What it counts, in unit.

Example3
unit*string
Value in"working_days""calendar_days"
paid*boolean
reason*|

The person's note; null for a private type.

decision_note*|

The approver's note; null for a private type.

decided_at*|
Formatdate-time
decided_by*|

Who decided it; null when recorded, decided through the API or approved at once.

Match^person_[0-7][0-9a-hjkmnp-tv-z]{25}$
approval*|

The approval's state; null when it needed none.

cancelled_at*|
Formatdate-time
created_at*string
Formatdate-time
updated_at*string
Formatdate-time
curl -X GET 'https://api.agoo.ardent.africa/v1/leave-requests/leave_01m4z0q2k8fv7tqz3x9c1nbe5d'
{  "id": "leave_01m4z0q2k8fv7tqz3x9c1nbe5d",  "person_id": "person_01kjw4mg80efgb5aqbsqnxhtbh",  "type_id": "ltype_01m4y8r6t0e9k2b7c5d3f1g0hj",  "type_name": "Annual leave",  "kind": "annual",  "private": false,  "status": "pending",  "starts_on": "2026-11-16",  "ends_on": "2026-11-18",  "half_day": false,  "half_day_part": null,  "days": 3,  "unit": "working_days",  "paid": true,  "reason": "Family visit in Ho",  "decision_note": null,  "decided_at": null,  "decided_by": null,  "approval": {    "status": "pending",    "step": 1,    "of": 2  },  "cancelled_at": null,  "created_at": "2026-10-14T09:12:00Z",  "updated_at": "2026-10-14T09:12:00Z"}