TimeTracks API (1.0.0)

Download OpenAPI specification:Download

Dragan Dimitrijevic: dragan@visidra.com URL: http://www.visidra.com License: visidra.com

TimeTrack API is a headless solution for versatile time tracking

Account

Endpoints related to user authentication and account management, including signup, login, token refresh, and invitation-based registration.

Signup a new user and organisation

Request Body schema: application/json

Signup required field

email
string <email>

The email of the user to signup

firstName
string <email>

The first name of the user to signup

lastName
string <email>

The last name the user to signup

password
string

The password of the user

orgName
string

The name of the organisation the users belong to

required
any

Responses

Request samples

Content type
application/json
{
  • "email": "user@example.com",
  • "firstName": "user@example.com",
  • "lastName": "user@example.com",
  • "password": "string",
  • "orgName": "string",
  • "required": null
}

Response samples

Content type
application/json
{
  • "message": "User and organisation registered successfully",
  • "user": {
    },
  • "org": {
    }
}

Login with email and password

Authenticates the user using their email and password credentials. Returns a long-lived access token (valid for 1 day) and a refresh token (valid for 7 days) to enable continuous access without requiring frequent re-authentication. This flow is suitable for interactive user sessions such as web or mobile clients.

Request Body schema: application/json
required

Login credentials (email and password)

email
required
string <email>
password
required
string <password>

Responses

Request samples

Content type
application/json
{
  • "email": "user@visidra.com",
  • "password": "password123"
}

Response samples

Content type
application/json
{
  • "accessToken": "q224EM8d...",
  • "refreshToken": "ia3af99...",
  • "expiresIn": 1714586400000
}

Rotate long-lived refresh token

Exchanges a valid refresh token for a new access token and refresh token pair. The access token is valid for 1 day, and the refresh token expires 7 days after the session start time. To maintain continuous access, clients must call this endpoint before the refresh token expires.

Request Body schema: application/json
required

Refresh token

refreshToken
required
string

Responses

Request samples

Content type
application/json
{
  • "refreshToken": "eyJhbGciOi..."
}

Response samples

Content type
application/json
{
  • "accessToken": "q224EM8d...",
  • "refreshToken": "ia3af99...",
  • "expiresIn": 1714586400000
}

Login with API key

Logs in a user and returns a short-lived JWT along with a refresh token. Intended for programmatic access such as CLI tools, scripts, or temporary sessions requiring frequent token rotation.

Request Body schema: application/json
required

Login with API key

apiKey
required
string <key>

Responses

Request samples

Content type
application/json
{
  • "apiKey": "k4t43m1d... (secret)"
}

Response samples

Content type
application/json
{
  • "accessToken": "q224EM8d...",
  • "refreshToken": "ia3af99...",
  • "expiresIn": 1714586400000
}

Rotate short-term refresh token

Exchanges a short-lived refresh token for a new access token and refresh token pair. The access token is valid for 15 minutes, while the refresh token remains valid for 1 day from the session start time. This flow is optimized for automated scripts or background jobs that require frequent token renewal and short-lived access, with security in mind.

Request Body schema: application/json
required

Refresh token

refreshToken
required
string

Responses

Request samples

Content type
application/json
{
  • "refreshToken": "eyJhbGciOi..."
}

Response samples

Content type
application/json
{
  • "accessToken": "q224EM8d...",
  • "refreshToken": "ia3af99...",
  • "expiresIn": 1714586400000
}

List all active sessions for the organisation

Retrieves all active sessions (access and refresh tokens) created by users within the authenticated organisation. This endpoint is typically used by administrators to monitor or audit user sessions across the entire team. Requires a valid access token with administrative privileges.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "lastKey": "string"
}

List all API keys for organisations

Retrieves all API keys owned by organisation

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "lastKey": "string"
}

Signup a user using an invitation

Completes the signup process for an invited user using a one-time invitation link. Creates the user account and removes the invitation if it is valid and not expired.

