Skip to main content

BitaBIZ API

CSV (Excel & PBI) & REST (JSON)

Esben Hedegaard avatar
Written by Esben Hedegaard
Updated over 2 weeks ago

1. Introduction

This article is about the BitaBIZ API.

The BitaBIZ API provides access to raw data such as employee master data and registrations. These data can be used in integrations, reports, and business intelligence solutions.

This article describes how to retrieve raw data via REST or CSV (e.g. vacation days, sick days, employee data).

👉 This is not the same as:

  • Payroll Export – the API cannot be used for exporting data to payroll systems.

  • HR Reports – the BitaBIZ report library contains a range of pre-configured HR reports and KPIs.

💁 API Variants:

  • REST (JSON) → for integrations and developers

  • CSV (Excel & Power BI) → for reporting and analysis

2. API Variants

The BitaBIZ API can return data in both JSON and CSV format depending on the query string URL you use in the API call:

  • Use JSON for REST methods

  • Use CSV for Excel & Power BI

REST

The REST API returns data in JSON format and has the following main query URL:

https://registrations.api.bitabiz.com/v2/

The REST API can be tested in a desktop tool like Postman.

In Postman, you must add your company’s API Key as x-apikey in the Headers section of your request.

Excel & Power BI

The Excel & Power BI API returns data in CSV format and has the following main query URL:

https://registrations.api.bitabiz.com/pbi/

Use the BitaBIZ Excel & Power BI API to create your own reports.

Insert the query URLs you want to use directly in Power BI or Excel.

3. Endpoints

The BitaBIZ API provides several main endpoints. Each endpoint delivers different types of data:

Endpoint

Method

Returns

Note

/employees/

GET

Employee master data

Retrieves all employees and their master data (e.g. name, department, email, employment dates, approvers).

/employees/nationalholidays

GET

National holidays per employee

Shows bank holidays within a given period, including how many days/hours each employee is entitled to.

/registrations

GET

Registrations for the entire company

Provides all registration types (vacation, sick leave, time off, mileage, etc.) for all employees. Can be filtered by date, status, and reason code.

/registrations/{employeeGuid}

GET

Registrations for one employee

Shows registrations for a specific employee. Often used for reporting or integrations per person.

/adjustments

GET

Balance adjustments

Returns changes to balances (Vacation, Other vacation, Time bank, Day bank). Covers increases/decreases, payouts, and carried-over balances.

Examples of endpoints

/employees/

REST

curl -H "x-apikey: $API_KEY" \
https://registrations.api.bitabiz.com/v2/employees/

CSV

https://registrations.api.bitabiz.com/pbi/INSERT_API_KEY_HERE/employees

/registrations

REST

curl -H "x-apikey: $API_KEY" \
"https://registrations.api.bitabiz.com/v2/registrations?from=2025-01-01&to=2025-12-31"

CSV

https://registrations.api.bitabiz.com/pbi/INSERT_API_KEY_HERE/registrations?from=2025-01-01&to=2025-12-31

4. Parameters

How parameters are used in API queries:

  • Parameters are added to the URL.

  • The first parameter starts with ?.

  • Additional parameters are added with &.

Parameter

Format / Values

Description

?

Symbol

Used to start the parameter section in the URL. Example: ...?from=2025-01-01.

&

Symbol

Used to add multiple parameters after the first one. Example: ...?from=2025-01-01&to=2025-12-31&status=APP.

from

YYYY-MM-DD or lastXXmonths

Start date for data retrieval. Example: from=2025-01-01. With last12months, results are retrieved from today and 12 months back.

to

YYYY-MM-DD

End date for data retrieval. Example: to=2025-12-31. Must be combined with from.

status

APP, PEN, REJ, DEL, CHK

Filters registrations by status. APP = ApprovedPEN = PendingREJ = RejectedDEL = DeletedCHK = Checked in (without checked out, active registration).

inactive

true / false

Used on /employees. Default = only active employees. Set inactive=true to also include inactive employees.

reason

e.g. HH, IS, VT

Filters by registration type. Example: reason=HH (vacation), reason=IS (sick). Multiple codes can be combined with commas.

employeeGuid

Text string (GUID)

Unique employee ID, used to get registrations for a specific employee: /registrations/{employeeGuid}.

Examples with status

Rest

curl -H "x-apikey: $API_KEY" \
"https://registrations.api.bitabiz.com/v2/registrations?from=2025-01-01&to=2025-12-31&status=pen"

CSV

https://registrations.api.bitabiz.com/pbi/INSERT_API_KEY_HERE/registrations?from=2025-01-01

