---
title: "Add a member to an organization"
method: POST
path: "/v1beta/organizations/{organization_id}/members"
tags: ["Members"]
---

# Add a member to an organization

`POST /v1beta/organizations/{organization_id}/members`

Directly adds a user as a member of an organization. Requires manage permission (owner or admin).

## Path parameters

- `organization_id` string, required — Organization to add the member to. Pattern: org_[0-9a-hjkmnp-tv-z]{26}

## Request body

- object — AddOrganizationMemberRequest identifies a user to add as a member.
  - `role` 'owner' | 'admin' | 'member', required
  - `user_id` string, required — User account ID of the member to add. Pattern: user_[0-9a-hjkmnp-tv-z]{26}

## Response `200`

Success

- AddOrganizationMemberResponse — AddOrganizationMemberResponse contains the added member.
  - `member` OrganizationMember, required — OrganizationMember represents a member of an organization.
    - `joined_at` string, date-time, required — When the member joined the organization.
    - `role` 'owner' | 'admin' | 'member', required
    - `user` User, required — User represents a human user account. Returned by GetUser (endpoint deferred).
      - `email` string, email, required
      - `family_name` string, nullable — Family name (last name) of the user.
      - `given_name` string, nullable — Given name (first name) of the user.
      - `id` string, required
      - `name` string, required — Display name of the user.
      - `profile_image_url` string, nullable — URL of the user's profile image.

## Other responses

- `400` — Invalid request parameters
- `401` — Authentication failed - missing or invalid API key
- `403` — Authorization failed - valid key but insufficient permissions
- `404` — Resource not found
- `429` — Too many requests
- `500` — Internal server error

## Changes

- **2026-03-19** `885f41a57639` — 5 info
  - api tag `Members` added
  - api tag `Organizations` removed
  - added the optional property `member/user/family_name` to the response with the `200` status
  - added the optional property `member/user/given_name` to the response with the `200` status
  - …1 more
- **2026-03-05** `a7e69986914e` — 2 breaking, 2 info
  - removed the required property `member/email` from the response with the `200` status
  - removed the required property `member/user/type` from the response with the `200` status
  - the `member/user/id` response's property pattern was changed from `^(user|svc)_[0-9a-hjkmnp-tv-z]{26}$` to `^user_[0-9a-hjkmnp-tv-z]{26}$` for the status `200`
  - added the required property `member/user/email` to the response with the `200` status
- **2026-03-05** `1cfaf75f475e` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/factify-inc/apis/factify-api/changes/v1beta/organizations/:organization_id/members/post.md)

---

[API](https://skmtc.dev/factify-inc/apis/factify-api.md) · [All operations](https://skmtc.dev/factify-inc/apis/factify-api/llms.txt) · [OpenAPI document](https://skmtc.dev/factify-inc/apis/factify-api/revisions/8baabdfb82bf?raw)
