Terake measures, accounts for and calculates everything to do with work. Its purpose is time: how long a job took, who did it, and on what. A worker starts and stops work from the mobile app, or by presenting an NFC or RFID card at a reader, and those start and stop times become the record everything else is counted from. Plans and rosters are made once and shared with the people who carry them out, arriving in each worker's calendar on the phone as well as in the browser; a plan item marked done becomes recorded work without anyone re-entering it. Alongside hours the system tracks what work consumes — materials, machinery, fuel — and the fields, sites or objects it was carried out on. Companies use it in agriculture and forestry, construction, maintenance, manufacturing and services. This API is that system's interface.
The main workhorse of the system lives in the Workdones section, in the Workdones view: an atomic piece of work is called a Workdone, and most other data ultimately exists to describe, plan or account for one. The other significant carriers of user data are plans and rosters, both in the Planning view, inspection and repair cases in Maintenance, and the faults raised against machinery, which are recorded in the Faults section of the Fleet view. If you are looking for where a company's day-to-day records actually accumulate, these are the places to start; if you are looking for results rather than records, use the Reports section in the Reporting view.
Nearly every record refers to shared lists — workers, worktypes, workobjects, customers,
materials, facilities and the like — called classificators, and request bodies set those
relations by id. The endpoints for looking the ids up are in the
Classificators
section of the Admin view; of them, prefer
GET /api/search/{classificator_type}.
The reference is split by the job you are doing, so each page holds one domain rather than every endpoint in the system. The front page at /api/doc is this index; the endpoints live in the views below.
| Workdones | Work actually performed and the hours it took: start and stop, brigade start and stop, TTKI card readers, summarised worktime. |
| Planning | Work scheduled before it happens: plans, rosters, shifts, calendar items, projects, recurrence. |
| Fieldbook | The land and what is done to it: agrifields, agrifield works, crops, soil samples, fertilising, herding, geometry, cadastres. |
| Fleet | Machinery and what it consumes: facilities, parts, fuel, fuel balances, transport, faults, identificators. |
| Maintenance | Keeping machinery serviceable: inspection cases, repair cases, templates and intervals. |
| Materials | What gets consumed and what is in stock: materials, categories, inventory, lifespans. |
| Reporting | Consolidated figures over work already recorded. Prefer these over summing raw records. |
| Pria | Statutory reporting to the Estonian agricultural registry over X-Road. |
| Files | Attachments and generated output: file items, document types, PDFs and spreadsheets, signed documents. |
| Sync | Keeping a device current: the flat API bookmarked sync and integration partners. |
| Identity | Who someone is: worker groups, departments, professions, login, passwords and roles. |
| Admin | Running the account and the lists it is described with: workers, workday rules, companies, customers, agreements, messages, settings, cost accounts, worktypes, workobjects and their categories, location areas, classificators. |
To find your API key:
To call an endpoint marked as requiring authentication, send the API key in the
X-Terake-Api-Key HTTP request header. A missing or incorrect key, or a key belonging to a
deleted or archived worker, results in a 401 error.
The base URL of the Terake API is https://app.terake.com/api. To test an unauthenticated connection,
open https://app.terake.com/api/ping;
the answer is a JSON object with a "pong" parameter.
At the moment, use of the API is free of charge and unlimited: there is no per-request fee and no rate limit or quota on the number of calls. Please use common sense when making calls and do not load the service with unnecessary or excessive requests. For time-consuming tasks, such as bulk imports or large exports, prefer Estonian night time.
200 | Returned when successful. |
400 | The request could not be read, or a required parameter was missing or malformed. |
401 | The API key is missing, unknown, or belongs to a worker who has been archived or deleted. |
403 | The API key is valid but the worker may not see or change this record. |
404 | No record matches the id or uuid in the URL, within the caller's company. |
500 | Something went wrong on the server. |
Some endpoints answer 200 with a body of { "error": "<slug>" } rather than an
HTTP error status. Where that happens the endpoint's own description says so, and the slug is the thing to
branch on. A handful of endpoints also return a status of their own beyond this list — for example
deleting a refuelling Workdone answers 403 with
{ "error": { "slug": "message.delete_refueling_from" } } — and those are documented on the
endpoint itself.
Additional information about the Terake system is available in the admin interface help documentation, at https://help.terake.com/.
For any further questions or requests, please do not hesitate to contact us by e-mail at support@terake.com.
Send a date as Y-m-d and a date with a time as Y-m-d H:i:s, for
example 2026-08-28 and 2026-08-28 14:30:00. Values are read in the
company time zone. Other spellings PHP can parse are usually accepted, but a slash-separated
date is read month-first, so send Y-m-d and avoid the ambiguity. A duration is
HH:MM or HH:MM:SS, or a plain number of seconds.
Responses return dates and times in ISO 8601 with the offset, for example
2026-08-28T14:30:00+0300. The Return table below lists the fields of the response
and their types; it has no description column for them, so the format above is the one to
assume for every DateTime field it shows.
Documentation auto-generated on Sat, 26 Sep 26 10:13:08 +0300