Rabbiit Logo

Rabbiit API V1 (1.0)

Download OpenAPI specification:Download

Introduction

Rabbiit is a time tracking and project management software for teams and freelancers, built to make time management simple, fast, and accurate.

The Rabbiit API is a RESTful web service that enables full integration with your workspace. It accepts form-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP methods, authentication, and status codes.

Supported HTTP methods: GET, POST, DELETE.

Base URL www.rabbiit.com/api/v1

Authentication

To be able to use Rabbiit API you must send your API Token via the HTTP header x-api-token.

API tokens are generated using a user's email and password.

API tokens carry all of a user's privileges and grant access to your account, so make sure you keep them safe and secret! Don't share your API tokens in publicly accessible areas like GitHub, client-side code, and so on.

Each API token is valid only for the User Agent it was generated. The call made by another User Agent will return status code 401 Unauthorized and will destroy this API token and will always be invalid for news rejection.

API Tokens without access for more than 30 days are automatically destroyed.

Read the API Tokens guide to see how generate and manage your API tokens.

Errors

The Rabbiit API follows standard HTTP status codes to indicate whether a request was successful or failed.

  • 2xx — The request was successful, and the response contains the expected data.
  • 4xx — The request failed due to invalid input, missing parameters, or authentication errors. The response body usually includes a message explaining the issue.
  • 5xx — A server-side error occurred while processing the request. These are unexpected and typically temporary.

Each error response includes a clear message and, when applicable, an error code to help identify and handle the problem programmatically.

Rate Limit

Rabbiit API enforces multiple rate-limit layers to ensure fair usage and consistent performance.
These combined mechanisms guarantee stability for all tenants while allowing higher-tier accounts to scale safely.

All rate limits described below may be adjusted at any time based on system performance or usage behavior.
Integrators are responsible for implementing safeguards to prevent service interruption by monitoring the Retry-After header and applying automatic backoff or retry logic when limits are reached.

Available Limits

  • Authentication Limit — per user
  • Per-Token Limit (per minute) — per API token
  • Per-Account Daily Limit — shared by all users and tokens within the same account
  • Per-IP Limit (global) — applies to all incoming requests regardless of authentication

Authentication Limit

Authentication requests are limited separately to prevent brute-force attempts or token abuse.
Each user can perform up to 60 authentication requests per day, intended for generating new API tokens in through the /auth endpoint.

If this limit is exceeded, further authentication attempts return HTTP 429 Too Many Requests or, in some cases, HTTP 401 Unauthorized when the request is blocked due to excessive invalid or repeated authentication attempts.

Per-Token Limit (per minute)

Each API token has its own short-term quota of 600 requests per minute, with a burst capacity of 30 requests per second.
These limits prevent excessive concurrent usage from a single integration. Different tokens will have independent limits.

If the limit is exceeded, the API returns HTTP 429 Too Many Requests and includes an minute_limit_exceeded or second_limit_exceeded error in response.

Per-Account Daily Limit

Each account has a single daily quota shared across all its users and tokens, according to the subscribed plan:

Plan Daily Limit
Free / Free Trial / Legacy plans 50 requests per day
Plus 1 000 requests per day
Business 5 000 requests per day (soft limit*)
Business Max 25 000 requests per day (soft limit*)

If the limit is exceeded, the API returns HTTP 429 Too Many Requests and includes an account_daily_limit_exceeded error in response.

* Business plans operate under a soft limit — requests beyond this threshold are temporarily accepted, but a warning is returned. For consistent overuse, an add-on is recommended to expand the daily quota.

Per-IP Limit (general)

Additionally, all incoming traffic is protected by a global network limit of 2 000 requests per minute per IP address, independent of authentication.

If the limit is exceeded, the API returns HTTP 429 Too Many Requests and includes an ip_rate_limit_exceeded error in response.

Rate Limit Headers

Header Description
X-RateLimit-Minute Minute-based limit for the current token (limit, used, remaining, reset)
X-RateLimit-AccountDaily Daily limit for the entire account (limit, used, remaining, reset)
X-RateLimit-AccountDaily-Warning Indicates when the daily quota has been exceeded — possible values:
soft_limit_exceeded: soft limit reached (temporary allowance for Business plans)
hard_limit_blocked: hard block applied (requests rejected)
Retry-After Returned with HTTP 429 Too Many Requests — specifies how many seconds to wait before retrying;

API Token

Generate a new API token

Request Body schema: application/json
email
required
string

User email

password
required
string
Default: 0

User password

account_id
required
string
Default: 0

Hash Id of Rabbiit account.
The account_id could be found on the URL of web app.
You need be logged in at Rabbiit app, then find the account_id on the URL after /a/.
The URL should be similar to the pattern https://app.rabbiit.com/a/{ACCOUNT_ID}/#/projects

Responses

Request samples

Content type
application/json
{
  • "email": "john@acme.inc",
  • "password": 123456,
  • "account_id": "124893893dd8"
}

Response samples

Content type
application/json
{
  • "account_id": "124893893dd8",
  • "token": "FrxRtCwWut3PMp9Boj7FQ9ndyZYQggcIF8xtpByI0Fis6-KPOzB1Ownj0b"
}

Destroy a API token

Keep the api token that should be destroyed on the header x-api-token

Authorizations:
Token

Responses

Time Entries

This object is a representation of time entries.

List Time Entries (deprecated) Deprecated

This endpoint is deprecated and no longer returns data. Use /reports/detailed to retrieve time entry information.

Authorizations:
Token

Responses

Response samples

Content type
application/json
{
  • "message": "This endpoint is deprecated. Please use the new endpoint to retrieve paginated time entries: /reports/detailed.",
  • "status": "deprecated",
  • "deprecated_since": "2025-07-11"
}

New Time Entry

New Time Entry

Authorizations:
Token
Request Body schema: application/json
date_execution
string

