---
title: "Create a member"
method: POST
path: "/members"
tags: ["Members"]
---

# Create a member

`POST /members`

## Request

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

## Request body

- object
  - `name` string, required: The name of the member. Max 255 chars.
  - `email` string, required: The email address of the member. Must be unique between all members. Max 255 chars.
  - `sendInvite` boolean: If set to `true` and the member is created successfully, an invitation will be sent to join the workspace. `loginEnabled` must be set to true. Defaults `false` if not provided.
  - `isActive` boolean: Whether the member is active in the workspace.
  - `isBillable` boolean: Whether the member is billable.
  - `loginEnabled` boolean: Whether the member can log into the workspace.
  - `employmentTypeId` 'employee' | 'contractor' | 'other': The type of employment for this member. Defaults to `"employee"` if not provided.
  - `costMethodId` 'hourly' | 'fixed_hourly' | 'fixed_monthly': Deprecated. The cost method for the member. Use `costPeriods` instead.
  - `defaultRate` number: The default bill rate for the member.
  - `defaultRateCurrency` string: The currency code for the default rate. Defaults to the workspace currency if not provided.
  - `activeStartDate` string, date: The active start date (`YYYY-MM-DD`) of the member. Must come on or before `activeEndDate` if set.
  - `activeEndDate` string, date: The active end date (`YYYY-MM-DD`) of the member. Must come on or after `activeStartDate` if set.
  - `timeOffAllowed` boolean: Whether the member is allowed to create time-off time entries.
  - `allowedTimeOffTypes` 'all' | 'custom': Controls which time off types are allowed for time-off entries. Defaults to `"all"` if not provided.
  - `timeOffApprovalMode` 'auto' | 'manager' | 'member': The approval mode for time-off time entries. Defaults to `"auto"` if not set. If set to `"manager"` then `managerId` is required. If set to `"member"` then `timeOffApproverId` is required.
  - `internalExpenseApprovalMode` 'auto' | 'manager' | 'member': The approval mode for internal expense items. Defaults to `"auto"` if not set. If set to `"manager"` then `managerId` is required. If set to `"member"` then `internalExpenseApproverId` is required.
  - `receiveMissingTimeReminders` boolean: Whether the member receives missing time reminders.
  - `unsubmittedTimesheetReminders` boolean: Whether the member receives reminders for unsubmitted timesheets.
  - `automaticTimesheetSubmissionConfirmation` boolean: Whether the member receives confirmation emails when timesheets are automatically submitted.
  - `forbidTimesheetSubmissionWhenBelowCapacity` boolean: Deprecated. Sets `timesheetCapacityPolicy` to `"timesheet"` when `true` or `"unrestricted"` when `false`. Use `timesheetCapacityPolicy` instead.
  - `timesheetCapacityPolicy` 'unrestricted' | 'timesheet' | 'week': The timesheet capacity policy. Defaults to `"unrestricted"` if not provided.
  - `internalId` string: An extra identifier field for tracking this member against other systems. Must be unique between all members. Max 255 chars.
  - `internalNotes` string: An area to store extra notes about the member. Max 5000 chars.
  - `trackTimeByDuration` boolean: Whether the member can track time by entering a duration.
  - `trackTimeByTimeRange` boolean: Whether the member can track time by entering a start and end time.
  - `securityRoleId` string: The ID (`uuid`) of the security role for this member. The default security role will be used if not set.
  - `jobTitleId` string: The ID (`uuid`) of the job title for this member.
  - `memberLevelId` string: The ID (`uuid`) of the member level for this member.
  - `disciplineId` string: The ID (`uuid`) of the discipline for this member.
  - `businessUnitId` string, nullable: The ID (`uuid`) of the business unit for this member. Ignored when the Business Units feature is not enabled.
  - `practiceId` string: The ID (`uuid`) of the practice for this member.
  - `locationId` string: The ID (`uuid`) of the location for this member.
  - `managerId` string: The member ID (`uuid`) of the manager for this member. Required if `timeOffApprovalMode` is `"manager"`.
  - `timeOffApproverId` string: The member ID (`uuid`) of the time off approver for this member. Required if `timeOffApprovalMode` is `"member"`.
  - `internalExpenseApproverId` string: The member ID (`uuid`) of the internal expense approver for this member. Required if `internalExpenseApprovalMode` is `"member"`.
  - `holidayScheduleId` string: The ID (`uuid`) of the holiday schedule for this member.
  - `tagIds` string[]: A list of member tag IDs (`uuid`) associated with this member.
  - `certificationIds` string[]: A list of member certification IDs (`uuid`) associated with this member.
  - `skillIds` string[]: A list of member skill IDs (`uuid`) associated with this member.
  - `timeOffTypeIds` string[]: A list of time off type IDs (`uuid`) associated with this member. `allowedTimeOffTypes` must be set to `"custom"`.

