The API at a glance
The Hela API is a JSON REST API, the same one the application uses. Whatever the screen does, the API does.
Base address
https://<your-server>/v1
The server publishes its OpenAPI 3.1 schema at GET /openapi.json and a browsable UI at /docs. The schema is generated from the code on every deployment: it cannot describe a route that does not exist.
Authentication
An API key in the Authorization header:
Authorization: Bearer hela_live_3f9c…
Keys are created in Administration → Developers. Each key carries scopes that limit what it can do. Details: Authentication and scopes.
Shape of responses
- An object for a resource, an array or a page
{ data, nextCursor, hasMore }for a collection. - Amounts are integers in minor units, with their currency. See Companies, documents, money.
- Errors carry a stable code (
field-required:walletId) rather than a sentence. See Pagination, errors, idempotency.
Route families
| Prefix | What is there |
|---|---|
/companies/{id}/sales, /purchases, /deliveries |
Sales and purchase documents, their payments, deliveries, refunds, cancellations |
/companies/{id}/quotes |
Quotes and their conversion |
/companies/{id}/items, /categories, /stock… |
Catalogue and stock |
/companies/{id}/partners |
Customers and suppliers |
/companies/{id}/wallets, /transactions, /budgets |
Treasury |
/companies/{id}/time-entries |
Hours and their billing |
/companies/{id}/reports/… |
Reports, ledger, accounting exports |
/companies/{id}/fiscal/… |
E-invoicing regimes, sealed journal |
/companies/{id}/integrations/… |
Partner connections |
/companies/{id}/api-keys, /webhooks, /events |
The developers' corner |
The exhaustive list, with every field, is in the OpenAPI schema. Resources gives a guided reading.
Limits
| Live key | Test key | |
|---|---|---|
| Requests per minute | 600 (adjustable per key) | 60 |
| Writes | yes | refused (403 forbidden) |
| Page size | 50 by default, 200 at most | same |
Beyond the limit the server answers 429 Too Many Requests. A Retry-After header says when to come back.
Versions
The version is in the address (/v1). Within a version, changes are additive: a field may appear, never disappear or change meaning. Events follow the same rule. A version 2 would have its own prefix and live beside the first for at least twelve months.
Going faster
- TypeScript SDK:
@hela/sdk, typed from the same schema. - Webhooks: so you need not poll.
- Zapier, Make, n8n: so you need not code at all.