Skip to content
Hoursmith Docs
APIReferenceProjects

Create a project

POST
/projects

Authorization

BearerAuth
AuthorizationBearer <token>

Personal Access Token. Mint at Settings → API. Token shape: hsk_<env>_<prefix12>_<secret32>.

In: header

Header Parameters

Idempotency-Key*string

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"  }}
{  "error": {    "code": "unauthenticated",    "message": "string",    "fields": {      "property1": "string",      "property2": "string"    },    "requiredPlan": "studio",    "feature": "string"  }}
{  "error": {    "code": "unauthenticated",    "message": "string",    "fields": {      "property1": "string",      "property2": "string"    },    "requiredPlan": "studio",    "feature": "string"  }}
{  "error": {    "code": "unauthenticated",    "message": "string",    "fields": {      "property1": "string",      "property2": "string"    },    "requiredPlan": "studio",    "feature": "string"  }}
{  "error": {    "code": "unauthenticated",    "message": "string",    "fields": {      "property1": "string",      "property2": "string"    },    "requiredPlan": "studio",    "feature": "string"  }}
{  "error": {    "code": "unauthenticated",    "message": "string",    "fields": {      "property1": "string",      "property2": "string"    },    "requiredPlan": "studio",    "feature": "string"  }}
{  "error": {    "code": "unauthenticated",    "message": "string",    "fields": {      "property1": "string",      "property2": "string"    },    "requiredPlan": "studio",    "feature": "string"  }}
Was this page helpful?