Actual date when activity was executed by the collaborator

description
string

Description of the executed activity

project_id
required
integer

Project Id

task_id
integer

Task Id

time_end
string
Default: "00:00:00"

End time of this time entry

time_start
string
Default: "00:00:00"

Start time of this time entry

time_total
string
Default: "00:00:00"

Total time of this time entry

user_id
integer
Default: "Logged user"

User id

Responses

Request samples

Content type
application/json
{
  • "date_execution": "2022-01-14",
  • "description": "activity description...",
  • "project_id": 2,
  • "task_id": 10,
  • "time_end": "14:00:00",
  • "time_start": "08:00:00",
  • "time_total": "06:00:00",
  • "user_id": 5
}

Response samples

Content type
application/json
{
  • "id": 1201,
  • "bill_by": null,
  • "changed_by": 5,
  • "created_by": 5,
  • "created_by_user_name": "Dyorg",
  • "customer_id": 2,
  • "customer_name": "ACME",
  • "date_changed": "2022-01-03 10:01:00",
  • "date_created": "2022-01-01 12:33:00",
  • "date_execution": "2022-01-14",
  • "description": "activity description...",
  • "form": "time_entry_form_1",
  • "is_billable": true,
  • "is_invoiced": 0,
  • "is_locked": false,
  • "locked_reason": "is invoiced",
  • "permissions": {
    },
  • "project_id": 2,
  • "project_is_billable": true,
  • "project_name": "Processo ISO",
  • "project_status": 1,
  • "stopwatch_active": false,
  • "stopwatch_date_start": "2022-01-01 12:33:00",
  • "task_id": 10,
  • "task_name": "Meeting",
  • "time_end": "14:00:00",
  • "time_start": "08:00:00",
  • "time_total": "06:00:00",
  • "user_id": 5,
  • "user_name": "Dyorg",
  • "value_honorary_hour": 100,
  • "value_honorary_total": 600
}

Get Time Entry

Retrive a Time Entry by ID

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

Time Entry ID

Responses

Response samples

Content type
application/json
{
  • "id": 1201,
  • "bill_by": null,
  • "changed_by": 5,
  • "created_by": 5,
  • "created_by_user_name": "Dyorg",
  • "customer_id": 2,
  • "customer_name": "ACME",
  • "date_changed": "2022-01-03 10:01:00",
  • "date_created": "2022-01-01 12:33:00",
  • "date_execution": "2022-01-14",
  • "description": "activity description...",
  • "form": "time_entry_form_1",
  • "is_billable": true,
  • "is_invoiced": 0,
  • "is_locked": false,
  • "locked_reason": "is invoiced",
  • "permissions": {
    },
  • "project_id": 2,
  • "project_is_billable": true,
  • "project_name": "Processo ISO",
  • "project_status": 1,
  • "stopwatch_active": false,
  • "stopwatch_date_start": "2022-01-01 12:33:00",
  • "task_id": 10,
  • "task_name": "Meeting",
  • "time_end": "14:00:00",
  • "time_start": "08:00:00",
  • "time_total": "06:00:00",
  • "user_id": 5,
  • "user_name": "Dyorg",
  • "value_honorary_hour": 100,
  • "value_honorary_total": 600
}

Edit Time Entry

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

Time Entry ID

Request Body schema: application/json
date_execution
string

Actual date when activity was executed by the collaborator

description
string

Description of the executed activity

project_id
required
integer

Project Id

task_id
integer

Task Id

time_end
string
Default: "00:00:00"

End time of this time entry

time_start
string
Default: "00:00:00"

Start time of this time entry

time_total
string
Default: "00:00:00"

Total time of this time entry

user_id
integer
Default: "Logged user"

User id

Responses

Request samples

Content type
application/json
{
  • "date_execution": "2022-01-14",
  • "description": "activity description...",
  • "project_id": 2,
  • "task_id": 10,
  • "time_end": "14:00:00",
  • "time_start": "08:00:00",
  • "time_total": "06:00:00",
  • "user_id": 5
}

Response samples

Content type
application/json
{
  • "id": 1201,
  • "bill_by": null,
  • "changed_by": 5,
  • "created_by": 5,
  • "created_by_user_name": "Dyorg",
  • "customer_id": 2,
  • "customer_name": "ACME",
  • "date_changed": "2022-01-03 10:01:00",
  • "date_created": "2022-01-01 12:33:00",
  • "date_execution": "2022-01-14",
  • "description": "activity description...",
  • "form": "time_entry_form_1",
  • "is_billable": true,
  • "is_invoiced": 0,
  • "is_locked": false,
  • "locked_reason": "is invoiced",
  • "permissions": {
    },
  • "project_id": 2,
  • "project_is_billable": true,
  • "project_name": "Processo ISO",
  • "project_status": 1,
  • "stopwatch_active": false,
  • "stopwatch_date_start": "2022-01-01 12:33:00",
  • "task_id": 10,
  • "task_name": "Meeting",
  • "time_end": "14:00:00",
  • "time_start": "08:00:00",
  • "time_total": "06:00:00",
  • "user_id": 5,
  • "user_name": "Dyorg",
  • "value_honorary_hour": 100,
  • "value_honorary_total": 600
}

Delete Time Entry

Delete permanently a Time Entry by ID

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

Time Entry ID

Responses

Start stopwatch

Start stopwatch on a existing time entry

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

Time Entry ID

Responses

Response samples

