Hakuna Timer API
The single running timer for the authenticated user
The single running timer for the authenticated user
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/hakuna-timer-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: hakuna Time Tracking Absences Timer API
description: 'The hakuna REST API provides programmatic access to the hakuna time-tracking and personnel-management platform: the running timer, time entries, absences, projects, tasks, clients, users, and account-wide company settings. Personal endpoints act in the context of the authenticated user; management endpoints require an admin token and the organization endpoint requires an organization-level token. All requests and responses are JSON. Generated by the API Evangelist enrichment pipeline from the published API documentation; not an official hakuna machine-readable specification.'
version: v1
x-apievangelist-generated: '2026-07-19'
x-apievangelist-method: generated
x-apievangelist-source: https://app.hakuna.ch/api_docs
contact:
name: hakuna Support
url: https://www.hakuna.ch/kontakt
termsOfService: https://www.hakuna.ch/rechtliches/agb
servers:
- url: https://app.hakuna.ch/api/v1
description: Production
security:
- AuthToken: []
tags:
- name: Timer
description: The single running timer for the authenticated user
paths:
/timer:
get:
operationId: getTimer
summary: Get the running timer
description: Retrieve the currently running timer for the authenticated user, if any.
tags:
- Timer
responses:
'200':
description: The running timer
content:
application/json:
schema:
$ref: '#/components/schemas/Timer'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/RateLimited'
post:
operationId: startTimer
summary: Start the timer
description: Start a new timer for the authenticated user.
tags:
- Timer
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TimerInput'
responses:
'201':
description: Timer started
content:
application/json:
schema:
$ref: '#/components/schemas/Timer'
'401':
$ref: '#/components/responses/Unauthorized'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'429':
$ref: '#/components/responses/RateLimited'
put:
operationId: updateTimer
summary: Update the running timer
description: Update attributes of the currently running timer.
tags:
- Timer
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/TimerInput'
responses:
'200':
description: Timer updated
content:
application/json:
schema:
$ref: '#/components/schemas/Timer'
'401':
$ref: '#/components/responses/Unauthorized'
'422':
$ref: '#/components/responses/UnprocessableEntity'
'429':
$ref: '#/components/responses/RateLimited'
delete:
operationId: stopTimer
summary: Stop the timer
description: Stop the currently running timer, converting it into a time entry.
tags:
- Timer
responses:
'200':
description: Timer stopped
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/RateLimited'
components:
responses:
UnprocessableEntity:
description: The request payload failed validation.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
RateLimited:
description: Too many requests. Limited to 100 requests per minute per customer.
headers:
X-RateLimit-Limit:
schema:
type: integer
description: Maximum requests allowed in the window.
X-RateLimit-Remaining:
schema:
type: integer
description: Requests remaining in the current window.
X-RateLimit-Reset:
schema:
type: integer
description: Seconds until the window resets.
Retry-After:
schema:
type: integer
description: Seconds to wait before retrying.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
Unauthorized:
description: The auth token is missing or invalid.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
schemas:
Timer:
type: object
description: The running timer for a user.
properties:
start_time:
type: string
format: date-time
duration:
type: string
task:
$ref: '#/components/schemas/Task'
project:
$ref: '#/components/schemas/Project'
note:
type: string
Error:
type: object
description: JSON error object with a descriptive message.
properties:
message:
type: string
description: Human-readable description of the error.
TimerInput:
type: object
properties:
start_time:
type: string
format: date-time
task_id:
type: string
project_id:
type: string
note:
type: string
Client:
type: object
description: A client that projects belong to.
properties:
id:
type: string
name:
type: string
archived:
type: boolean
Project:
type: object
description: A project that time can be tracked against.
properties:
id:
type: string
name:
type: string
archived:
type: boolean
client:
$ref: '#/components/schemas/Client'
Task:
type: object
description: A categorization task.
properties:
id:
type: string
name:
type: string
archived:
type: boolean
securitySchemes:
AuthToken:
type: apiKey
in: header
name: X-Auth-Token
description: Personal API token managed under "My Settings". Organization endpoints require a separate organization-level token; management endpoints require an admin token.