---
title: "Create Project"
method: POST
path: "/projects"
tags: ["Projects"]
---

# Create Project

`POST /projects`

Create a new project. To copy from an existing template use the `template` or `publicTemplate` body field. To sync a project from a connected integration use `POST /projects/{project_id}/sync` instead.

## Request body

- ProjectRequestCreateRequest
  - `name` string, required
  - `type` 'board' | 'list', required — Project type
  - `users` integer[] — Assigned user IDs
  - `client` integer, nullable — Client ID to assign the project to
  - `privacy` boolean — Restrict project visibility to its assigned members
  - `changeProtected` boolean — Prevent edits by non-admins
  - `isTemplate` boolean — Mark the project as a template

## Response `201`

Created

- Project
  - `id` string, required
  - `name` string, required
  - `workspaceId` string, nullable
  - `workspaceName` string, nullable
  - `client` number, nullable — Client ID
  - `type` 'board' | 'list' — Project Type
  - `favorite` boolean
  - `users` number[], required — List of assigned user IDs
  - `billing` ProjectBillingBilling
    - `type` 'non_billable' | 'hourly' | 'fixed_fee', required — Project Type
    - `fee` number — Project fixed fee in cents
  - `rate` ProjectBillingRate
    - `type` 'project_rate' | 'user_rate', required — Project Type
    - `rate` number — Flat-rate in cents
    - `userRateOverrides` object — Override user rates
  - `budget` ProjectBillingBudget
    - `type` 'money' | 'time' | 'costs', required — Budget Type
    - `budget` number, required — Budget value in cents (for money) or seconds (for time)
    - `progress` number — Current budget usage in cents (for money) or seconds (for time)
    - `timeProgress` number — Budget progress belongs to time tracking
    - `expenseProgress` number — Budget progress belongs to expenses
    - `period` 'general' | 'monthly' | 'weekly' | 'daily' | 'quarterly' | 'yearly', required — Budget periodicity
    - `appliedFrom` string, nullable — Start budget from (available only for non-recurrent budgets)
    - `disallowOverbudget` boolean
    - `excludeUnbillableTime` boolean
    - `excludeExpenses` boolean
    - `showToUsers` boolean — Set true if all team members should see budget and its progress
    - `threshold` number — Email admins when threshold reached. Threshold is percentage 1 - 100.

## Other responses

- `401` — Unauthorized

---

[API](https://skmtc.net/everhour/apis/everhour-api.md) · [All operations](https://skmtc.net/everhour/apis/everhour-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/everhour/everhour-api/revisions/fc6136e33352/schema)