Content type
application/json
{
  • "id": 1201,
  • "bill_by": null,
  • "changed_by": 5,
  • "created_by": 5,
  • "created_by_user_name": "Dyorg",
  • "customer_id": 2,
  • "customer_name": "ACME",
  • "date_changed": "2022-01-03 10:01:00",
  • "date_created": "2022-01-01 12:33:00",
  • "date_execution": "2022-01-14",
  • "description": "activity description...",
  • "form": "time_entry_form_1",
  • "is_billable": true,
  • "is_invoiced": 0,
  • "is_locked": false,
  • "locked_reason": "is invoiced",
  • "permissions": {
    },
  • "project_id": 2,
  • "project_is_billable": true,
  • "project_name": "Processo ISO",
  • "project_status": 1,
  • "stopwatch_active": false,
  • "stopwatch_date_start": "2022-01-01 12:33:00",
  • "task_id": 10,
  • "task_name": "Meeting",
  • "time_end": "14:00:00",
  • "time_start": "08:00:00",
  • "time_total": "06:00:00",
  • "user_id": 5,
  • "user_name": "Dyorg",
  • "value_honorary_hour": 100,
  • "value_honorary_total": 600
}

Stop stopwatch

Stop stopwatch of a time entry with active stopwatch

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

Time Entry ID

Responses

Response samples

Content type
application/json
{
  • "id": 1201,
  • "bill_by": null,
  • "changed_by": 5,
  • "created_by": 5,
  • "created_by_user_name": "Dyorg",
  • "customer_id": 2,
  • "customer_name": "ACME",
  • "date_changed": "2022-01-03 10:01:00",
  • "date_created": "2022-01-01 12:33:00",
  • "date_execution": "2022-01-14",
  • "description": "activity description...",
  • "form": "time_entry_form_1",
  • "is_billable": true,
  • "is_invoiced": 0,
  • "is_locked": false,
  • "locked_reason": "is invoiced",
  • "permissions": {
    },
  • "project_id": 2,
  • "project_is_billable": true,
  • "project_name": "Processo ISO",
  • "project_status": 1,
  • "stopwatch_active": false,
  • "stopwatch_date_start": "2022-01-01 12:33:00",
  • "task_id": 10,
  • "task_name": "Meeting",
  • "time_end": "14:00:00",
  • "time_start": "08:00:00",
  • "time_total": "06:00:00",
  • "user_id": 5,
  • "user_name": "Dyorg",
  • "value_honorary_hour": 100,
  • "value_honorary_total": 600
}

Projects

This object is a representation of projects.

List Project

List Project

Authorizations:
Token
query Parameters
id
Array of integers or guids
Examples:
  • id=5 - Example of a single ID
  • id=1,5,7 - Example of multiple IDs

Filter by ID. Use comma-separated list of IDs for many IDs.

customer_id
Array of integers or guids
Examples:
  • customer_id=5 - Example of a single ID
  • customer_id=1,5,7 - Example of multiple IDs

Filter by customer ID. Use comma-separated list of IDs for many IDs.

active
integer
Example: active=1

Filter by active status ("1" is active and "0" is archived)

opt_page_limit
integer [ 1 .. 100 ]
Default: 50

The numbers of items to return

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "has_next_page": true,
  • "next_page_query_params": { },
  • "totals": {
    }
}

New Project

New Project

Authorizations:
Token
Request Body schema: application/json
active
integer
Default: 1
Enum: 0 1

Item is active ("1" is true and "0" is false)

billable
integer
Deprecated

Should be used the new property is_billable

bill_by
string
Deprecated

It's not necessary anymore.

budget
integer

Budget value

budget_by
string
Enum: "billing" "time"

Budget type

contractor_id
integer

(Deprecated) Will be removed on future and can be replaced by a custom field

customer_id
integer

Customer Id - Every project belongs to one customer

description
string

Project description

is_billable
boolean
Default: false

Project time entry is billable by default

name
required
string

Project name

privacy
integer
Enum: 1 2

Project is private or public (1 is public and 2 is private)

rate
integer
Default: 0

Most recently billable hourly rate of project

rate_start_at_new
string
Default: null

Start date for new rate.
You can use this property to define a new rate starting from a date. When not defined, replaces most recent rate or create a valid rate from the beginning ot the project.

required_task
integer
Default: 0
Enum: 0 1

Required task when time entry is created on project.
(1 is required and 0 is not required)

template
boolean
Default: false

Project is defined as template

Responses

Request samples

Content type
application/json
{
  • "active": 1,
  • "billable": 0,
  • "bill_by": "string",
  • "budget": 160,
  • "budget_by": "time",
  • "contractor_id": 0,
  • "customer_id": 7,
  • "description": "Activities regarding API development (dev, testing, documentation, rollout, etc)",
  • "is_billable": true,
  • "name": "API development",
  • "privacy": 7,
  • "rate": 110.3,
  • "rate_start_at_new": "2023-01-02",
  • "required_task": 0,
  • "template": false
}

Response samples

Content type
application/json
{
  • "id": 7,
  • "active": 1,
  • "billable": 0,
  • "bill_by": "string",
  • "budget": 160,
  • "budget_by": "time",
  • "budget_progress": 90.5,
  • "contractor_id": 0,
  • "customer_id": 7,
  • "customer_name": "ACME",
  • "created_by": 0,
  • "description": "Activities regarding API development (dev, testing, documentation, rollout, etc)",
  • "date_created": "2022-01-01 12:33:00",
  • "date_changed": "2022-01-03 10:01:00",
  • "is_billable": true,
  • "is_manager": true,
  • "is_member": true,
  • "name": "API development",
  • "privacy": 7,
  • "privacy_s": "private",
  • "rate": 110.3,
  • "rate_start_at": "2023-01-31",
  • "required_task": 0,
  • "status": "active",
  • "template": false,
  • "time_total": 120,
  • "total_uninvoiced": 120,
  • "total_active_tasks": 120,
  • "total_invoiced": 120,
  • "total_members": 120,
  • "value_total": 120
}

Get Project

Retrive a Project by ID

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

Project ID

Responses

Response samples

