Projects
List projects with search and pagination
Authorization
bearerAuth Session JWT or OAuth2 access token
In: header
Query Parameters
Pagination cursor
Number of items per page (1-100; higher values cap at 100)
1 <= value20Search by name
Only active or only archived projects
Value in
- "active"
- "archived"
Response Body
application/json
application/json
curl -X GET "https://example.com/v1/projects"{ "data": [ { "id": "string", "organization_id": "string", "name": "string", "customer_id": "string", "hourly_rate": "string", "currency": "string", "active": true, "estimate_minutes": 0, "created_at": "string", "updated_at": "string", "customer": { "id": "string", "name": "string", "email": "string", "website": "string" }, "tracked_seconds": 0, "invoiced_seconds": 0, "unbilled": { "seconds": 0, "amount": 0 }, "last_tracked_at": "string", "running": [ { "user_id": "string", "start_time": "string" } ] } ], "meta": { "count": 0, "next_cursor": "string" }}Create a new project
Authorization
bearerAuth Session JWT or OAuth2 access token
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
curl -X POST "https://example.com/v1/projects" \ -H "Content-Type: application/json" \ -d '{ "name": "string" }'{ "data": { "id": "string", "organization_id": "string", "name": "string", "customer_id": "string", "hourly_rate": "string", "currency": "string", "active": true, "estimate_minutes": 0, "created_at": "string", "updated_at": "string", "customer": { "id": "string", "name": "string", "email": "string", "website": "string" }, "tracked_seconds": 0, "invoiced_seconds": 0, "unbilled": { "seconds": 0, "amount": 0 }, "last_tracked_at": "string", "running": [ { "user_id": "string", "start_time": "string" } ] }}Get a single project by ID
Authorization
bearerAuth Session JWT or OAuth2 access token
In: header
Path Parameters
uuidResponse Body
application/json
application/json
application/json
curl -X GET "https://example.com/v1/projects/497f6eca-6276-4993-bfeb-53cbbbba6f08"{ "data": { "id": "string", "organization_id": "string", "name": "string", "customer_id": "string", "hourly_rate": "string", "currency": "string", "active": true, "estimate_minutes": 0, "created_at": "string", "updated_at": "string", "customer": { "id": "string", "name": "string", "email": "string", "website": "string" }, "tracked_seconds": 0, "invoiced_seconds": 0, "unbilled": { "seconds": 0, "amount": 0 }, "last_tracked_at": "string", "running": [ { "user_id": "string", "start_time": "string" } ] }}Update project fields
Authorization
bearerAuth Session JWT or OAuth2 access token
In: header
Path Parameters
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
curl -X PATCH "https://example.com/v1/projects/497f6eca-6276-4993-bfeb-53cbbbba6f08" \ -H "Content-Type: application/json" \ -d '{}'{ "data": { "id": "string", "organization_id": "string", "name": "string", "customer_id": "string", "hourly_rate": "string", "currency": "string", "active": true, "estimate_minutes": 0, "created_at": "string", "updated_at": "string", "customer": { "id": "string", "name": "string", "email": "string", "website": "string" }, "tracked_seconds": 0, "invoiced_seconds": 0, "unbilled": { "seconds": 0, "amount": 0 }, "last_tracked_at": "string", "running": [ { "user_id": "string", "start_time": "string" } ] }}Delete a project by ID. Its time entries stay, without a project.
Authorization
bearerAuth Session JWT or OAuth2 access token
In: header
Path Parameters
uuidResponse Body
application/json
application/json
curl -X DELETE "https://example.com/v1/projects/497f6eca-6276-4993-bfeb-53cbbbba6f08"