Docs
API referencePeople and H R

Update a person's HR profile

Preview· P9
PATCH
/people/{person_id}/hr-profile

Changes the person's personal and employment details. Send only the fields you want to change; null clears one.

  • Job title, department, position, manager, sites, employment type and contracted hours change with a job change (POST /people/{person_id}/job-changes), so each has a date and a line of employment history.
  • notice_days is for a notice longer than the one the Labour Act gives (s.17); leave it null for the Act's.
  • digital_address must be a GhanaPost GPS address, such as GA-123-4567.
  • marital_status is accepted only when your organisation records it, and it and disability_declared are kept but never returned through the API.

Scope: hr:write · 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: hr:write

Path Parameters

person_id*string

The person's ID.

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

Request Body

application/json
  1. body

The fields to change. Send null to clear one. Marital status and a self-declared disability are kept in Agoo only: they're neither read nor changed through the API.

legal_name?|

As on their Ghana Card.

Lengthlength <= 160
date_of_birth?|
Formatdate
gender?|
Value in"female""male""not_stated"null
nationality?|

ISO 3166 country code.

Match^[A-Za-z]{2}$
personal_email?|
Formatemail
Lengthlength <= 254
personal_phone?|
Match^\+[1-9][0-9]{7,14}$
home_address?|
Lengthlength <= 300
digital_address?|

A GhanaPost GPS address, such as GA-123-4567.

Lengthlength <= 20
languages?array<string>|
Itemsitems <= 10
contract_type?|null
contract_ends_on?|
Formatdate
probation_ends_on?|
Formatdate
notice_days?|

A notice longer than the one the Labour Act gives (s.17). null: the Act's.

Range1 <= value <= 366
work_pattern?|
Value in"weekdays""six_day""seven_day""shifts""flexible"null
cost_centre?|
Lengthlength <= 60
continuous_service_from?|
Formatdate
grade?|
Lengthlength <= 60
tier2_trustee?|
Lengthlength <= 120
tier2_scheme?|
Lengthlength <= 120
tier3_scheme?|
Lengthlength <= 120
tier3_percent?|
Range0 <= value <= 16.5

Response Body

The updated HR profile.

application/json
  1. response

A person's HR record as the API shows it: personal and employment details, pension schemes, and statutory numbers by kind and last four only. Full statutory numbers, pay accounts, emergency contacts, next of kin, beneficiaries, marital status and disability never leave Agoo through the API.

object*"hr_profile"
Value in"hr_profile"
person_id*PersonId

A person ID (TypeID with the person prefix).

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

As on their Ghana Card.

Example"Nii Armah Quartey"
date_of_birth*|
Formatdate
gender*|

not_stated: they prefer not to say.

Value in"female""male""not_stated"null
nationality*|

ISO 3166 country code.

Example"GH"
personal_email*|
Example"nii.armah@mail.example"
personal_phone*|

E.164 phone number.

Example"+233241234567"
home_address*string|null
digital_address*|

A GhanaPost GPS address.

Example"GA-123-4567"
languages*array<string>

The languages they speak.

Example
[  "English",  "Ga",  "Twi"]
contract_type*ContractType

open_ended, fixed_term, casual, apprenticeship, national_service or internship.

Value in"open_ended""fixed_term""casual""apprenticeship""national_service""internship"
contract_ends_on*|

When a fixed-term contract ends.

Formatdate
probation_ends_on*|
Formatdate
notice_days*|

A notice in days longer than the one the Labour Act gives (s.17). null: the Act's.

work_pattern*|

weekdays (Monday to Friday), six_day, seven_day, shifts or flexible.

cost_centre*string|null
continuous_service_from*|

When their continuous service began, if not on started_on.

Formatdate
grade*string|null
position_id*|

The position they hold now. null: none.

tier2_trustee*|

The trustee of their Tier 2 occupational pension scheme.

tier2_scheme*|

Their Tier 2 scheme.

tier3_scheme*|

Their Tier 3 provident fund or personal pension scheme.

tier3_percent*|

Their Tier 3 contribution, as a percentage of pay.

statutory_ids*array<>

Their statutory and identity numbers by kind and last four only: full numbers never leave Agoo through the API.

updated_at*string
Formatdate-time
curl -X PATCH 'https://api.agoohq.com/v1/people/person_01kjsesxm0e4zbyvkr7bcfxbfg/hr-profile' \  -H 'Content-Type: application/json' \  -d '{  "home_address": "Flat 4, Kanda Estates, Accra",  "digital_address": "GA-123-4567",  "tier3_percent": 7.5}'
{  "object": "hr_profile",  "person_id": "person_01kjw4mg80efgb5aqbsqnxhtbh",  "legal_name": "Nii Armah Quartey",  "date_of_birth": "1994-05-12",  "gender": "male",  "nationality": "GH",  "personal_email": "nii.armah@mail.example",  "personal_phone": "+233241234567",  "home_address": "Flat 4, Kanda Estates, Accra",  "digital_address": "GA-123-4567",  "languages": [    "English",    "Ga",    "Twi"  ],  "contract_type": "open_ended",  "contract_ends_on": null,  "probation_ends_on": "2021-12-14",  "notice_days": null,  "work_pattern": "weekdays",  "cost_centre": "CC-300",  "continuous_service_from": "2021-06-14",  "grade": "G5",  "position_id": null,  "tier2_trustee": "Ridge Pension Trustees",  "tier2_scheme": "Volta Bank Staff Occupational Pension Scheme",  "tier3_scheme": "Volta Bank Provident Fund",  "tier3_percent": 7.5,  "statutory_ids": [    {      "kind": "ghana_card",      "last4": "6780",      "expires_on": "2031-03-01"    },    {      "kind": "ssnit",      "last4": "3307",      "expires_on": null    }  ],  "updated_at": "2026-10-19T11:05:00Z"}