Core Resources
Projects
Manage projects, their tasks and the time tracked on them.
Overview
Projects group the work you do for a customer: tasks with status and priority, and time entries that you can bill. They belong to the Projects module of the company. All responses are wrapped in data.
| Method | Path | Permission | Description |
|---|---|---|---|
GET | /v1/projects | read | List projects with filters (limit/offset pagination) |
POST | /v1/projects | write | Create a project |
GET | /v1/projects/{id} | read | Retrieve a project |
PATCH | /v1/projects/{id} | write | Update a project (status, dates, budget, archive...) |
DELETE | /v1/projects/{id} | write | Delete a project |
GET | /v1/projects/{id}/tasks | read | List the tasks of a project |
POST | /v1/projects/{id}/tasks | write | Create a task |
GET PATCH DELETE | /v1/projects/{id}/tasks/{taskId} | read / write | Retrieve, update or delete a task |
GET | /v1/projects/{id}/time-entries | read | List time entries |
POST | /v1/projects/{id}/time-entries | write | Log time |
GET PATCH DELETE | /v1/projects/{id}/time-entries/{entryId} | read / write | Retrieve, update or delete a time entry |
GET | /v1/projects/{id}/time-entries/summary | read | Hours, revenue, cost and profit of the project |
Creating, updating or deleting projects and tasks emits the project.* and task.* webhook events, the same as in the dashboard.
List Projects
| Query param | Description |
|---|---|
status | Comma separated: draft, in_progress, on_hold, review, completed, cancelled |
priority | Comma separated: low, medium, high, urgent |
customer_id | Projects of one customer |
assigned_to | Projects assigned to a user id |
is_archived | true or false |
search | Text search on the title |
start_date_from / start_date_to | Start date range (YYYY-MM-DD) |
due_date_from / due_date_to | Due date range (YYYY-MM-DD) |
limit / offset | Page size (default 50) and offset |
Create a Project
Bash
| Field | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Project name |
description | string | No | Description |
customer_id | string | No | Customer of the project |
assigned_to | string[] | No | User ids of the organization |
status | string | No | Default draft |
priority | string | No | Default medium |
start_date / due_date | date | No | YYYY-MM-DD |
billing_type | string | No | time_based, fixed_price or mixed |
budget_hours / budget_amount | number | No | Budget |
hourly_rate | number | No | Default rate for time entries |
metadata | object | No | Free key/value data |
PATCH /v1/projects/{id} accepts the same fields plus progress_percentage, completed_at and is_archived. Only the fields you send change.
Tasks
Bash
| Field | Type | Description |
|---|---|---|
title | string | Required |
status | string | backlog, todo, in_progress, in_review, completed, cancelled |
priority | string | low, medium, high, urgent |
assigned_to | string | User id |
parent_task_id | string | Makes it a subtask |
depends_on | string[] | Task ids this task depends on |
estimated_hours | number | Estimate |
start_date / due_date | date | YYYY-MM-DD |
is_billable / hourly_rate | boolean / number | Billing of the task |
tags | string[] | Labels |
List filters for GET /v1/projects/{id}/tasks: status, priority, assigned_to, parent_task_id, search, limit, offset.
Time Entries
Bash
| Field | Type | Description |
|---|---|---|
entry_date | date | Required. YYYY-MM-DD |
duration_minutes | number | Required. Greater than 0 |
hourly_rate | number | Required. 0 or more |
task_id | string | Task the time belongs to |
user_id | string | Who worked (defaults to the key owner) |
start_time / end_time | string | Optional times |
is_billable | boolean | Default true |
internal_cost_rate | number | Your cost per hour (for profit) |
description | string | What was done |
List filters: user_id, task_id, is_billable, is_invoiced, entry_date_from, entry_date_to, search, limit, offset.
GET /v1/projects/{id}/time-entries/summary