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
required
string <email>

The email of the user to signup

firstName
required
string <email>

The first name of the user to signup

lastName
required
string <email>

The last name the user to signup

password
required
string

The password of the user

orgName
required
string

The name of the organisation the users belong to

Responses

Request samples

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

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
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
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
[
  • {
    }
]

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": "2025-04-22T10:00:00Z",
  • "updatedAt": "2025-04-22T10:00:00Z"
}

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": "contact@visidra.com",
  • "createdAt": "2025-04-22T10:00:00Z",
  • "updatedAt": "2025-04-22T10:00:00Z"
}

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": "contact@visidra.com",
  • "createdAt": "2025-04-22T10:00:00Z",
  • "updatedAt": "2025-04-22T10:00:00Z"
}

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
[
  • {
    }
]

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": "2025-04-22T10:00:00Z",
  • "updatedAt": "2025-04-22T10:00:00Z"
}

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": "2025-04-22T10:00:00Z",
  • "updatedAt": "2025-04-22T10:00:00Z"
}

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": "2025-04-22T10:00:00Z",
  • "updatedAt": "2025-04-22T10:00:00Z"
}

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
string <date-time>

The new expiration date in ISO_8601 format.

Responses

Request samples

Content type
application/json
{
  • "expiresAt": "2025-04-30T00:00:00Z"
}

Response samples

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

Get all API keys

Retrieves all API keys owned by user

Authorizations:
bearerAuth

Responses

Response samples

Content type
application/json
[
  • {
    }
]

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": {
    }
}

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": "2025-04-22T09:00:00Z",
  • "updatedAt": "2025-04-22T09:00:00Z"
}

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": "398fa3ov3",
  • "userId": "Q2fspaa93Ad",
  • "name": "New website design",
  • "description": "Create a new homepage using React",
  • "status": "open",
  • "projectId": "string",
  • "createdAt": "2025-04-22T09:00:00Z",
  • "updatedAt": "2025-04-22T09:00:00Z"
}

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
[
  • {
    }
]

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 shop",
  • "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": "2025-04-22T09:00:00Z",
  • "updatedAt": "2019-08-24T14:15:22Z"
}

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": "2025-04-22T09:00:00Z",
  • "updatedAt": "2019-08-24T14:15:22Z"
}

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": "2025-04-22T09:00:00Z",
  • "updatedAt": "2019-08-24T14:15:22Z"
}

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
[
  • {
    }
]

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": "2025-04-22T09:00:00Z",
  • "updatedAt": "2025-04-22T09:00:00Z"
}

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": "2025-04-22T09:00:00Z",
  • "updatedAt": "2025-04-22T09:00:00Z"
}

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": "2025-04-22T09:00:00Z",
  • "updatedAt": "2025-04-22T09:00:00Z"
}

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": "2025-04-22T09:00:00Z",
  • "updatedAt": "2025-04-22T09:00:00Z"
}

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
[
  • {
    }
]

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": "2025-04-22T09:00:00Z",
  • "updatedAt": "2025-04-22T09:00:00Z"
}

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": "2025-04-22T09:00:00Z",
  • "updatedAt": "2025-04-22T09:00:00Z"
}

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": "2025-04-22T09:00:00Z",
  • "updatedAt": "2025-04-22T09:00:00Z"
}

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,
  • "hours": 1,
  • "minutes": 35,
  • "seconds": 5,
  • "timeFormatted": "1h 35m 5s",
  • "createdAt": "2025-04-22T14:00:00Z",
  • "updatedAt": "2025-04-22T15:35:00Z"
}

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,
  • "hours": 1,
  • "minutes": 35,
  • "seconds": 5,
  • "timeFormatted": "1h 35m 5s",
  • "createdAt": "2025-04-22T14:00:00Z",
  • "updatedAt": "2025-04-22T15:35:00Z"
}

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,
  • "hours": 1,
  • "minutes": 35,
  • "seconds": 5,
  • "timeFormatted": "1h 35m 5s",
  • "createdAt": "2025-04-22T14:00:00Z",
  • "updatedAt": "2025-04-22T15:35:00Z"
}

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,
  • "hours": 1,
  • "minutes": 35,
  • "seconds": 5,
  • "timeFormatted": "1h 35m 5s",
  • "createdAt": "2025-04-22T14:00:00Z",
  • "updatedAt": "2025-04-22T15:35:00Z"
}

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,
  • "hours": 1,
  • "minutes": 35,
  • "seconds": 5,
  • "timeFormatted": "1h 35m 5s",
  • "createdAt": "2025-04-22T14:00:00Z",
  • "updatedAt": "2025-04-22T15:35:00Z"
}

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,
  • "hours": 1,
  • "minutes": 35,
  • "seconds": 5,
  • "timeFormatted": "1h 35m 5s",
  • "createdAt": "2025-04-22T14:00:00Z",
  • "updatedAt": "2025-04-22T15:35:00Z"
}

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

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,
  • "hours": 1,
  • "minutes": 35,
  • "seconds": 5,
  • "timeFormatted": "1h 35m 5s",
  • "createdAt": "2025-04-22T14:00:00Z",
  • "updatedAt": "2025-04-22T15:35:00Z"
}

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"
}

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
[
  • {
    }
]

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": "2025-04-22T10:00:00Z",
  • "updatedAt": "2025-04-22T10:00:00Z"
}

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, 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
{
  • "hours": 4,
  • "minutes": 10,
  • "seconds": 10,
  • "taskId": "string",
  • "taskName": "New website design",
  • "taskDescription": "Create a new homepage using React",
  • "timeFormatted": "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
{
  • "hours": 4,
  • "minutes": 10,
  • "seconds": 10,
  • "taskId": "string",
  • "taskName": "New website design",
  • "taskDescription": "Create a new homepage using React",
  • "timeFormatted": "4h 10m 10s",
  • "total": 1712100000000,
  • "users": [
    ]
}

Get project report 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
{
  • "hours": 4,
  • "minutes": 10,
  • "seconds": 10,
  • "projectId": "string",
  • "projectName": "string",
  • "projectDescription": "string",
  • "total": 0,
  • "timeFormatted": "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
{
  • "hours": 4,
  • "minutes": 10,
  • "seconds": 10,
  • "projectId": "string",
  • "projectName": "string",
  • "projectDescription": "string",
  • "total": 0,
  • "timeFormatted": "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
{
  • "hours": 4,
  • "minutes": 10,
  • "seconds": 10,
  • "userId": "string",
  • "userName": "string",
  • "total": 0,
  • "timeFormatted": "string",
  • "projects": [
    ]
}