Hakuna Timer API
The single running timer for the authenticated user
The single running timer for the authenticated user
openapi: 3.0.3
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:
schemas:
Error:
type: object
description: JSON error object with a descriptive message.
properties:
message:
type: string
description: Human-readable description of the error.
Task:
type: object
description: A categorization task.
properties:
id:
type: string
name:
type: string
archived:
type: boolean
Client:
type: object
description: A client that projects belong to.
properties:
id:
type: string
name:
type: string
archived:
type: boolean
TimerInput:
type: object
properties:
start_time:
type: string
format: date-time
task_id:
type: string
project_id:
type: string
note:
type: string
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'
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
responses:
Unauthorized:
description: The auth token is missing or invalid.
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'
UnprocessableEntity:
description: The request payload failed validation.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
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.