Create a project
Requires Manager, Admin, or Owner.
Authorization
BearerAuth Personal Access Token. Mint at Settings → API. Token shape: hsk_<env>_<prefix12>_<secret32>.
In: header
Header Parameters
Caller-generated UUID/ULID; replay returns the cached response within 24h.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Constraints enforced server-side: (1) budgetAmount and budgetHours are mutually exclusive — pass at most one. (2) FIXED projects must set fixedFeeAmount; HOURLY and NON_BILLABLE must NOT set it. (3) dueDate must be on or after startDate. Money fields accept a number or a decimal-string (up to 4 dp).
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/projects" \ -H "Idempotency-Key: string" \ -H "Content-Type: application/json" \ -d '{ "clientId": "5e505642-9024-474d-9434-e5a44f505cc5", "name": "string" }'{ "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" }}{ "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" }}{ "error": { "code": "unauthenticated", "message": "string", "fields": { "property1": "string", "property2": "string" }, "requiredPlan": "studio", "feature": "string", "requestId": "string" }}List projects
Any role. Member tokens see only projects they have been granted, and money fields (hourlyRate, fixedFeeAmount, budgetAmount) are omitted from their responses.
Get one project
Any role. Member tokens see only projects they have been granted, and money fields (hourlyRate, fixedFeeAmount, budgetAmount) are omitted from their responses.