Skip to content

Guides

Hire someone, end to end

On this page

From an open role to a first day: plan the position, hire into it, invite the person and follow their onboarding. Every step can be previewed with ?dry_run=true, and every step shows in Activity.

You need a Manage key of an owner, admin or HR member.

1. Plan the role#

Create an open position (skip this if you hire without one):

Shell
curl https://api.bizisy.com/v1/org/positions.create \
  -H "Authorization: Bearer $BIZISY_API_KEY" -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"title": "Product Designer", "unit_id": "u2", "reports_to_person_id": "p2", "target_start_date": "2026-11-02"}'

The result's id is the position. Ids of units and people come from org.units.list and org.people.list. The budget (pay_range) is set in the app, never through a key.

2. Hire#

org.people.hire adds the person with their first job. With position_id, the hire fills the position. Preview first:

Shell
curl "https://api.bizisy.com/v1/org/people.hire?dry_run=true" \
  -H "Authorization: Bearer $BIZISY_API_KEY" -H "Content-Type: application/json" \
  -d '{"given_name": "Bea", "family_name": "Santos", "work_email": "bea@acme.com", "title": "Product Designer", "start_date": "2026-11-02", "unit_id": "u2", "manager_id": "p2", "position_id": "pos1", "contract_type": "permanent"}'

Leave out manager_id and the team lead of unit_id becomes their manager (manager_default in the result says so; send null for no manager): see The team lead as default manager. A future start_date makes them pre_hire until that day. Then commit the same call without dry_run, with an Idempotency-Key. Bizisy sends person.hired and position.filled webhooks, and starts the onboarding checklists that start by themselves for new hires.

3. Invite them to sign in#

Shell
curl https://api.bizisy.com/v1/org/invites.create \
  -H "Authorization: Bearer $BIZISY_API_KEY" -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"person_id": "<the new person id>", "role": "member"}'

Bizisy emails the person a sign-in link (reply-to you). email.status says whether it was sent; through a key, url is null: the link is a credential and only goes to the person. The link expires in 14 days. When they accept, member.joined is sent.

4. Follow onboarding#

org.checklists.runs.list with person_id shows their checklists and progress; tasks are ticked by their assignees in Bizisy, or with org.checklists.tasks.set_status. checklist.completed is sent when every task is done or skipped.

When it doesn't go to plan#

Something missing or wrong on this page? Write to hello@bizisy.com.

Developer docs