Content type
application/json
{
  • "id": 7,
  • "active": 1,
  • "billable": 0,
  • "bill_by": "string",
  • "budget": 160,
  • "budget_by": "time",
  • "budget_progress": 90.5,
  • "contractor_id": 0,
  • "customer_id": 7,
  • "customer_name": "ACME",
  • "created_by": 0,
  • "description": "Activities regarding API development (dev, testing, documentation, rollout, etc)",
  • "date_created": "2022-01-01 12:33:00",
  • "date_changed": "2022-01-03 10:01:00",
  • "is_billable": true,
  • "is_manager": true,
  • "is_member": true,
  • "name": "API development",
  • "privacy": 7,
  • "privacy_s": "private",
  • "rate": 110.3,
  • "rate_start_at": "2023-01-31",
  • "required_task": 0,
  • "status": "active",
  • "template": false,
  • "time_total": 120,
  • "total_uninvoiced": 120,
  • "total_active_tasks": 120,
  • "total_invoiced": 120,
  • "total_members": 120,
  • "value_total": 120
}

Edit Project

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

Project ID

Request Body schema: application/json
active
integer
Default: 1
Enum: 0 1

Item is active ("1" is true and "0" is false)

billable
integer
Deprecated

Should be used the new property is_billable

bill_by
string
Deprecated

It's not necessary anymore.

budget
integer

Budget value

budget_by
string
Enum: "billing" "time"

Budget type

contractor_id
integer

(Deprecated) Will be removed on future and can be replaced by a custom field

customer_id
integer

Customer Id - Every project belongs to one customer

description
string

Project description

is_billable
boolean
Default: false

Project time entry is billable by default

name
required
string

Project name

privacy
integer
Enum: 1 2

Project is private or public (1 is public and 2 is private)

rate
integer
Default: 0

Most recently billable hourly rate of project

rate_start_at_new
string
Default: null

Start date for new rate.
You can use this property to define a new rate starting from a date. When not defined, replaces most recent rate or create a valid rate from the beginning ot the project.

required_task
integer
Default: 0
Enum: 0 1

Required task when time entry is created on project.
(1 is required and 0 is not required)

template
boolean
Default: false

Project is defined as template

Responses

Request samples

Content type
application/json
{
  • "active": 1,
  • "billable": 0,
  • "bill_by": "string",
  • "budget": 160,
  • "budget_by": "time",
  • "contractor_id": 0,
  • "customer_id": 7,
  • "description": "Activities regarding API development (dev, testing, documentation, rollout, etc)",
  • "is_billable": true,
  • "name": "API development",
  • "privacy": 7,
  • "rate": 110.3,
  • "rate_start_at_new": "2023-01-02",
  • "required_task": 0,
  • "template": false
}

Response samples

Content type
application/json
{
  • "id": 7,
  • "active": 1,
  • "billable": 0,
  • "bill_by": "string",
  • "budget": 160,
  • "budget_by": "time",
  • "budget_progress": 90.5,
  • "contractor_id": 0,
  • "customer_id": 7,
  • "customer_name": "ACME",
  • "created_by": 0,
  • "description": "Activities regarding API development (dev, testing, documentation, rollout, etc)",
  • "date_created": "2022-01-01 12:33:00",
  • "date_changed": "2022-01-03 10:01:00",
  • "is_billable": true,
  • "is_manager": true,
  • "is_member": true,
  • "name": "API development",
  • "privacy": 7,
  • "privacy_s": "private",
  • "rate": 110.3,
  • "rate_start_at": "2023-01-31",
  • "required_task": 0,
  • "status": "active",
  • "template": false,
  • "time_total": 120,
  • "total_uninvoiced": 120,
  • "total_active_tasks": 120,
  • "total_invoiced": 120,
  • "total_members": 120,
  • "value_total": 120
}

Delete Project

Delete permanently a Project by ID

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

Project ID

Responses

Projects Members

This object is a representation of users inside projects.

List project Users

Retrieve list of project members

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

Project ID

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Add a user to project

Add user as project member and define custom rate per user on specified project

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

Project ID

id
required
integer
Example: 5

User ID

Request Body schema: application/json
manager
integer
Default: 0

Project member has project manager privileges on this project ("1" is true and "0" is false)

is_billable
boolean
Default: true

Project member time is billable on this project

rate
string
Default: "project houly rate"

Most recently billable hourly rate of project member.
When not defined, applies hourly rate defined in project.

rate_start_at_new
string
Default: null

Start date for new rate.
You can use this property to define a new rate starting from a date. When not defined, replaces most recent rate or create a valid rate from the beginning ot the project.

Responses

Request samples