💡 Tip on parameters in the API

  • ? starts the parameters in the URL.

  • & is used to add more parameters.

  • You can combine parameters:

    • ...?from=2025-01-01&to=2025-12-31&status=APP

    • ...?from=2025-01-01&to=2025-12-31&reason=HH,IS

  • By default, only APP (Approved) registrations are returned. If you need other statuses, add them with the status parameter (comma separated).

  • Parameters work in both REST and CSV versions of the API.

5. Registration types (reason codes)

The BitaBIZ API uses reason codes to identify different types of registrations.

Registration type

Reason code

Description

Vacation

HH

Standard vacation days.

Other vacation

HF

Extra vacation days (e.g. 6th week, care days). In the API these are always called “Other vacation” regardless of the policy name.

Sick

IS

Employee’s own sick day.

Child sick

IC

Child’s first sick day or similar child-related absence.

Other absence / Leave

L

E.g. maternity leave, parental leave, paternity leave.

Custom registration types

P

Custom absence types defined by the company (e.g. training, courses).

Overtime

VO

Overtime hours, often linked to job codes with different pay rates.

Time off (Comp time)

VT

Time off earned through overtime.

Time registration

TT

Pure time registration without time bank.

Mileage

MI

Registration of mileage (in kilometers).

Flex time

FT

Time registration with time bank (earned/flexible hours).

Day bank – plus days

DO

Addition of extra days in the day bank.

Day bank – minus days

DT

Subtraction of days from the day bank.

Vacation payout

RHH

Payout of vacation balance.

Other vacation payout

RHF

Payout of other vacation balance (e.g. 6th week, care days).

Time bank payout (hours)

RVT

Payout of hours from the time bank.

Day bank payout (days)

RDT

Payout of days from the day bank.

Examples with use of reason code

A single reason code (vacation = HH)

REST

curl -H "x-apikey: $API_KEY" \
"https://registrations.api.bitabiz.com/v2/registrations?from=2025-01-01&to=2025-12-31&reason=HH"

CSV

https://registrations.api.bitabiz.com/pbi/INSERT_API_KEY_HERE/registrations?from=2025-01-01&to=2025-12-31&reason=HH

More reason codes (vacation + sick = HH, IS)

REST

curl -H "x-apikey: $API_KEY" \
"https://registrations.api.bitabiz.com/v2/registrations?from=2025-01-01&to=2025-12-31&reason=HH,IS"

CSV

https://registrations.api.bitabiz.com/pbi/INSERT_API_KEY_HERE/registrations?from=2025-01-01&to=2025-12-31&reason=HH,IS

💁 This example retrieves both vacation (HH) and sick (IS) registrations.

6. Known considerations

⚠️ Employee names on registrations are historical. If an employee’s name changes, the name on historical registrations will not be updated. Use /employees to retrieve current names.

⚠️ Hour bank earnings in Adjustments are only supported from 2022-01-01 onwards.

⚠️ GDPR deletion rules may remove historical registrations and adjustments depending on your company’s GDPR settings.

Appendix: Data schemas per endpoint

Below you will find the complete overview of fields delivered by each endpoint.
This reference is useful when you need to understand exactly what data is returned in the API response.

7. FAQ

Why do my Power BI data appear in a single column?

When calling the CSV endpoints (/pbi/ or /v2-pbi/), the data is returned as one single column.

To split the data into separate columns in Power Query, follow these steps:

