Skip to main content

Operentra API

A REST API over the data in an Operentra workspace: people, the organisation around them, the hours they work, and eventually what they are paid.

It exists so you can keep another system in step — an HRIS, a BI warehouse, a Slack bot, a time-clock vendor, your own internal tooling — without anyone exporting a spreadsheet on a Friday afternoon.

curl https://app.operentra.com/api/v1/employees \
-H "Authorization: Bearer opk_live_..."

What you should know before you start

Everything is scoped to one workspace. A key belongs to a workspace and can never see another one. There is no cross-workspace call and no account-level key.

Requests are made server-side. API keys are not usable from a browser — /api/v1 does not allow cross-origin credentialed requests, deliberately. A key in front-end code is a key you have published.

The contract is stable, and it is generated. Every response is built from a field definition that also produces the OpenAPI document and the object reference. A field cannot appear in one and not the others, so the documentation cannot quietly describe something the API does not return.

The shape of everything

ConcernHow it works
Base URLhttps://app.operentra.com/api/v1
AuthAuthorization: Bearer opk_live_...
Casesnake_case, on the way in and the way out
Moneydecimal strings ("50000.00"), in the workspace currency
Datescalendar dates (2026-03-01) where there is no time of day
TimestampsRFC 3339, always UTC (2026-03-01T09:07:00.000Z)
Lists{ "data": [...], "has_more": true, "next_cursor": "..." }
Errorsapplication/problem+json with a stable code

Money is a string because 1234567.89 is not exactly representable as a float64, and a client that parses pay as one eventually produces a payslip that is a cent wrong. Dates and timestamps are separate types because a joining date has no time of day, and rendering one as midnight UTC invites a timezone conversion that lands it on the previous day.

Where to go next

  • Quickstart — from no key to a first successful call.
  • Authentication — how keys work and what scopes grant.
  • Errors — the failure shape, and every code you can branch on.
  • Webhooks — get told when something changes, instead of polling.
  • Reference — every endpoint, generated from the contract.

Status

The API is in private beta. The shapes documented here are what we intend to publish, but until general availability a breaking change is possible — see Versioning and changelog for how one would reach you. If you are building against it now, tell us, because the list of who to warn is how that promise gets kept.