## Response `200`

200

- Member
  - `id` string: The unique identifier for the object.
  - `name` string: The name of the member.
  - `email` string: The email address of the member.
  - `isActive` boolean: Whether the member is active in the workspace.
  - `isBillable` boolean: Whether the member is billable.
  - `loginEnabled` boolean: Whether the member can log into the workspace.
  - `invitationStatusId` 'not_invited' | 'invited' | 'accepted': The invitation status of the member.
  - `employmentTypeId` 'employee' | 'contractor' | 'other': The type of employment for this member.
  - `costMethodId` 'hourly' | 'fixed_hourly' | 'fixed_monthly': Deprecated. The cost method for the member. Use `costPeriods` instead.
  - `defaultRate` number, nullable: The default bill rate for the member.
  - `defaultRateCurrency` string, nullable: The currency code for the default bill rate.
  - `activeStartDate` string, date, nullable: The start date of the member's active period. Will be in the form YYYY-MM-DD.
  - `activeEndDate` string, date, nullable: The end date of the member's active period. Will be in the form YYYY-MM-DD.
  - `timeOffAllowed` boolean: Whether the member is allowed to create time-off time entries.
  - `allowedTimeOffTypes` 'all' | 'custom': Controls which time off types this member can use for time-off entries.
  - `timeOffApprovalMode` 'auto' | 'manager' | 'member': The approval mode for time-off time entries.
  - `internalExpenseApprovalMode` 'auto' | 'manager' | 'member': The approval mode for internal expense items.
  - `receiveMissingTimeReminders` boolean: Whether the member receives missing time reminders.
  - `unsubmittedTimesheetReminders` boolean: Whether the member receives reminders for unsubmitted timesheets.
  - `automaticTimesheetSubmissionConfirmation` boolean: Whether the member receives confirmation emails when timesheets are automatically submitted.
  - `timesheetCapacityPolicy` 'unrestricted' | 'timesheet' | 'week': The timesheet capacity policy for this member.
  - `internalId` string, nullable: An identifier for tracking this member against other systems.
  - `internalNotes` string, nullable: Extra notes about the member.
  - `createdAt` string, date-time: The timestamp when the object was created.
  - `modifiedAt` string, date-time: The timestamp when the object was last modified.
  - `trackTimeByDuration` boolean: Whether the member can track time by entering a duration. This is the effective value combining the workspace and member settings.
  - `trackTimeByTimeRange` boolean: Whether the member can track time by entering a start and end time. This is the effective value combining the workspace and member settings.
  - `securityRole` object: The security role assigned to the member.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the security role.
  - `jobTitle` object, nullable: The job title assigned to the member.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the job title.
  - `level` object, nullable: The member level assigned to the member.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the member level.
  - `discipline` object, nullable: The discipline assigned to the member.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the discipline.
  - `businessUnit` object, nullable: The business unit assigned to the member.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the business unit.
  - `practice` object, nullable: The practice assigned to the member.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the practice.
  - `location` object, nullable: The location assigned to the member.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the location.
  - `manager` object, nullable: The member's direct manager.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the manager.
  - `timeOffApprover` object, nullable: The member designated to approve time-off requests. Only populated when `timeOffApprovalMode` is `"member"`.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the time off approver.
  - `internalExpenseApprover` object, nullable: The member designated to approve internal expense items. Only populated when `internalExpenseApprovalMode` is `"member"`.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the internal expense approver.
  - `holidaySchedule` object, nullable: The holiday schedule assigned to the member.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the holiday schedule.
  - `tags` object[]: The list of member tags assigned to this member.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the tag.
  - `certifications` object[]: The list of certifications assigned to this member.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the certification.
  - `skills` object[]: The list of skills assigned to this member.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the skill.
  - `timeOffTypes` object[]: The list of time off types allowed for this member. Only populated when `allowedTimeOffTypes` is `"custom"`.
    - `id` string: The unique identifier for the object.
    - `name` string: The name of the time off type.
  - `availabilityPeriods` object[]: The list of availability periods defining how many hours per day the member is available.
    - `id` string: The unique identifier for the object.
    - `start` string, date, nullable: The start date of the availability period. Will be in the form YYYY-MM-DD. `null` for the default period.
    - `end` string, date, nullable: The end date of the availability period. Will be in the form YYYY-MM-DD. `null` when the period has no end date.
    - `hoursPerDay` number[]: An array of 7 values representing available hours per day of the week (Sunday through Saturday).
  - `costPeriods` object[]: The list of cost periods defining the member's cost over time.
    - `id` string: The unique identifier for the object.
    - `start` string, date, nullable: The start date of the cost period. Will be in the form YYYY-MM-DD. `null` for the default period.
    - `end` string, date, nullable: The end date of the cost period. Will be in the form YYYY-MM-DD. `null` when the period has no end date.
    - `currency` string: The ISO 4217 currency code for costs in this period.
    - `costMethodId` 'hourly' | 'fixed_hourly' | 'fixed_monthly': The cost method for this period.
    - `costPerHour` number, nullable: The direct cost per hour for the member. Only populated when `costMethodId` is `"hourly"` or `"fixed_hourly"`.
    - `overheadCostPerHour` number, nullable: The overhead cost per hour for the member. Only populated when `costMethodId` is `"hourly"` or `"fixed_hourly"`.
    - `totalCostPerHour` number, nullable: The total cost per hour (direct plus overhead) for the member. Only populated when `costMethodId` is `"hourly"` or `"fixed_hourly"`.
    - `costPerMonth` number, nullable: The direct cost per month for the member. Only populated when `costMethodId` is `"fixed_monthly"`.
    - `overheadCostPerMonth` number, nullable: The overhead cost per month for the member. Only populated when `costMethodId` is `"fixed_monthly"`.
    - `totalCostPerMonth` number, nullable: The total cost per month (direct plus overhead) for the member. Only populated when `costMethodId` is `"fixed_monthly"`.
    - `currencyName` string: The display name of the currency.
  - `utilizationTargetPeriods` object[], nullable: The list of utilization target periods for the member. `null` if the Utilization Tracking feature is not enabled.
    - `id` string: The unique identifier for the object.
    - `start` string, date, nullable: The start date of the utilization target period. Will be in the form YYYY-MM-DD. `null` for the default period.
    - `end` string, date, nullable: The end date of the utilization target period. Will be in the form YYYY-MM-DD. `null` when the period has no end date.
    - `targetPercentage` number, nullable: The target utilization percentage (0–100) for the member during this period.
  - `forbidTimesheetSubmissionWhenBelowCapacity` boolean: Legacy. A computed flag derived from `timesheetCapacityPolicy`. `true` when the policy is `"timesheet"` or `"week"`. Use `timesheetCapacityPolicy` instead.

## Other responses

- `400`: 400

---

[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)
