---
title: "Add organization member"
method: POST
path: "/v1/organizations/{organizationId}/members"
tags: ["Organization"]
---

# Add organization member

`POST /v1/organizations/{organizationId}/members`

Adds a user to an organization with specified permissions. If the user already exists in the system, they will be added to the organization. If not, an invitation will be prepared. Requires admin permission in the organization. Permission flags control what actions the user can perform in the organization - 'admin' grants full control, 'invoicing' allows invoice management, and 'billing' allows access to billing information.

## Path parameters

- `organizationId` string, required

## Request body

- OrganizationMemberCreateDto
  - `email` string
  - `firstname` string
  - `lastname` string
  - `invoicing` boolean
  - `billing` boolean
  - `admin` boolean
  - `teamAssignments` OrganizationMemberTeamAssignmentDto[]
    - `teamMemberId` string
    - `teamId` string
    - `teamName` string
    - `employeeId` string
    - `deleted` boolean
    - `permission` TeamPermissionDto
      - `role` string
      - `manager` boolean
      - `owner` boolean
      - `member` boolean
      - `managerOrOwner` boolean
    - `projectRegistrations` TeamMemberProjectRegistrationDto[]
      - `projectId` string
      - `permission` ProjectPermissionDto
        - `role` string
        - `manager` boolean
        - `owner` boolean
        - `member` boolean
        - `managerOrOwner` boolean
    - `lastUpdate` integer
    - `created` integer

## Response `200`

Created member/permission details

- OrganizationMemberDto
  - `id` string
  - `user` string
  - `email` string
  - `firstname` string
  - `lastname` string
  - `imageUrl` string
  - `deleted` boolean
  - `invited` boolean
  - `permission` OrganizationPermissionDto
    - `invoicing` boolean
    - `billing` boolean
    - `admin` boolean
  - `teamAssignments` OrganizationMemberTeamAssignmentDto[]
    - `teamMemberId` string
    - `teamId` string
    - `teamName` string
    - `employeeId` string
    - `deleted` boolean
    - `permission` TeamPermissionDto
      - `role` string
      - `manager` boolean
      - `owner` boolean
      - `member` boolean
      - `managerOrOwner` boolean
    - `projectRegistrations` TeamMemberProjectRegistrationDto[]
      - `projectId` string
      - `permission` ProjectPermissionDto
        - `role` string
        - `manager` boolean
        - `owner` boolean
        - `member` boolean
        - `managerOrOwner` boolean
    - `lastUpdate` integer
    - `created` integer
  - `hasActiveContract` boolean
  - `hasLicense` boolean
  - `lastUpdate` integer
  - `created` integer
  - `displayName` string
  - `initials` string

## Other responses

- `400` — Bad request (e.g., user not found/invited, already member, invalid email)
- `401` — Not authorized
- `403` — Invalid permission (e.g., not admin)

---

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