---
title: "Create a project role"
method: POST
path: "/project-roles"
tags: ["Project Roles"]
---

# Create a project role

`POST /project-roles`

## Request

- Base URL: `https://www.ruddr.io/api/workspace`
- URL: `https://www.ruddr.io/api/workspace/project-roles`
- Auth: HTTP bearer

## Request body

- object
  - `name` string, required: The name of the role (max 255 chars).
  - `projectId` string, required: The project ID (`uuid`) for this role.
  - `isActive` boolean: Whether the role is still active on the project.
  - `isBillable` boolean: Whether the role is billable. Defaults to the project's billability if not provided.
  - `rate` number, nullable: The billing rate for this role. Will only be applied for billable projects and roles. When Project Rate Cards is enabled, the new role gets this value on every rate card.
  - `estimatedBillableHours` number, nullable: The number of billable hours to budget. This will only get used if `useBudget` is `true` and `budgetMode` is `"detailed"` on the project.
  - `estimatedNonBillableHours` number, nullable: The number of non-billable hours to budget. This will only get used if `useBudget` is `true` and `budgetMode` is `"detailed"` on the project.
  - `estimatedMonthlyBillableHours` number, nullable: The number of billable hours on the monthly budget. This will only get used if `useMonthlyBudget` is `true` and `monthlyBudgetMode` is `"detailed"` on the project.
  - `estimatedMonthlyNonBillableHours` number, nullable: The number of non-billable hours on the monthly budget. This will only get used if `useMonthlyBudget` is `true` and `monthlyBudgetMode` is `"detailed"` on the project.
  - `disciplineId` string, nullable: The discipline ID (`uuid`) for this role.
  - `practiceId` string, nullable: The practice ID (`uuid`) for this role.
  - `locationId` string, nullable: The location ID (`uuid`) for this role.

## Response `200`

200

- ProjectRole
  - `id` string: The unique identifier for the object.
  - `name` string: The name of the role.
  - `isActive` boolean: Whether the role is still active on the project.
  - `isBillable` boolean: Whether the role is billable. Overridden to `false` when the project is non-billable.
  - `rate` number, nullable: The billing rate for this role. `null` when the role or project is non-billable. When Project Rate Cards is enabled, this is the rate on the rate card covering today; see `rateCards` for other periods.
  - `createdAt` string, date-time: The timestamp when the object was created.
  - `project` object: The project this role belongs to.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the project.
    - `client` object: The client associated with the project.
      - `id` string: The unique identifier for the object.
      - `name` string: The name of the client.
  - `discipline` object, nullable: The discipline associated with this role. `null` if not assigned.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the discipline.
  - `practice` object, nullable: The practice associated with this role. `null` if not assigned.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the practice.
  - `location` object, nullable: The location associated with this role. `null` if not assigned.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the location.
  - `budget` object, nullable: The budget hours for this role. `null` when the project does not use a budget.
    - `billableHours` number, nullable: The budgeted billable hours for this role. `null` when the role or project is non-billable.
    - `nonBillableHours` number, nullable: The budgeted non-billable hours for this role.
  - `monthlyBudget` object, nullable: The monthly budget hours for this role. `null` when the project does not use a monthly budget in detailed mode.
    - `billableHours` number, nullable: The budgeted monthly billable hours for this role. `null` when the role or project is non-billable.
    - `nonBillableHours` number, nullable: The budgeted monthly non-billable hours for this role.
  - `rateCards` object[], nullable: The role's rates on each project rate card, earliest first. `null` if the Project Rate Cards feature is not enabled.
    - `id` string: The unique identifier of the project rate card.
    - `start` string, date, nullable: The date the rate card takes effect. Will be in the form YYYY-MM-DD. `null` for the earliest rate card.
    - `end` string, date, nullable: The last date the rate card covers. Will be in the form YYYY-MM-DD. `null` for the last rate card.
    - `rate` number, nullable: The role's billing rate on this rate card. `null` when the role or project is non-billable.

## Other responses

- `400`: 400
- `409`: 409

---

[API](https://skmtc.dev/ruddr/apis/ruddr-api.md) · [All operations](https://skmtc.dev/ruddr/apis/ruddr-api/llms.txt) · [OpenAPI document](https://skmtc.dev/ruddr/apis/ruddr-api/revisions/01c3f2a969ba?raw)