Content type
application/json
{
  • "manager": 1,
  • "is_billable": true,
  • "rate": 110.3,
  • "rate_start_at_new": "2023-01-02"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete a user from project

Delete a user from project

Authorizations:
Token

Responses

List user available to project

List active users that are not a project member

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

Project ID

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Projects Tasks

This object is a representation of tasks inside projects.

List project Tasks

Retrieve list of project members

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

Project ID

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

Add a task to project

Add task as project member and define custom rate per task on specified project

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

Project ID

id
required
integer
Example: 25

Task ID

Request Body schema: application/json
is_billable
boolean
Default: true

Time allocated on this task is billable or not on this project

Responses

Request samples

Content type
application/json
{
  • "is_billable": true
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Delete a task from project

Delete a task from project

Authorizations:
Token

Responses

Check a task

Mark a task as checked on project

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

Project ID

id
required
integer
Example: 25

Task ID

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Uncheck a task

Mark a task as unchecked on project

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

Project ID

id
required
integer
Example: 25

Task ID

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

List task available to project

List active tasks that are not a project member

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

Project ID

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

To-dos

This object is a representation of to-dos.

List To-dos

To-dos are the activities list on projects

Authorizations:
Token
query Parameters
id
guid
Example: id=c96r3a88u0k0b3e6hft0

Filter by to-do ID. Use comma-separated list of IDs for many IDs.

project_id
Array of integers or guids
Examples:
  • project_id=5 - Example of a single ID
  • project_id=1,5,7 - Example of multiple IDs

Filter by project ID. Use comma-separated list of IDs for many IDs.

is_completed
boolean
Example: is_completed=false

Filter by to-do is completed or not

only_active_projects
boolean
Example: only_active_projects=true

Only retrieve to-dos from active projects

user_id
Array of integers or guids
Examples:
  • user_id=5 - Example of a single ID
  • user_id=1,5,7 - Example of multiple IDs

Filter by user assignee. Use comma-separated list of IDs for many IDs.

team_id
Array of integers or guids
Examples:
  • team_id=5 - Example of a single ID
  • team_id=1,5,7 - Example of multiple IDs

Filter assignees by team. Use comma-separated list of IDs for many IDs.

due_on
string <date>
Example: due_on=2024-01-15

Only retrieve to-dos where due on has exact match to a given date.

due_on_gte
string <date>
Example: due_on_gte=2024-01-01

Only retrieve to-dos where due on is greater than or equal to a given date.

due_on_lte
string <date>
Example: due_on_lte=2024-01-30

Only retrieve to-dos where due on is less than or equal to a given date.

opt_page_limit
integer [ 1 .. 100 ]
Default: 50

The numbers of items to return

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "has_next_page": true,
  • "next_page_query_params": { },
  • "totals": {
    }
}

New To-do

New To-do

Authorizations:
Token
Request Body schema: application/json
project_id
required
integer

Project Id. Can't be changed project Id after creation.

description
string

Notes about this To-do

is_completed
boolean
Default: false

To-do is completed

name
required
string

To-do name

position
integer
Default: 1

To-do position at project to ordering. Must be a integer greater than 0

todo_list_id
string

Todo list Id

time_estimate
string
Default: "00:00:00"

Estimate time to complete

user_id
integer

User id of assignee

Responses

Request samples

Content type
application/json
{
  • "project_id": 2,
  • "description": "To-do description...",
  • "is_completed": true,
  • "name": "Buy a coffee",
  • "position": 3,
  • "todo_list_id": 10,
  • "time_estimate": "14:00:00",
  • "user_id": 5
}

Response samples

Content type
application/json
{
  • "id": "c96r3a88u0k0b3e6hft0",
  • "changed_by": 5,
  • "created_by": 5,
  • "created_by_user_name": "Dyorg",
  • "changed_at": "2022-01-03 10:01:00",
  • "created_at": "2022-01-01 12:33:00",
  • "description": "To-do description...",
  • "is_completed": true,
  • "name": "Buy a coffee",
  • "position": 3,
  • "project_id": 2,
  • "project_name": "Processo ISO",
  • "project_status": 1,
  • "todo_list_id": 10,
  • "todo_list_name": "Meeting",
  • "todo_list_position": 1,
  • "time_estimate": "14:00:00",
  • "user_id": 5,
  • "user_name": "Dyorg"
}

Get To-do

Retrive a To-do by ID

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

To-do ID

Responses

Response samples

Content type
application/json
{
  • "id": "c96r3a88u0k0b3e6hft0",
  • "changed_by": 5,
  • "created_by": 5,
  • "created_by_user_name": "Dyorg",
  • "changed_at": "2022-01-03 10:01:00",
  • "created_at": "2022-01-01 12:33:00",
  • "description": "To-do description...",
  • "is_completed": true,
  • "name": "Buy a coffee",
  • "position": 3,
  • "project_id": 2,
  • "project_name": "Processo ISO",
  • "project_status": 1,
  • "todo_list_id": 10,
  • "todo_list_name": "Meeting",
  • "todo_list_position": 1,
  • "time_estimate": "14:00:00",
  • "user_id": 5,
  • "user_name": "Dyorg"
}

Edit To-do

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

To-do ID

Request Body schema: application/json
description
string

Notes about this To-do

is_completed
boolean
Default: false

To-do is completed

name
required
string

To-do name

position
integer
Default: 1

To-do position at project to ordering. Must be a integer greater than 0

todo_list_id
string

Todo list Id

time_estimate
string
Default: "00:00:00"

Estimate time to complete

user_id
integer

User id of assignee

Responses

Request samples

Content type
application/json
{
  • "description": "To-do description...",
  • "is_completed": true,
  • "name": "Buy a coffee",
  • "position": 3,
  • "todo_list_id": 10,
  • "time_estimate": "14:00:00",
  • "user_id": 5
}

Response samples

Content type
application/json
{
  • "id": "c96r3a88u0k0b3e6hft0",
  • "changed_by": 5,
  • "created_by": 5,
  • "created_by_user_name": "Dyorg",
  • "changed_at": "2022-01-03 10:01:00",
  • "created_at": "2022-01-01 12:33:00",
  • "description": "To-do description...",
  • "is_completed": true,
  • "name": "Buy a coffee",
  • "position": 3,
  • "project_id": 2,
  • "project_name": "Processo ISO",
  • "project_status": 1,
  • "todo_list_id": 10,
  • "todo_list_name": "Meeting",
  • "todo_list_position": 1,
  • "time_estimate": "14:00:00",
  • "user_id": 5,
  • "user_name": "Dyorg"
}

Delete To-do

Delete permanently a To-do by ID

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

To-do ID

Responses

To-do Lists

This object is a representation of to-dos lists.

List To-do Lists

To-do Lists are the activities list on projects

Authorizations:
Token
path Parameters
id
required
integer
Example: 57

Project ID

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

New To-do List

New To-do List

Authorizations:
Token
Request Body schema: application/json
project_id
required
integer

Project Id. Can't be changed project Id after creation.

name
required
string

To-do list name

position
integer
Default: 1

To-do list position at project to ordering. Must be a integer greater than 0

Responses

Request samples

Content type
application/json
{
  • "project_id": 2,
  • "name": "Ideas",
  • "position": 3
}

Response samples

Content type
application/json
{
  • "id": "c96r3a88u0k0b3e6hft0",
  • "changed_at": "2022-01-03 10:01:00",
  • "changed_by": 5,
  • "created_at": "2022-01-01 12:33:00",
  • "created_by": 5,
  • "created_by_user_name": "Dyorg",
  • "name": "Ideas",
  • "position": 3,
  • "project_id": 2,
  • "project_name": "Processo ISO",
  • "project_status": 1
}

Get To-do List

Retrive a To-do List by ID

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

To-do List ID

Responses

Response samples

Content type
application/json
{
  • "id": "c96r3a88u0k0b3e6hft0",
  • "changed_at": "2022-01-03 10:01:00",
  • "changed_by": 5,
  • "created_at": "2022-01-01 12:33:00",
  • "created_by": 5,
  • "created_by_user_name": "Dyorg",
  • "name": "Ideas",
  • "position": 3,
  • "project_id": 2,
  • "project_name": "Processo ISO",
  • "project_status": 1
}

Edit To-do List

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

To-do List ID

Request Body schema: application/json
name
required
string

To-do list name

position
integer
Default: 1

To-do list position at project to ordering. Must be a integer greater than 0

Responses

Request samples

Content type
application/json
{
  • "name": "Ideas",
  • "position": 3
}

Response samples

Content type
application/json
{
  • "id": "c96r3a88u0k0b3e6hft0",
  • "changed_at": "2022-01-03 10:01:00",
  • "changed_by": 5,
  • "created_at": "2022-01-01 12:33:00",
  • "created_by": 5,
  • "created_by_user_name": "Dyorg",
  • "name": "Ideas",
  • "position": 3,
  • "project_id": 2,
  • "project_name": "Processo ISO",
  • "project_status": 1
}

Delete To-do List

Delete permanently a To-do List by ID

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

To-do List ID

Responses

Customers

This object is a representation of customers.

List Customer

List Customer

Authorizations:
Token
query Parameters
id
Array of integers or guids
Examples:
  • id=5 - Example of a single ID
  • id=1,5,7 - Example of multiple IDs

Filter by ID. Use comma-separated list of IDs for many IDs.

active
integer
Example: active=1

Filter by active status ("1" is active and "0" is archived)

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

New Customer

New Customer

Authorizations:
Token
Request Body schema: application/json
name
required
string

Customer name

observation
string
Default: null

Customer description

active
integer
Default: 1
Enum: 0 1

Item is active ("1" is true and "0" is false)

Responses

Request samples

Content type
application/json
{
  • "name": "ACME",
  • "observation": "Description...",
  • "active": 1
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "ACME",
  • "observation": "Description...",
  • "active": 1,
  • "date_created": "2022-01-01 12:33:00",
  • "date_changed": "2022-01-03 10:01:00"
}

Get Customer

Retrive a Customer by ID

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

Customer ID

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "ACME",
  • "observation": "Description...",
  • "active": 1,
  • "date_created": "2022-01-01 12:33:00",
  • "date_changed": "2022-01-03 10:01:00"
}

