List projects
Any role. Member tokens see only projects they have been granted, and money fields (hourlyRate, fixedFeeAmount, budgetAmount) are omitted from their responses.
Authorization
BearerAuth Personal Access Token. Mint at Settings → API. Token shape: hsk_<env>_<prefix12>_<secret32>.
In: header
Query Parameters
Opaque pagination cursor — nextCursor from a previous response.
Page size (1–200, default 50).
Sort field, optionally prefixed with - for descending (Stripe-style). Defaults to -createdAt (newest first). The allowed fields differ per resource — see each list* operation. Common examples: ?sort=-paidAt (latest paid invoice), ?sort=dueDate (earliest due first), ?sort=name (alphabetical). Cursors are sort-aware: keep the same sort= when paginating. Allowed sort fields for projects: createdAt, dueDate, id, name, startDate, status, updatedAt.
Case-insensitive partial match across: name, description. Max 200 chars.
Case-insensitive partial match on the related client's name. Joins through the relation — pair with other filters as needed.
Owning client UUID.
One of: ACTIVE, COMPLETED, ARCHIVED.
Inclusive lower bound on startDate. Accepts YYYY-MM-DD (treated as UTC midnight) or full ISO timestamp.
Inclusive upper bound on startDate. YYYY-MM-DD is treated as end-of-day so the date is fully included.
Inclusive lower bound on dueDate. Accepts YYYY-MM-DD (treated as UTC midnight) or full ISO timestamp.
Inclusive upper bound on dueDate. YYYY-MM-DD is treated as end-of-day so the date is fully included.
Inclusive lower bound on createdAt. Accepts YYYY-MM-DD (treated as UTC midnight) or full ISO timestamp.
Inclusive upper bound on createdAt. YYYY-MM-DD is treated as end-of-day so the date is fully included.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/projects"{ "data": [ { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "orgId": "25b2c2d5-a7fc-47d0-89e4-8709a1560bfa", "clientId": "5e505642-9024-474d-9434-e5a44f505cc5", "name": "string", "description": "string", "color": "string", "status": "ACTIVE", "rateType": "HOURLY", "hourlyRate": "string", "fixedFeeAmount": "string", "budgetHours": "string", "budgetAmount": "string", "startDate": "2019-08-24", "dueDate": "2019-08-24", "createdAt": "2019-08-24T14:15:22Z", "updatedAt": "2019-08-24T14:15:22Z", "deletedAt": "2019-08-24T14:15:22Z" } ], "pagination": { "limit": 1, "nextCursor": "string" }}{ "error": { "code": "unauthenticated", "message": "string", "fields": { "property1": "string", "property2": "string" }, "requiredPlan": "studio", "feature": "string", "requestId": "string" }}{ "error": { "code": "unauthenticated", "message": "string", "fields": { "property1": "string", "property2": "string" }, "requiredPlan": "studio", "feature": "string", "requestId": "string" }}{ "error": { "code": "unauthenticated", "message": "string", "fields": { "property1": "string", "property2": "string" }, "requiredPlan": "studio", "feature": "string", "requestId": "string" }}{ "error": { "code": "unauthenticated", "message": "string", "fields": { "property1": "string", "property2": "string" }, "requiredPlan": "studio", "feature": "string", "requestId": "string" }}{ "error": { "code": "unauthenticated", "message": "string", "fields": { "property1": "string", "property2": "string" }, "requiredPlan": "studio", "feature": "string", "requestId": "string" }}{ "error": { "code": "unauthenticated", "message": "string", "fields": { "property1": "string", "property2": "string" }, "requiredPlan": "studio", "feature": "string", "requestId": "string" }}