Complete Kimai time-tracking API integration. Manage timesheets, customers, projects, activities, teams, invoices and exports via REST API. Supports time tracking workflows, reporting, and administrative operations. Keywords - kimai, zeiterfassung, timesheet, tracking, project, customer, activity, invoice, export, timer, stunden
Complete API integration for Kimai time-tracking software. Enables full control over timesheets, projects, customers, activities, teams, invoices, and system configuration.
Activate this skill when the user requests:
Activation triggers:
Do NOT activate for:
Required Environment Variables:
KIMAI_BASE_URL - Full URL to Kimai instance (e.g., https://kimai.example.com)KIMAI_API_TOKEN - Bearer token for authenticationOptional:
KIMAI_WORKSPACE - Path for exports/temp files (defaults to ~/.openclaw/workspace/kimai)API Permissions required depend on operation:
view_own_timesheet, create_own_timesheet, edit_own_timesheet, delete_own_timesheetview_other_timesheet (for viewing other users' entries)view_customer, edit_customer, delete_customerview_project, edit_project, delete_projectview_activity, edit_activity, delete_activityview_team, edit_team, create_team, delete_teamview_invoice (for invoice operations)view_user (for user management)Compatibility: Requires Kimai 2.x with REST API enabled. Internet access required. Linux/macOS supported.
# List recent activities (to find project/activity IDs)
./scripts/kimai_cli.py timesheets recent
# Start tracking
./scripts/kimai_cli.py timesheets start --project 1 --activity 5 --description "Implementing API"
# Check active timers
./scripts/kimai_cli.py timesheets active
# Stop tracking
./scripts/kimai_cli.py timesheets stop --id 123
# Create customer → Project → Activity hierarchy
./scripts/kimai_cli.py customers create --name "Acme Corp" --country DE --currency EUR --timezone Europe/Berlin
./scripts/kimai_cli.py projects create --name "Website Redesign" --customer 1
./scripts/kimai_cli.py activities create --name "Development" --project 1
# List with filters
./scripts/kimai_cli.py timesheets list --customer 1 --begin "2024-01-01T00:00:00" --exported 0
# Mark timesheets as exported (locks them)
./scripts/kimai_cli.py timesheets export --id 123
# List invoices
./scripts/kimai_cli.py invoices list --status pending --begin 2024-01-01T00:00:00
Use scripts/kimai_cli.py for all operations. Structure follows API endpoints:
timesheets)list - List entries (supports pagination, filters: user, customer, project, activity, tags, date range, exported status)get <id> - Fetch single entrycreate - Create manual entry or start timer (omit --end for active tracking)update <id> - Patch existing entrydelete <id> - Requires confirmation (destructive)stop <id> - Stop active timerrestart <id> - Restart finished entry (creates new)duplicate <id> - Copy entry (resets export status)active - List currently running timersrecent - Recent unique working sets (last activity per project/activity combination)export <id> - Toggle export/lock statuscustomers)list - List customers (filter: visible, term)get <id> - Fetch customer detailscreate - Create new customerupdate <id> - Update customerdelete <id> - Requires confirmation (cascades to projects/activities/timesheets)meta <id> - Update custom fieldsrates <id> - Manage customer-specific ratesprojects)list - List projects (filter: customer, visible, date range)get <id> - Fetch projectcreate - Create project (requires customer ID)update <id> - Update projectdelete <id> - Requires confirmation (cascades to activities/timesheets)rates <id> - Manage project ratesactivities)list - List activities (filter: project, visible, global only)get <id> - Fetch activitycreate - Create activity (can be global or project-specific)update <id> - Update activitydelete <id> - Requires confirmation (cascades to timesheets)rates <id> - Manage activity ratesteams)list, get, create, update, deletemember-add <team-id> <user-id> - Add team membermember-remove <team-id> <user-id> - Remove membergrant-customer <team-id> <customer-id> - Grant customer accessgrant-project <team-id> <project-id> - Grant project accessgrant-activity <team-id> <activity-id> - Grant activity accessusers)list - List users (requires view_user permission)me - Current user infoget <id> - User detailscreate - Create user (admin)update <id> - Update userinvoices)list - List invoices (filter: date range, customer, status)get <id> - Invoice detailssystem)ping - Test connectivityversion - Kimai version infoplugins - Installed pluginsconfig - Timesheet configurationcolors - Color codes⚠️ DESTRUCTIVE OPERATIONS
delete operations on customers, projects, activities, timesheets, teams, or tags require explicit user confirmation.API Security:
Authorization: Bearer header [1].--dry-run flag for testing (simulates API calls without executing).Rate Limiting & Pagination:
list commands (fetches all pages or respects --limit).--page and --size for manual pagination control.Data Privacy:
Workspace Safety:
KIMAI_WORKSPACE or ~/.openclaw/workspace/kimai.Inputs:
Outputs:
--format table for human readability)--format csv for exports)Success Criteria:
./scripts/kimai_cli.py timesheets create \
--project 5 \
--activity 12 \
--description "Client meeting - requirements analysis" \
--tags "meeting,urgent"
# Find billable hours not yet exported
./scripts/kimai_cli.py timesheets list \
--exported 0 \
--billable 1 \
--begin "2024-01-01T00:00:00" \
--end "2024-01-31T23:59:59" \
--format csv > january_hours.csv
./scripts/kimai_cli.py customers meta 42 \
--name "order_number" \
--value "PO-2024-001"
./scripts/kimai_cli.py teams create --name "Development Team" --members '[{"user": 1, "teamlead": true}]'
./scripts/kimai_cli.py teams grant-project 1 5
Common HTTP codes:
200 - Success201 - Created204 - No content (successful delete)400 - Bad request (validation error, missing fields)401 - Unauthorized (invalid/expired token)403 - Forbidden (insufficient permissions)404 - Not found (invalid ID)409 - Conflict (overlapping timesheet if not allowed by config)CLI behavior:
Validate this skill using the Openclaw skills validator:
skills-ref validate ./kimai-time-tracking
Test API connectivity:
export KIMAI_BASE_URL="https://your-kimai.example.com"
export KIMAI_API_TOKEN="your-api-token"
./kimai-time-tracking/scripts/kimai_cli.py system ping
references/api-reference.json (complete OpenAPI schema)