Edit Customer

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

Customer ID

Request Body schema: application/json
name
required
string

Customer name

observation
string
Default: null

Customer description

active
integer
Default: 1
Enum: 0 1

Item is active ("1" is true and "0" is false)

Responses

Request samples

Content type
application/json
{
  • "name": "ACME",
  • "observation": "Description...",
  • "active": 1
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "ACME",
  • "observation": "Description...",
  • "active": 1,
  • "date_created": "2022-01-01 12:33:00",
  • "date_changed": "2022-01-03 10:01:00"
}

Delete Customer

Delete permanently a Customer by ID

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

Customer ID

Responses

Tasks

This object is a representation of tasks.

List Task

List Task

Authorizations:
Token

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

New Task

New Task

Authorizations:
Token
Request Body schema: application/json
name
string

Task name

description
string
Default: null

Task description

Responses

Request samples

Content type
application/json
{
  • "name": "ACME",
  • "description": "Description..."
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "ACME",
  • "description": "Description...",
  • "is_billable_default": true,
  • "date_created": "2022-01-01 12:33:00",
  • "date_changed": "2022-01-03 10:01:00"
}

Get Task

Retrive a Task by ID

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

Task ID

Responses

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "ACME",
  • "description": "Description...",
  • "is_billable_default": true,
  • "date_created": "2022-01-01 12:33:00",
  • "date_changed": "2022-01-03 10:01:00"
}

Edit Task

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

Task ID

Request Body schema: application/json
name
string

Task name

description
string
Default: null

Task description

Responses

Request samples

Content type
application/json
{
  • "name": "ACME",
  • "description": "Description..."
}

Response samples

Content type
application/json
{
  • "id": 1,
  • "name": "ACME",
  • "description": "Description...",
  • "is_billable_default": true,
  • "date_created": "2022-01-01 12:33:00",
  • "date_changed": "2022-01-03 10:01:00"
}

Delete Task

Delete permanently a Task by ID

Authorizations:
Token
path Parameters
id
required
integer
Example: 25

Task ID

Responses

Users

This object is a representation of users.

List Users

List Users

Authorizations:
Token
query Parameters
id
Array of integers or guids
Examples:
  • id=5 - Example of a single ID
  • id=1,5,7 - Example of multiple IDs

Filter by ID. Use comma-separated list of IDs for many IDs.

active
integer
Example: active=1

Filter by active status ("1" is active and "0" is archived)

Responses

Response samples

Content type
application/json
{
  • "data": [
    ]
}

New User

New User

Authorizations:
Token
Request Body schema: application/json
email
required
string

User email

active
integer

Activity status of the user

assigned_team_ids
Array of integers

IDs of teams assigned to the user. Only applied for manager roles

billable_rate_default
number <double>

Default billable rate of the user

capacity_per_day
integer

User's work capacity per day, in hours

cost_rate
string

