API

Overview

Two ways to build with Curio Time: general integrations and clock-in from third-party systems.

Public Integration API v1 gives developers two ways to build with Curio Time:

  1. General integrations — read employees, time entries, schedules, time off, projects and server-calculated payroll data.
  2. POS & punch clock integrations — clock employees in and out from a POS system, time clock, kiosk or shared terminal (POS & punch clock API).

General integration API

Area Operation Typical use
Employees Read Payroll mapping, reports
Time entries Read Punches + server pay buckets
Time off / absences Read Planning, payroll context
Schedules Read Planned shifts
Pay periods Read Period boundaries
Payroll preview Read (preview) Export lines — no external send via API
Projects / departments Read Job costing
Public holidays Read Icelandic calendar

POS & punch clock API

Area Operation Typical use
Employee list Read Terminal UI
Clock in / out Write POS system, time clock, kiosk or shared terminal
Device registration Write (once) Bind hardware to a company

See POS & punch clock.

Not in v1

  • Create/update employees, manual timesheet edits (except punch)
  • Calculation rules or collective agreements
  • Mobile app–specific routes (/mobile/*)
  • Curio Solo API
  • Send payroll to Payday/DK/Regla via integration API
  • AI, billing, superadmin

See Out of scope.

Multi-tenant

Company-scoped routes use companyId (GUID):

GET /api/v1/companies/{companyId}/time-entries?userId=…&startDate=…&endDate=…

Access is limited to companies your credentials are allowed to use.

JSON conventions

Item Format
Property names camelCase
Calendar dates (query/body) yyyy-MM-dd
Timestamps ISO-8601 UTC (2026-08-25T08:00:00Z)
Envelope { "success": true, "data": { … }, "errors": null }

See Response format.

Payroll math is server-side

Integrations must not re-implement pay rules. Use:

  • totals — minutes by category (daytime, overtime, night, weekend, etc.)
  • dynamicPayLines — payroll codes → minutes ready for export

Common flows

Payroll system pulls hours

1. GET …/users
2. GET …/pay-periods
3. GET …/time-entries  (per employee)
   or
   POST …/payroll/export/preview  (all employees, one period)

POS or punch-clock partner

1. GET …/users/punch-list?companyId=…     (anonymous)
2. POST …/time-entries/punch              (password or kiosk PIN flow)

Or registered kiosk device flow — see Punch clock.

Next steps

  1. Authentication
  2. Response format
  3. Limits & security
  4. API reference under reference/