---
title: "Create a new organization membership"
method: POST
path: "/organizations/{organization_id}/memberships"
tags: ["Organization Memberships"]
---

# Create a new organization membership

`POST /organizations/{organization_id}/memberships`

## Request

- Base URL: `https://api.clerk.com/v1`
- URL: `https://api.clerk.com/v1/organizations/{organization_id}/memberships`
- Auth: HTTP bearer

Adds a user as a member to the given organization.
Only users in the same instance as the organization can be added as members.

This organization will be the user's [active organization] (https://clerk.com/docs/organizations/overview#active-organization)
the next time they create a session, presuming they don't explicitly set a
different organization as active before then.

## Path parameters

- `organization_id` string, required

## Request body

- object
  - `user_id` string, required: The ID of the user that will be added as a member in the organization. The user needs to exist in the same instance as the organization and must not be a member of the given organization already.
  - `role` string, required: The role that the new member will have in the organization.
  - `public_metadata` object, nullable: Metadata saved on the organization membership, that is visible to both your frontend and backend.
  - `private_metadata` object, nullable: Metadata saved on the organization membership that is only visible to your backend.

## Response `200`

Success

- OrganizationMembership: A user's membership in an organization
  - `id` string, required
  - `object` 'organization_membership', required: String representing the object's type. Objects of the same type share the same value.
  - `role` string, required
  - `role_name` string
  - `permissions` string[], required
  - `public_metadata` object, required: Metadata saved on the organization membership, accessible from both Frontend and Backend APIs
  - `private_metadata` object: Metadata saved on the organization membership, accessible only from the Backend API
  - `organization` Organization, required
    - `object` 'organization', required
    - `id` string, required
    - `name` string, required
    - `slug` string, required
    - `image_url` string
    - `has_image` boolean, required
    - `members_count` integer
    - `missing_member_with_elevated_permissions` boolean
    - `pending_invitations_count` integer
    - `max_allowed_memberships` integer, required
    - `admin_delete_enabled` boolean, required
    - `self_serve_sso_enabled` boolean: Whether this organization can configure self-serve enterprise SSO.
    - `public_metadata` object, required
    - `private_metadata` object
    - `created_by` string
    - `created_at` integer, required: Unix timestamp of creation.
    - `updated_at` integer, required: Unix timestamp of last update.
    - `last_active_at` integer: Unix timestamp of last activity.
    - `role_set_key` string, nullable: The key of the [role set](https://clerk.com/docs/guides/organizations/control-access/role-sets) assigned to this organization.
  - `public_user_data` OrganizationMembershipPublicUserData: An organization membership with public user data populated
    - `user_id` string, required
    - `first_name` string, nullable, required
    - `last_name` string, nullable, required
    - `profile_image_url` string, nullable, required
    - `image_url` string, required
    - `has_image` boolean, required
    - `identifier` string, nullable
    - `username` string, nullable
    - `banned` boolean
    - `deprovisioned` boolean
  - `created_at` integer, required: Unix timestamp of creation.
  - `updated_at` integer, required: Unix timestamp of last update.

## Other responses

- `400`: Request was not successful
- `403`: Authorization invalid
- `404`: Resource not found
- `422`: Invalid request parameters

## Changes

- **2026-10-23** (2025-11-10) `a490313abffa`: 1 warning
  - removed the optional property `organization/allOf[#/components/schemas/Organization]/self_serve_directory_sync_enabled` from the response with the `200` status
- **2026-10-16** (2025-11-10) `7db12d6a9b2a`: 1 info
  - added the optional property `organization/allOf[#/components/schemas/Organization]/self_serve_directory_sync_enabled` to the response with the `200` status
- **2026-09-09** (2025-11-10) `b5f30169c3f3`: 1 info
  - added the optional property `organization/allOf[#/components/schemas/Organization]/self_serve_sso_enabled` to the response with the `200` status
- **2026-07-30** (2025-11-10) `1d47a6af3bef`: 1 info
  - added the optional property `public_user_data/deprovisioned` to the response with the `200` status
- **2026-04-14** (2025-11-10) `443c2c018cfc`: 1 info
  - added the optional property `public_user_data/banned` to the response with the `200` status

[Operation history](https://skmtc.dev/clerk/apis/clerk-backend-api/changes/organizations/:organization_id/memberships/post.md)

---

[API](https://skmtc.dev/clerk/apis/clerk-backend-api.md) - [All operations](https://skmtc.dev/clerk/apis/clerk-backend-api/llms.txt) - [OpenAPI document](https://skmtc.dev/clerk/apis/clerk-backend-api/revisions/a490313abffa?raw)
