Wakapi : wakatime API client
Read-only API client for the Wakatime API, supporting all GET endpoints as blocking or async depending on the blocking feature flag.
The following endpoints are implemented:
- All Time Since Today : [AllTimeSinceToday], [AllTimeSinceTodayParams], [AllTimeSinceToday::fetch]
- Commit : [Commit], [CommitParams], [Commit::fetch]
- Commits : [Commits], [CommitsParams], [Commits::fetch]
- Durations : [Durations], [DurationsParams], [Durations::fetch]
- Heartbeats : [Heartbeats], [HeartbeatsParams], [Heartbeats::fetch]
- Projects : [Projects], [ProjectsParams], [Projects::fetch]
- Stats : [Stats], [StatsParams], [Stats::fetch]
- Summaries : [Summaries], [SummariesParams], [Summaries::fetch]
The structures are based on the official documentation last checked 2026-05-15.
Known inconsistencies with the official documentation
projects—repositoryandbadgefields are documented as strings but the API returns objects (RepositoryDetailsandProjectBadgerespectively). The struct types match the actual API response.projects— The response includes pagination fields (page,total,total_pages,prev_page,next_page) not shown in the documentation.commits— The response includes apagefield not shown in the documentation.stats— The response includes anis_up_to_date_pending_futureboolean field not present in the documentation.heartbeats—project_root_countis present in the response but not documented.
Usage
Async mode
use WakapiClient;
let client = new;
let res = fetch.await.unwrap;
println!;
Blocking mode
use WakapiClient;
let client = new;
let res = fetch.unwrap;
println!;
Integration tests
Integration tests hit the real Wakatime API and require two environment variables:
| Variable | Description |
|---|---|
WAKAPI_URL |
Base URL of the server, e.g. https://wakatime.com |
WAKAPI_KEY |
Plain-text API key (the client Base64-encodes it) |
# Async (default)
WAKAPI_URL=https://wakatime.com WAKAPI_KEY=<key> cargo
# Blocking
WAKAPI_URL=https://wakatime.com WAKAPI_KEY=<key> cargo
If the environment variables are not set, all tests are silently skipped.
License
This project is licensed under the MIT License.