---
title: "Create Time Tracking Project"
method: POST
path: "/api/v1/time_tracking/projects"
tags: ["Time Tracking", "Public API"]
---

# Create Time Tracking Project

`POST /api/v1/time_tracking/projects`

Creates a new time tracking project. Returns the created project with its ID and tasks. When `allowAllEmployees` is false, the response also includes the `employeeIds` array of employees who have access.

By default, all employees can log time to the project (`allowAllEmployees` defaults to true) and the project is billable (`billable` defaults to true). Set `hasTasks` to true to enable task-level tracking and provide a `tasks` array — at least one task is required when `hasTasks` is true. Project and task names must be unique and may not exceed 50 characters. When `allowAllEmployees` is false, provide `employeeIds` to restrict access to specific employees.

OAuth Scopes: time_tracking.write

## Request body

- ProjectCreateRequestSchema — Schema for creating a new time tracking project with optional tasks
  - `name` string, required — Name of the project. Must be unique and no more than 50 characters.
  - `billable` boolean — Indicates if the project is billable. Defaults to true if not provided.
  - `allowAllEmployees` boolean — Indicates if all employees can log time for this project. Defaults to true if not provided.
  - `employeeIds` integer[] — A list of internal employee IDs that can log time for this project. Only used when `allowAllEmployees` is false.
  - `hasTasks` boolean — Indicates if the project has tasks. Defaults to false if not provided.
  - `tasks` TaskCreateSchema[] — List of tasks to create and associate with the project.
    - `name` string, required — Name of the task.
    - `billable` boolean — Indicates if the task is billable. Defaults to true if not provided.

## Response `201`

Project created successfully. Returns the new project with tasks. The `employeeIds` field is included only when `allowAllEmployees` is false.

- TimeTrackingProjectWithTasksAndEmployeeIds
  - `id` integer — ID of the project.
  - `name` string — Name of the project.
  - `tasks` TimeTrackingTask[] — A list of time tracking tasks for the project.
    - `id` integer — ID of the task.
    - `name` string — Name of the task.
  - `employeeIds` integer[] — A list of internal employee IDs that can log time for this project. If not present, all employees can log time for the project.

## Other responses

- `400` — Bad request parameters - invalid or missing required fields.
- `401` — Unauthorized. Invalid API credentials.
- `403` — Forbidden. Insufficient user permissions or API access is not turned on.
- `406` — Request not acceptable.
- `409` — There was a conflict with the request.
- `500` — Internal server error.

---

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