---
title: "Invite a member"
method: POST
path: "/members/{id}/invite"
tags: ["Members"]
---

# Invite a member

`POST /members/{id}/invite`

## Request

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

Sends a workspace invitation email to the member. The member must have `loginEnabled` set to `true` and must not have already accepted the invitation. Rate limited to once every 5 minutes per member.

## Path parameters

- `id` string, required

## 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
- `404`: 404

---

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