Authorizations:
bearerAuth
Request Body schema: application/json
required

User object that needs to be created

firstName
string
lastName
string
email
required
string <email>
role
required
string
Enum: "member" "admin"

The user's role within the organization.

Responses

Request samples

Content type
application/json
{
  • "firstName": "John",
  • "lastName": "Doe",
  • "email": "john.doe@example.com",
  • "role": "member"
}

Response samples

Content type
application/json
{
  • "id": "Q2fspaa93Ad",
  • "firstName": "Doug",
  • "lastName": "John",
  • "email": "john.doe@example.com",
  • "role": "member",
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

Organisation

Endpoints for creating and managing organisations, including access to organisation details, user membership, and administrative actions.

Get organisation by ID

Retrieves an organisation by its ID.

Authorizations:
bearerAuth
path Parameters
orgId
required
string
Example: Os2fe92ja9EA

The ID of the organisation

Responses

Response samples

Content type
application/json
{
  • "id": "Os2fe92ja9EA",
  • "name": "Visidra",
  • "decription": "string",
  • "email": "user@example.com",
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

Update organisation by ID

Updates an organisation's details.

Authorizations:
bearerAuth
path Parameters
orgId
required
string
Example: Os2fe92ja9EA

The ID of the organisation

Request Body schema: application/json
required

Organisation object that needs to be updated

name
string
email
string <email>
description
string

Responses

Request samples

Content type
application/json
{
  • "name": "Visidra Updated",
  • "email": "contact.updated@visidra.com",
  • "description": "456 New Address Rd, Tech City"
}

Response samples

Content type
application/json
{
  • "id": "Os2fe92ja9EA",
  • "name": "Visidra",
  • "decription": "string",
  • "email": "user@example.com",
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

Delete organisation by ID

Deletes an organisation by its ID.

Authorizations:
bearerAuth
path Parameters
orgId
required
string
Example: Os2fe92ja9EA

The ID of the organisation

Responses

Response samples

Content type
application/json
{
  • "message": "Response message"
}

User

Endpoints for managing user accounts within an organisation, including listing users, updating user details, and resetting passwords.

Get all users

Retrieves all users under your organisation

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "lastKey": "string"
}

Get user count

Returns the total number of users in your organisation.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
null

Create a new user

Creates a new user entry

Authorizations:
bearerAuth
Request Body schema: application/json
required

User object that needs to be created

firstName
string
lastName
string
email
required
string <email>
role
required
string
Enum: "member" "admin"

The user's role within the organization.

Responses

Request samples

Content type
application/json
{
  • "firstName": "John",
  • "lastName": "Doe",
  • "email": "john.doe@example.com",
  • "role": "member"
}

Response samples

Content type
application/json
{
  • "id": "Q2fspaa93Ad",
  • "firstName": "Doug",
  • "lastName": "John",
  • "email": "john.doe@example.com",
  • "role": "member",
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

Get user by ID

Retrieves a user by their ID.

Authorizations:
bearerAuth
path Parameters
userId
required
string

The ID of the user

Responses

Response samples

Content type
application/json
{
  • "id": "Q2fspaa93Ad",
  • "firstName": "Doug",
  • "lastName": "John",
  • "email": "john.doe@example.com",
  • "role": "member",
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

Update a user by ID

Updates a user's details.

Authorizations:
bearerAuth
path Parameters
userId
required
string

The ID of the user

Request Body schema: application/json
required

User object that needs to be updated

firstName
string
lastName
string
email
string <email>

Responses

Request samples

Content type
application/json
{
  • "firstName": "Doug",
  • "lastName": "John",
  • "email": "john.doe@example.com"
}

Response samples

Content type
application/json
{
  • "id": "Q2fspaa93Ad",
  • "firstName": "Doug",
  • "lastName": "John",
  • "email": "john.doe@example.com",
  • "role": "member",
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

Delete a user by ID

Deletes a user by their ID.

Authorizations:
bearerAuth
path Parameters
userId
required
string

The ID of the user

Responses

Response samples

Content type
application/json
{
  • "message": "Response message"
}

Update user password

Allows a user to update their own password.

Authorizations:
bearerAuth
path Parameters
userId
required
string

The ID of the user

Request Body schema: application/json
required

Object that updates password

password
required
string <password> >= 12 characters

The new password the user wants to set.

Responses

Request samples

Content type
application/json
{
  • "password": "pa$$word_qwe"
}

Response samples

Content type
application/json
{
  • "message": "Password updated successfully"
}

Reset user password by admin

Allows an admin to reset a user's password.

Authorizations:
bearerAuth
path Parameters
userId
required
string

The ID of the user

Request Body schema: application/json
expiresAt
required
integer <int64>

Start time of the time track in UNIX milliseconds

Responses

Request samples

Content type
application/json
{
  • "expiresAt": 1712100000000
}

Response samples

Content type
application/json
{
  • "message": "Password reset scheduled",
  • "expiresAt": 1712100000000
}

Get all API keys for user

Retrieves all API keys owned by user

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "lastKey": "string"
}

Create a new API key

Generates a new API key for the authenticated user. The plain-text key is returned once in the response and must be stored securely. The response also includes metadata about the key for future reference.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Name for the new API key

name
required
string

Responses

Request samples

Content type
application/json
{
  • "name": "Name of the new api key"
}

Response samples

Content type
application/json
{
  • "apiKey": "k4t43m1d... (secret)",
  • "message": "API key created. Store it securely — it will not be shown again.",
  • "info": null
}

Get API key by ID

Retrieves metadata for a specific API key, including its name, creation time, last usage timestamp, and masked identifier (last 4 characters).i The actual secret value of the API key is not returned for security reasons.

Authorizations:
bearerAuth
path Parameters
apiKeyId
required
string

The ID of the api key

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "last4": "string",
  • "lastUsedAt": 0,
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

Rotate (renew) an API key

Invalidates the existing API key and generates a new one. The original key is permanently deleted, and a new key is returned in the response. The new key must be stored securely, as it will not be shown again. Useful when rotating credentials for security or automation purposes.

Authorizations:
bearerAuth
path Parameters
apiKeyId
required
string

The ID of the api key

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "last4": "string",
  • "lastUsedAt": 0,
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

Delete a API key by ID

Permanently deletes an API key identified by its ID. This action revokes access for any client using the key. Once deleted, the key cannot be recovered.

Authorizations:
bearerAuth
path Parameters
apiKeyId
required
string

The ID of the api key

Responses

Response samples

Content type
application/json
{
  • "message": "Response message"
}

Project

Endpoints for creating and managing projects, which group related tasks and time tracking entries under a shared context.

Get all projects

Retrieves all projects.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "lastKey": "string"
}

Get project count

Returns the total number of projects in your organisation.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "count": 29
}

Create a new project

Creates a new project entry.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Project object that needs to be created

name
required
string
description
string
externalId
string

Responses

Request samples

Content type
application/json
{
  • "name": "New e-commerce system",
  • "description": "Few months with NestJS and Vue",
  • "externalId": "JIRA-102"
}

Response samples

Content type
application/json
{
  • "id": "E9a9f9f93Aq",
  • "userId": "Q2fspaa93Ad",
  • "name": "New e-commerce system",
  • "description": "Few months with NestJS and Vue",
  • "externalId": "JIRA-102",
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

Get project by ID

Retrieves a project by its ID.

Authorizations:
bearerAuth
path Parameters
projectId
required
string

ID of the Project

Responses

Response samples

Content type
application/json
{
  • "id": "E9a9f9f93Aq",
  • "userId": "Q2fspaa93Ad",
  • "name": "New e-commerce system",
  • "description": "Few months with NestJS and Vue",
  • "externalId": "JIRA-102",
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

Update a project

Updates a project's details.

Authorizations:
bearerAuth
path Parameters
projectId
required
string

ID of the Project

Request Body schema: application/json
required

Project object that needs to be updated

name
required
string
description
string

Responses

Request samples

Content type
application/json
{
  • "name": "New e-commerce system",
  • "description": "Few months with NestJS and Vue"
}

Response samples

Content type
application/json
{
  • "id": "E9a9f9f93Aq",
  • "userId": "Q2fspaa93Ad",
  • "name": "New e-commerce system",
  • "description": "Few months with NestJS and Vue",
  • "externalId": "JIRA-102",
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

Delete a project

Deletes a project by its ID

Authorizations:
bearerAuth
path Parameters
projectId
required
string

ID of the Project

Responses

Response samples

Content type
application/json
{
  • "message": "Response message"
}

Get all tasks by project ID

Retrieve all tasks associated with a specific project.

Authorizations:
bearerAuth
path Parameters
projectId
required
string

ID of the Project

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "lastKey": "string"
}

Create a new task to a specific project.

Adds a new task and assigns it to the specified project by project ID.

Authorizations:
bearerAuth
path Parameters
projectId
required
string

ID of the Project

Request Body schema: application/json
required

Task object that needs to be created

name
required
string
description
string

Responses

Request samples

Content type
application/json
{
  • "name": "New website design",
  • "description": "Create a new homepage using React"
}

Response samples

Content type
application/json
{
  • "id": "398fa3ov3",
  • "userId": "Q2fspaa93Ad",
  • "name": "New website design",
  • "description": "Create a new homepage using React",
  • "status": "open",
  • "projectId": "string",
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

Move a task to another project

Updates the task's project association by assigning it to a different project. This operation is useful for reorganizing tasks across projects without modifying the task content.

Authorizations:
bearerAuth
path Parameters
projectId
required
string

ID of the Project

taskId
required
string

The ID of the task

Request Body schema: application/json
required

Object containing task move information

projectId
required
string

Responses

Request samples

Content type
application/json
{
  • "projectId": "I9a2f9f13Aq"
}

Response samples

Content type
application/json
{
  • "id": "398fa3ov3",
  • "userId": "Q2fspaa93Ad",
  • "name": "New website design",
  • "description": "Create a new homepage using React",
  • "status": "open",
  • "projectId": "string",
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

Remove task from project

Permanently deletes a task from the specified project. This operation cannot be undone and will remove the task and its time tracking data entirely.

Authorizations:
bearerAuth
path Parameters
projectId
required
string

ID of the Project

taskId
required
string

The ID of the task

Responses

Response samples

Content type
application/json
{
  • "message": "Response message"
}

Detach task from a project

Removes the association between the task and its project, but keeps the task and its data intact.

Authorizations:
bearerAuth
path Parameters
projectId
required
string

ID of the Project

taskId
required
string

The ID of the task

Responses

Response samples

Content type
application/json
{
  • "id": "398fa3ov3",
  • "userId": "Q2fspaa93Ad",
  • "name": "New website design",
  • "description": "Create a new homepage using React",
  • "status": "open",
  • "projectId": "string",
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

Attach an existing task to a project

Associates an existing standalone task with the specified project. This operation updates the task's project reference without modifying other task data.

Authorizations:
bearerAuth
path Parameters
projectId
required
string

ID of the Project

taskId
required
string

The ID of the task

Responses

Response samples

Content type
application/json
{
  • "id": "398fa3ov3",
  • "userId": "Q2fspaa93Ad",
  • "name": "New website design",
  • "description": "Create a new homepage using React",
  • "status": "open",
  • "projectId": "string",
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

Task

Endpoints for managing individual tasks, including creation, time tracking, project assignment, and status management.

Get all tasks

Retrieves all tasks

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "lastKey": "string"
}

Get task count

Returns the total number of tasks in your organisation.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
null

Create a new task

Creates a new task entry.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Task object that needs to be created

name
required
string
description
string

Responses

Request samples

Content type
application/json
{
  • "name": "New website design",
  • "description": "Create a new homepage using React"
}

Response samples

Content type
application/json
{
  • "id": "398fa3ov3",
  • "userId": "Q2fspaa93Ad",
  • "name": "New website design",
  • "description": "Create a new homepage using React",
  • "status": "open",
  • "projectId": "string",
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

Get task by ID

Retrieves a task by its ID.

Authorizations:
bearerAuth
path Parameters
taskId
required
string

The ID of the task

Responses

Response samples

Content type
application/json
{
  • "id": "398fa3ov3",
  • "userId": "Q2fspaa93Ad",
  • "name": "New website design",
  • "description": "Create a new homepage using React",
  • "status": "open",
  • "projectId": "string",
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

Update a task by ID

Updates a task's details

Authorizations:
bearerAuth
path Parameters
taskId
required
string

The ID of the task

Request Body schema: application/json
required

Task object that needs to be updated

name
required
string
description
required
string

Responses

Request samples

Content type
application/json
{
  • "name": "New website design",
  • "description": "Create a new homepage using React"
}

Response samples

Content type
application/json
{
  • "id": "398fa3ov3",
  • "userId": "Q2fspaa93Ad",
  • "name": "New website design",
  • "description": "Create a new homepage using React",
  • "status": "open",
  • "projectId": "string",
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

Delete a task by ID

Deletes a task by its ID.

Authorizations:
bearerAuth
path Parameters
taskId
required
string

The ID of the task

Responses

Response samples

Content type
application/json
{
  • "message": "Response message"
}

Clock in using a task ID

Starts time tracking for task ID

Authorizations:
bearerAuth
path Parameters
taskId
required
string

The ID of the task

Responses

Response samples

Content type
application/json
{
  • "id": "398fa3ov3",
  • "taskId": "task789",
  • "userId": "user456",
  • "startTime": "2025-04-22T14:00:00Z",
  • "endTime": "2025-04-22T15:30:00Z",
  • "start": 1712100000000,
  • "end": 1714580000000,
  • "amount": 1714500000000,
  • "timeFormatted": "1h 35m 5s",
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

Clock out using a task ID

Ends time tracking for task ID.

Authorizations:
bearerAuth
path Parameters
taskId
required
string

The ID of the task

Responses

Response samples

Content type
application/json
{
  • "id": "398fa3ov3",
  • "taskId": "task789",
  • "userId": "user456",
  • "startTime": "2025-04-22T14:00:00Z",
  • "endTime": "2025-04-22T15:30:00Z",
  • "start": 1712100000000,
  • "end": 1714580000000,
  • "amount": 1714500000000,
  • "timeFormatted": "1h 35m 5s",
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

Clock in using task name

Starts time tracking using task name. If tasks does not exist, it gets created first

Authorizations:
bearerAuth
path Parameters
name
required
string
Example: Write API Documentation

Name of the task to clock in

Responses

Response samples

Content type
application/json
{
  • "id": "398fa3ov3",
  • "taskId": "task789",
  • "userId": "user456",
  • "startTime": "2025-04-22T14:00:00Z",
  • "endTime": "2025-04-22T15:30:00Z",
  • "start": 1712100000000,
  • "end": 1714580000000,
  • "amount": 1714500000000,
  • "timeFormatted": "1h 35m 5s",
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

Clock in using external ID

Starts time tracking using external ID. This ID typically comes from an integrated third-party project management system such as Jira, Trello, Asana, or GitHub. If tasks does not exists, it gets created first

Authorizations:
bearerAuth
path Parameters
externalid
required
string
Example: JIRA-492

The external ID of the task to clock in

Responses

Response samples

Content type
application/json
{
  • "id": "398fa3ov3",
  • "taskId": "task789",
  • "userId": "user456",
  • "startTime": "2025-04-22T14:00:00Z",
  • "endTime": "2025-04-22T15:30:00Z",
  • "start": 1712100000000,
  • "end": 1714580000000,
  • "amount": 1714500000000,
  • "timeFormatted": "1h 35m 5s",
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

TimeTrack

Endpoints for recording and retrieving time tracking entries for tasks, including clock-in, clock-out, and duration reporting.

Get all time tracks under task ID

Retrieves all time tracking entries associated with the specified task. Useful for reporting, auditing, or displaying time spent on a specific task.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create a new time track under task ID

Starts a new time tracking entry for the specified task. Records the start time and, optionally, the end time if provided.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Create a new time track entry

start
required
integer <int64>

Unix timestamp in milliseconds (UTC)

end
integer <int64>

Unix timestamp in milliseconds (UTC)

Responses

Request samples

Content type
application/json
{
  • "start": 0,
  • "end": 0
}

Response samples

Content type
application/json
{
  • "id": "398fa3ov3",
  • "taskId": "task789",
  • "userId": "user456",
  • "startTime": "2025-04-22T14:00:00Z",
  • "endTime": "2025-04-22T15:30:00Z",
  • "start": 1712100000000,
  • "end": 1714580000000,
  • "amount": 1714500000000,
  • "timeFormatted": "1h 35m 5s",
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

Get a time track under task ID

Retrieves a specific time tracking entry associated with the given task ID and time track ID. Useful for viewing detailed time tracking information for a single entry.

Authorizations:
bearerAuth
path Parameters
taskId
required
string

The ID of the task

trackId
required
string

The ID of the TimeTrack

Responses

Response samples

Content type
application/json
{
  • "id": "398fa3ov3",
  • "taskId": "task789",
  • "userId": "user456",
  • "startTime": "2025-04-22T14:00:00Z",
  • "endTime": "2025-04-22T15:30:00Z",
  • "start": 1712100000000,
  • "end": 1714580000000,
  • "amount": 1714500000000,
  • "timeFormatted": "1h 35m 5s",
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

Update a time track under task ID

Modifies an existing time tracking entry associated with the specified task. Typically used to set or adjust the end time, duration, or correct tracking errors.

Authorizations:
bearerAuth
path Parameters
taskId
required
string

The ID of the task

trackId
required
string

The ID of the TimeTrack

Request Body schema: application/json
required

Update exiting time track entry

start
required
integer <int64>

Unix timestamp in milliseconds (UTC)

end
integer <int64>

Unix timestamp in milliseconds (UTC)

Responses

Request samples

Content type
application/json
{
  • "start": 0,
  • "end": 0
}

Response samples

Content type
application/json
{
  • "id": "398fa3ov3",
  • "taskId": "task789",
  • "userId": "user456",
  • "startTime": "2025-04-22T14:00:00Z",
  • "endTime": "2025-04-22T15:30:00Z",
  • "start": 1712100000000,
  • "end": 1714580000000,
  • "amount": 1714500000000,
  • "timeFormatted": "1h 35m 5s",
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

Delete a time track under task ID

Permanently removes a specific time tracking entry associated with the given task. This action cannot be und

Authorizations:
bearerAuth
path Parameters
taskId
required
string

The ID of the task

trackId
required
string

The ID of the TimeTrack

Responses

Response samples

Content type
application/json
{
  • "message": "Response message"
}

Get time track count

Returns the total number of time tracks in your organisation.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
null

Invitation

Endpoints for managing user invitations, including creating signup links and handling one-time invitation-based account registration. (Optional: may be grouped under Account)

Get all invitations

Retrieves all invitations under your organisation

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "lastKey": "string"
}

Get invitation count

Returns the total number of invitations in your organisation.

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
{
  • "count": 29
}

Create a new invitation for user signup

Creates a new invitation for a user to join the organisation. The invitation includes a one-time signup link that expires after 1 day.

Authorizations:
bearerAuth
Request Body schema: application/json
required

Invitation object that needs to be created

email
required
string <email>

The email of the user being invited.

Responses

Request samples

Content type
application/json
{
  • "email": "john.doe@example.com"
}

Response samples

Content type
application/json
{}

Get an invitation by ID

Retrieves an invitation by its ID, including the email and expiration details. Typically used to validate and display invitation information before signup.

Authorizations:
bearerAuth
path Parameters
invId
required
string
Example: QEFf93fjap

The unique ID of the invitation

Responses

Response samples

Content type
application/json
{
  • "id": "QEFf93fjap",
  • "email": "john.doe@example.com",
  • "expiresAt": "2025-04-22T10:00:00Z",
  • "createdAt": 1712100000000,
  • "updatedAt": 1712100000000
}

Delete an invitation

Deletes a pending invitation by its ID. This operation is typically used to revoke access before the invitation is accepted. Only valid for invitations that have not yet been used or expired.

Authorizations:
bearerAuth
path Parameters
invId
required
string
Example: QEFf93fjap

The unique ID of the invitation

Responses

Response samples

Content type
application/json
{
  • "message": "Response message"
}

Report

Endpoints intended for internal use only. Access is restricted to super users with elevated permissions. These operations are not available to regular organisation members.

Get task report for total tracked time

Retrieves a detailed time tracking report for a specific task, including total tracked time, and related time entries.

Authorizations:
bearerAuth
path Parameters
taskId
required
string

The ID of the task

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "New website design",
  • "description": "Create a new homepage using React",
  • "totalFormatted": "4h 10m 10s",
  • "total": 1712100000000,
  • "tracks": [
    ]
}

Get task report with user breakdown

Retrieves a detailed time tracking report for a specific task, including total tracked time, user-by-user breakdown, and related time entries.

Authorizations:
bearerAuth
path Parameters
taskId
required
string

The ID of the task

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "New website design",
  • "description": "Create a new homepage using React",
  • "totalFormatted": "4h 10m 10s",
  • "total": 1712100000000,
  • "users": [
    ]
}

Get project report with user breakdown

Retrieves a time tracking report for a specific project, including a breakdown of total time tracked by each user across all associated tasks.

Authorizations:
bearerAuth
path Parameters
projectId
required
string

ID of the Project

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "description": "string",
  • "total": 0,
  • "totalFormatted": "string",
  • "users": [
    ]
}

Get project report with task breakdown

Retrieves a time tracking report for a specific project, including a breakdown of total time tracked for each task within the project. Useful for understanding how time is distributed across tasks regardless of user.

Authorizations:
bearerAuth
path Parameters
projectId
required
string

ID of the Project

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "name": "string",
  • "description": "string",
  • "total": 0,
  • "totalFormatted": "string",
  • "tasks": [
    ]
}

Get user report with project breakdown

Retrieves a time tracking report for a specific user, including a project-level breakdown with all associated tasks and time tracked within each. Useful for reviewing a user's activity across multiple projects over a given time range.

Authorizations:
bearerAuth
path Parameters
userId
required
string

The ID of the user

query Parameters
startDate
integer
Example: startDate=1714521600000

Start of the time range (inclusive), in UNIX milliseconds. The range between startDate and endDate must not exceed 7 days.

endDate
integer
Example: endDate=1715039999999

End of the time range (inclusive), in UNIX milliseconds. The range between startDate and endDate must not exceed 7 days.

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "email": "string",
  • "firstName": "string",
  • "lasttName": "string",
  • "total": 0,
  • "totalFormatted": "string",
  • "projects": [
    ]
}

Overview

Overview endpoints provide high-level aggregated data across users, tasks, or projects. Intended for internal dashboards or analytics tools. Access is restricted to super users with elevated permissions. Regular organisation members are not authorized to query these endpoints.

Get an overview of users

Returns a high-level summary of users in the organization. Supports pagination.

query Parameters
limit
integer [ 1 .. 100 ]
Default: 20

Maximum number of users to include in the summary.

lastKey
string

Pagination token to fetch the next set of results.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "lastKey": "string"
}

Get an overview of tasks

Returns a high-level summary of tasks in the organization. Supports pagination.

query Parameters
limit
integer [ 1 .. 100 ]
Default: 20

Maximum number of users to include in the summary.

lastKey
string

Pagination token to fetch the next set of results.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "lastKey": "string"
}

Get an overview of projects

Returns a high-level summary of projects in the organization. Supports pagination.

query Parameters
limit
integer [ 1 .. 100 ]
Default: 20

Maximum number of users to include in the summary.

lastKey
string

Pagination token to fetch the next set of results.

Responses

Response samples

Content type
application/json
{
  • "items": [
    ],
  • "lastKey": "string"
}

Metrics

These endpoints return the total time tracked by all users in an organization for a specific time window — day, week, or month. Intended for internal reporting and performance dashboards, they provide high-level insight into organizational activity. Only administrators are authorized to access these endpoints.

Get total time tracked by day

Returns the total time tracked across the organization for a specific day, relative to today. Index 0 means today, 1 means yesterday, 2 means two days ago, etc. Requires admin-level authorization.

path Parameters
index
required
integer >= 0

Number of days ago to query. Use 0 for today, 1 for yesterday, etc.

Responses

Response samples

Content type
application/json
{
  • "total": 28800000,
  • "range": {
    }
}

Get total time tracked for a specific week

Returns the total time tracked across the organization for a specific week. Index 0 means the current week, 1 means last week, 2 the week before, etc. Each week starts on Monday (ISO 8601). Requires admin-level authorization.

path Parameters
index
required
integer >= 0

Number of weeks ago to query. Use 1 for the current week, 2 for the previous week, 3 for two weeks ago, etc.

Responses

Response samples

Content type
application/json
{
  • "total": 28800000,
  • "range": {
    }
}

Get total time tracked for a specific month

Returns the total time tracked across the organization for a specific month. Index 0 refers to the current month, 1 to last month, 2 to the month before that, etc. Results are calculated based on full calendar months. Requires admin-level authorization.

path Parameters
index
required
integer >= 0

Number of months ago to query. Use 1 for the current month, 2 for the previous month, 3 for two months ago, etc.

Responses

Response samples

Content type
application/json
{
  • "total": 28800000,
  • "range": {
    }
}

Get grouped time tracked for a week (daily breakdown)

Returns a list of total time tracked for each day in the specified week index. The index is a positive number where:

  • 1 = current week
  • 2 = previous week
  • 3 = two weeks ago, etc.
path Parameters
index
required
integer >= 0

Number of weeks ago to query. Use 1 for the current week, 2 for the previous week, 3 for two weeks ago, etc.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get grouped time tracked for a month (daily breakdown)

Returns a list of total time tracked for each day in the specified month index. The index is a positive number where:

  • 1 = current month
  • 2 = previous month
  • 3 = two months ago, etc.
path Parameters
index
required
integer >= 0

Number of months ago to query. Use 1 for the current month, 2 for the previous month, 3 for two months ago, etc.

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Get top users, tasks, and projects for a specific day

path Parameters
index
required
integer >= 0

Number of days ago to query. Use 0 for today, 1 for yesterday, etc.

Responses

Response samples

Content type
application/json
{
  • "users": [
    ],
  • "tasks": [
    ],
  • "projects": [
    ]
}

Get top users, tasks, and projects for a specific week

path Parameters
index
required
integer >= 0

Number of weeks ago to query. Use 1 for the current week, 2 for the previous week, 3 for two weeks ago, etc.

Responses

Response samples

Content type
application/json
{
  • "users": [
    ],
  • "tasks": [
    ],
  • "projects": [
    ]
}

Get top users, tasks, and projects for a specific month

path Parameters
index
required
integer >= 0

Number of weeks ago to query. Use 1 for the current week, 2 for the previous week, 3 for two weeks ago, etc.

Responses

Response samples

Content type
application/json
{
  • "users": [
    ],
  • "tasks": [
    ],
  • "projects": [
    ]
}