1) = Csv.Document(Web.Contents(the url query you want to use), [Delimiter=",", Columns=30, Encoding=65001, QuoteStyle=QuoteStyle.None])
2) = Table.ReplaceValue(Source,"registrations.","",Replacer.ReplaceText,{"Column1", "Column2", ..., "Column30"})
= Table.PromoteHeaders(#"Replaced Value", [PromoteAllScalars=true])

Why does some absence count as 0 days in the API?

Absence types such as Vacation (HH), Other vacation (HF), Sick (IS), Child sick (IC) and Leave (L) do not count on weekends, national holidays or company-defined days off.
This means that if you register vacation Monday–Sunday, only 5 days will be counted because the weekend is excluded.

Column

Value

Weekend

Holiday

Day off

registrationAmountDays

Number of days

0 if the registration falls on a weekend

0 if on a holiday

0 if on a day off

registrationAmountHours

Number of hours

Hours are only calculated on working days according to standard work hours

–

–

Appendix: Data schemas per endpoint

Below you will find the complete overview of fields delivered by each endpoint.
This reference is useful when you need to understand exactly what data is returned in the API response.

/employees/ – Employee master data

API field

Description

Guid

Unique employee ID (used for joining reports).

Name

First and last name.

FullName

First, middle, last name.

Department

Employee’s department.

pNumber

P-number for Statistics Denmark reporting.

JobTitle

Job title.

EmployeeId

Internal company employee number.

EmployeePayrollId

Payroll system ID (alphanumeric).

Country.Name

Office location tag.

Country.Region

Country, region, calendar group.

Group.Company

Group company tag.

PersonalInfo.Email

Email address.

PersonalInfo.Birthdate

Birthday.

PersonalInfo.Mobile

Mobile phone number.

Employment.Start

Employment start date.

Employment.End

Termination date (for inactive employees).

LastLogin

Last login timestamp.

Active

Active status (add ?inactive=true to include inactive).

SalaryAgreement.Id

Policy ID.

SalaryAgreement.Name

Policy name.

SalaryAgreement.WorkingDays

Work week length (5/7).

SalaryAgreement.HoursPerWeek

Standard work hours per week.

SalaryAgreement.VacationDays

Vacation days per year (without adjustments).

SalaryAgreement.OtherVacationDays

Other vacation days per year (without adjustments).

SalaryAgreement.WeekDaysCsv.weekDay[x]English

Weekday name (1=Monday, 2=Tuesday...).

SalaryAgreement.WeekDaysCsv.weekDay[x]

Standard hours per weekday.

SalaryAgreement.WeekDaysCsv.weekDay[x]start

Standard start time per weekday.

SalaryAgreement.WeekDaysCsv.weekDay[x]end

Standard end time per weekday.

SalaryAgreement.WeekDaysCsv.weekDay[x]secondaryStart

Secondary start time per weekday.

SalaryAgreement.WeekDaysCsv.weekDay[x]secondaryEnd

Secondary end time per weekday.

SalaryAgreement.VacationFactor

Payroll vacation factor (e.g. 1:1, 1:1.25).

SalaryAgreement.VacationCode

Vacation payroll code.

SalaryAgreement.OtherVacationCode

Other vacation payroll code.

SalaryAgreement.SickCode

Sick payroll code.

SalaryAgreement.ChildSickCode

Child sick payroll code.

SalaryAgreement.WeekRule

Week rule: Odd/Even for secondary week.

SalaryAgreement.BreaksCSV

List of active breaks (e.g. "12:00-12:30,14:00-15:30").

Timezone

Employee’s time zone.

Tags

Payroll, HR and Employee tags.

Approvers

Approvers’ emails (or “selfapprover”).

/employees/nationalholidays – National holidays

API field

Description

Guid

Unique employee ID.

Name

First and last name.

SumOfDays

Total holidays in days.

SumOfHours

Total holidays in hours (according to employee’s daily hours).

HolidaysCount

Count of national holidays in the period.

Holidays.Description

Holiday name (e.g. “New Year’s Day”).

Holidays.StartDate

Holiday start date.

Holidays.EndDate

Holiday end date.

Holidays.DayOfWeek

Day name (Monday–Sunday).

Holidays.SumDays

1 = full day, 0.5 = half day.

Holidays.SumHours

Hours according to employee’s daily hours.

/registrations – Registrations

API field

Description

Guid

Unique employee ID.

Name

Name saved on registration (historical).

Registration.Id

Unique registration ID.

Registration.Spanned

TRUE if spanning multiple days.

Registration.SpannedDay

Day number in spanned registration (0 = first).

Registration.Date

Registration date.

Registration.TimeStart

Start time.

Registration.TimeEnd

End time.

Registration.Amount.Days

Value in days.

Registration.Amount.Hours

Value in hours.

Registration.Amount.Km

Value in km (if relevant).

Registration.Amount.Unit

Unit (days/hours).

Registration.DateDetails.Week

Week number.

Registration.DateDetails.Weekday

Weekday number (1=Monday).

Registration.DateDetails.WeekDayEnglish

Weekday name.

Registration.DateDetails.Holiday

TRUE if overlaps holiday.

Registration.DateDetails.HolidayDetails.Description

Holiday name if overlapped.

Registration.Type

Vacation, Sick, Overtime, etc.

Registration.Subtype

Subtype/job code.

Registration.Reason

Reason code (HH, IS, VT, etc.).

Registration.Created

Timestamp of creation.

Registration.Note

Note text (sick notes are private).

Registration.OfficeStatus

Out of office status: Free/Busy/Out of office.

Registration.JobCode.Id

Job code ID for payroll.

Registration.JobCode.IsPayroll

TRUE if processed by payroll.

Registration.Project.Name

Project name.

Registration.Project.GUID

Project ID.

/adjustments – Adjustments

API field

Description

employeeGuid

Unique employee ID.

employeeName

Employee name.

financeName

Payroll admin who created adjustment (blank if system-generated).

policyName

Employee’s policy.

adjustmentType

Balance type (Vacation, Other vacation, Hour bank, Day bank).

adjustmentReason

Reason code (HH, HF, VT, DT).

adjustmentAction

Action type: manual, scheduled, payout, transferred.

created

Date created.

modified

Date valid from.

value

Adjustment amount.

rate

Conversion rate (days → hours).

note

Note text.

Did this answer your question?