Latest cost rate of the user

cost_rate_start_at
string <datetime>

Start date of the latest cost rate

is_billable_default
boolean

Indicates if the time is billable by default

manager_id
integer

Manager ID. References the User object who is the manager of this user

manage_restricted_teams
boolean

Indicates if the user can manage restricted teams. Only applied for manager roles.

name
required
string

Name of the user

role
string
Enum: "admin" "regular" "super" "manager"

Privilege role of the user

work_days
Array of integers

User's work days, represented as numbers from 0 to 6. 0 is sunday and 6 is saturday.

work_end_at
string <time>

User's work end time used at capacity dashboard

work_start_at
string <time>

User's work start time used at capacity dashboard

Responses

Request samples

Content type
application/json
{
  • "email": "anne@rabbiit.com",
  • "active": 1,
  • "assigned_team_ids": [ ],
  • "billable_rate_default": null,
  • "capacity_per_day": 8,
  • "cost_rate": "65",
  • "cost_rate_start_at": null,
  • "is_billable_default": true,
  • "manager_id": null,
  • "manage_restricted_teams": false,
  • "name": "Anna Santos",
  • "role": "admin",
  • "work_days": [
    ],
  • "work_end_at": null,
  • "work_start_at": null
}

Response samples

Content type
application/json
{
  • "active": 1,
  • "assigned_team_ids": [ ],
  • "billable_rate_default": null,
  • "capacity_per_day": 8,
  • "cost_rate": "65",
  • "cost_rate_start_at": null,
  • "count_employees": 5,
  • "date_changed": "2024-05-20T13:36:46-0300",
  • "date_created": "2022-02-10T15:06:32-0300",
  • "date_deleted": null,
  • "email": "name@example.com",
  • "id": 1,
  • "is_billable_default": true,
  • "is_owner": true,
  • "manager_email": null,
  • "manager_id": null,
  • "manager_name": null,
  • "manage_restricted_teams": false,
  • "name": "Anna Santos",
  • "owner": true,
  • "role": "admin",
  • "status": "active",
  • "teams": [
    ],
  • "work_days": [
    ],
  • "work_end_at": null,
  • "work_start_at": null
}

Get User

Retrive a user by ID

Authorizations:
Token
path Parameters
id
required
integer
Example: 5

User ID

Responses

Response samples

Content type
application/json
{
  • "active": 1,
  • "assigned_team_ids": [ ],
  • "billable_rate_default": null,
  • "capacity_per_day": 8,
  • "cost_rate": "65",
  • "cost_rate_start_at": null,
  • "count_employees": 5,
  • "date_changed": "2024-05-20T13:36:46-0300",
  • "date_created": "2022-02-10T15:06:32-0300",
  • "date_deleted": null,
  • "email": "name@example.com",
  • "id": 1,
  • "is_billable_default": true,
  • "is_owner": true,
  • "manager_email": null,
  • "manager_id": null,
  • "manager_name": null,
  • "manage_restricted_teams": false,
  • "name": "Anna Santos",
  • "owner": true,
  • "role": "admin",
  • "status": "active",
  • "teams": [
    ],
  • "work_days": [
    ],
  • "work_end_at": null,
  • "work_start_at": null
}

Edit User

Authorizations:
Token
path Parameters
id
required
integer
Example: 5

User ID

Request Body schema: application/json
active
integer

Activity status of the user

assigned_team_ids
Array of integers

IDs of teams assigned to the user. Only applied for manager roles

billable_rate_default
number <double>

Default billable rate of the user

capacity_per_day
integer

User's work capacity per day, in hours

cost_rate
string

Latest cost rate of the user

cost_rate_start_at
string <datetime>

Start date of the latest cost rate

is_billable_default
boolean

Indicates if the time is billable by default

manager_id
integer

Manager ID. References the User object who is the manager of this user

manage_restricted_teams
boolean

Indicates if the user can manage restricted teams. Only applied for manager roles.

name
required
string

Name of the user

role
string
Enum: "admin" "regular" "super" "manager"

Privilege role of the user

work_days
Array of integers

User's work days, represented as numbers from 0 to 6. 0 is sunday and 6 is saturday.

work_end_at
string <time>

User's work end time used at capacity dashboard

work_start_at
string <time>

User's work start time used at capacity dashboard

Responses

Request samples

Content type
application/json
{
  • "active": 1,
  • "assigned_team_ids": [ ],
  • "billable_rate_default": null,
  • "capacity_per_day": 8,
  • "cost_rate": "65",
  • "cost_rate_start_at": null,
  • "is_billable_default": true,
  • "manager_id": null,
  • "manage_restricted_teams": false,
  • "name": "Anna Santos",
  • "role": "admin",
  • "work_days": [
    ],
  • "work_end_at": null,
  • "work_start_at": null
}

Response samples

Content type
application/json
{
  • "active": 1,
  • "assigned_team_ids": [ ],
  • "billable_rate_default": null,
  • "capacity_per_day": 8,
  • "cost_rate": "65",
  • "cost_rate_start_at": null,
  • "count_employees": 5,
  • "date_changed": "2024-05-20T13:36:46-0300",
  • "date_created": "2022-02-10T15:06:32-0300",
  • "date_deleted": null,
  • "email": "name@example.com",
  • "id": 1,
  • "is_billable_default": true,
  • "is_owner": true,
  • "manager_email": null,
  • "manager_id": null,
  • "manager_name": null,
  • "manage_restricted_teams": false,
  • "name": "Anna Santos",
  • "owner": true,
  • "role": "admin",
  • "status": "active",
  • "teams": [
    ],
  • "work_days": [
    ],
  • "work_end_at": null,
  • "work_start_at": null
}

Delete User

Delete permanently a user by ID

Authorizations:
Token
path Parameters
id
required
integer
Example: 5

User ID

Responses

Reports

This object is a representation of reports.

Detailed Report

