Check that the API module is on
In Settings, Modules tab, the API module must be ticked. Without it, every key is refused, even a valid one. Depending on your plan, the module may not be offered: write to us in that case.
Create a key
In Settings, Data tab, API keys block: give it a Name that says what it is for ("Power BI management", for example), then Create a key.
The key starts with tk_. It is shown only once: copy it into your password vault.
The list then shows the date it was last used.
Pass it in the Authorization header
Every call carries the header Authorization: Bearer tk_…. Only reading (GET) is accepted:
a write returns 403. Replace your-instance with the address of your Klepsi.
curl -H 'Authorization: Bearer tk_…' \
'https://your-instance/api/v1/tasks/?date_from=2026-09-01&date_to=2026-09-30'Useful addresses
All of them start with https://your-instance/api/v1 and return JSON, unless stated otherwise.
| Address | Content |
|---|---|
/tasks/ | Time entries. Filters: date_from, date_to, project_id, user_id. |
/projects/ | Projects. |
/clients/ | Clients. |
/users/ | Users. |
/teams/ | Teams. |
/reports/generate | The report for a period, as csv, xlsx, json or pdf. Required parameters: date_from and date_to. Optional: format, group_by (project or user), client_id, project_id. |
/absences | Absences, if the module is on. |
/expenses | Expense reports, if the module is on. |
/settings/data/export | The full export of the instance, as a zip of CSV files. |
Dates are written YYYY-MM-DD. Keep the trailing slash on the addresses that have one.
In Excel or Power BI
Both use Power Query. The simplest way is to start from a blank query and paste the code in the Advanced Editor:
let
Source = Json.Document(Web.Contents(
"https://your-instance/api/v1/tasks/",
[
Query = [date_from = "2026-09-01", date_to = "2026-09-30"],
Headers = [Authorization = "Bearer tk_…"]
]
)),
Entries = Table.FromRecords(Source)
in
EntriesWhen Power Query asks how to connect, choose Anonymous: the key is already in the header.
For a ready-to-use table, the /reports/generate address with format=csv is read with Csv.Document instead of Json.Document.
Need help?
Our support team can walk you through the setup. Write to us at support@aleop.eu.