# All the API Commands Here are all the ways you can get data from Hackatime with code. ## How to Log In All requests need your API key: - **Best way**: `Authorization: Bearer YOUR_API_KEY` in the header - **Other way**: Add `?api_key=YOUR_API_KEY` to the URL Get your API key from [Hackatime settings](https://hackatime.hackclub.com/my/settings). ## For WakaTime Tools These work with existing WakaTime apps and libraries. ### Get Today's Time ```bash GET /api/hackatime/v1/users/{user_id}/statusbar/today ``` Shows how much you've coded today. **What you get back**: ```json { "data": { "grand_total": { "total_seconds": 7200.0, "text": "2 hrs" } } } ``` ## Hackatime-Only Commands These are special to Hackatime. ### Your Coding Stats ```bash GET /api/v1/stats ``` Get how much you've coded overall. ### Someone Else's Stats ```bash GET /api/v1/users/{username}/stats ``` See someone else's public coding stats. **What you get back**: ```json { "user": "username", "total_seconds": 86400, "languages": [ { "name": "Python", "seconds": 43200 }, { "name": "JavaScript", "seconds": 28800 } ], "projects": [{ "name": "my-app", "seconds": 36000 }] } ``` ### Your Raw Activity Data ```bash GET /api/v1/my/heartbeats GET /api/v1/my/heartbeats/most_recent ``` Get the raw data about when you coded. **Options you can add**: - `start` - Start date - `end` - End date - `limit` - How many results (max 100) ### Find Users ```bash GET /api/v1/users/lookup_email/{email} GET /api/v1/users/lookup_slack_uid/{slack_uid} ``` Find users by their email or Slack ID. ### User Trust Factor ```bash GET /api/v1/users/{username}/trust_factor ``` Get a user's trust factor. **What you get back**: ```json { "trust_level": "yellow", "trust_value": 0 } ``` ## Try These Examples ### See Your Recent Activity ```bash curl -H "Authorization: Bearer YOUR_API_KEY" \ "https://hackatime.hackclub.com/api/v1/my/heartbeats?limit=10" ``` ### See Today's Time ```bash curl -H "Authorization: Bearer YOUR_API_KEY" \ "https://hackatime.hackclub.com/api/hackatime/v1/users/current/statusbar/today" ``` ## Limits - **Heartbeats**: WakaTime plugins wait 30 seconds between sends - **API Requests**: No hard limits, but don't go crazy ## When Things Go Wrong Errors look like this: ```json { "error": "Invalid API key" } ``` Common problems: - `401` - Bad or missing API key - `404` - That thing doesn't exist - `500` - Something broke on our end