Generate time entries detailed report

Authorizations:
Token
query Parameters
date_execution_start
string <date>
Example: date_execution_start=2024-01-01

Only retrieve time data where date execution is greater than or equal to a given date.

date_execution_end
string <date>
Example: date_execution_end=2024-01-30

Only retrieve time data where date execution is less than or equal to a given date.

project_id
Array of integers or guids
Examples:
  • project_id=5 - Example of a single ID
  • project_id=1,5,7 - Example of multiple IDs

Filter by project ID. Use comma-separated list of IDs for many IDs.

task_id
Array of integers or guids
Examples:
  • task_id=5 - Example of a single ID
  • task_id=1,5,7 - Example of multiple IDs

Filter by task ID. Use comma-separated list of IDs for many IDs.

customer_id
Array of integers or guids
Examples:
  • customer_id=5 - Example of a single ID
  • customer_id=1,5,7 - Example of multiple IDs

Filter by customer ID. Use comma-separated list of IDs for many IDs.

user_id
Array of integers or guids
Examples:
  • user_id=5 - Example of a single ID
  • user_id=1,5,7 - Example of multiple IDs

Filter by user. Use comma-separated list of IDs for many IDs.

team_id
Array of integers or guids
Examples:
  • team_id=5 - Example of a single ID
  • team_id=1,5,7 - Example of multiple IDs

Filter assignees by team. Use comma-separated list of IDs for many IDs.

id
integer or guid
Default: null
Examples:
  • id=5 - Example of a single ID
  • id=1&id=5&id=7 - Example of multiple IDs

The unique identifier of the entry. Use comma-separated list of IDs for many IDs.

opt_page_limit
integer [ 1 .. 100 ]
Default: 50

The numbers of items to return

opt_sort_direction
string
Default: "asc"
Enum: "asc" "desc"

Sort direction of items.

opt_sort_by
string
Enum: "date_execution" "user_name" "project_name" "customer_name" "task_name" "todo_name"

Sort items by column. Use comma-separated list of columns to sort by many.

Responses

Response samples

Content type
application/json
{
  • "data": [
    ],
  • "totals": {
    },
  • "has_next_page": true,
  • "next_page_query_params": { }
}

Summary Report

Generate reports with data groups and custom columns

Authorizations:
Token
query Parameters
date_execution_start
string <date>
Example: date_execution_start=2024-01-01

Only retrieve time data where date execution is greater than or equal to a given date.

date_execution_end
string <date>
Example: date_execution_end=2024-01-30

Only retrieve time data where date execution is less than or equal to a given date.

project_id
Array of integers or guids
Examples:
  • project_id=5 - Example of a single ID
  • project_id=1,5,7 - Example of multiple IDs

Filter by project ID. Use comma-separated list of IDs for many IDs.

task_id
Array of integers or guids
Examples:
  • task_id=5 - Example of a single ID
  • task_id=1,5,7 - Example of multiple IDs

Filter by task ID. Use comma-separated list of IDs for many IDs.

customer_id
Array of integers or guids
Examples:
  • customer_id=5 - Example of a single ID
  • customer_id=1,5,7 - Example of multiple IDs

Filter by customer ID. Use comma-separated list of IDs for many IDs.

user_id
Array of integers or guids
Examples:
  • user_id=5 - Example of a single ID
  • user_id=1,5,7 - Example of multiple IDs

Filter by user. Use comma-separated list of IDs for many IDs.

team_id
Array of integers or guids
Examples:
  • team_id=5 - Example of a single ID
  • team_id=1,5,7 - Example of multiple IDs

Filter assignees by team. Use comma-separated list of IDs for many IDs.

include_archived_users
boolean
Default: false
Example: include_archived_users=true

Retrieve both active and archived users. By default, only active users are retrieved. This option works only when opt_report_template is set to users_and_days.

opt_export_columns
string
Enum: "user_id" "user_name" "user_email" "user_active" "user_role" "user_is_owner" "user_work_start_at" "user_work_end_at" "user_cost_rate" "user_capacity_*" "task_id" "task_name" "todo_id" "todo_name" "project_id" "project_name" "project_budget_*" "customer_id" "customer_name" "time_billable" "time_non_billable" "billable_total" "billable_taxes_total" "billable_net_total" "billable_invoiced" "billable_uninvoiced" "cost_total" "cost_billable" "cost_non_billable" "margin_*" "custom_field_|:id:|" "custom_field_|:id:|_enum_name"

Define the optionals columns to be retrieved. Columns used in opt_group_by will automatically include their identifiers, such as *_id and *_name. Some columns will only be displayed depending on the grouping information used in opt_group_by.

To include custom fields data, include custom_field_{id} replacing the {id} by the properly custom field ID. For custom fields type enum, include custom_field_{id}_enum_name to get their label description.

opt_group_by
string
Enum: "date" "week" "month" "year" "user_id" "task_id" "todo_id" "project_id" "customer_id" "custom_field_|:id:|"

Group time data by columns. Use comma-separated list of columns to group by many.

A maximum of 5 groups are allowed. Each group in the response will be displayed as a sublevel.

Beyond of native columns, is allowed grouping by custom fields of type enum, by including custom_field_{id} replacing the {id} by the properly custom field ID.

opt_report_template
string
Default: null
Enum: "days" "months" "users_and_days"

Report template are used to retrieve group data, even it is empty. Keep this column empty to retrieve default. Use days template to retrieve everyday into period. Use users_and_days template to retrieve all users and every day into period.

opt_sort_direction
string
Default: "asc"
Enum: "asc" "desc"

Sort direction of items.

opt_sort_by
string
Enum: "date" "week" "month" "year" "user_id" "task_id" "todo_id" "project_id" "customer_id"

Sort items by column. Use comma-separated list of columns to sort by many. Only columns include in opt_group_by parameter could be used to sort items.

Responses

Response samples

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