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

# Create a member

`POST /members`

## Request

- Base URL: `https://www.happyscribe.com/api/v1`
- URL: `https://www.happyscribe.com/api/v1/members`
- Auth: API key in header `Authorization`

Creates a partner end user inside a workspace. Idempotent on `workspace_id` and
`email`: a second call returns the existing member with `200`, unchanged (its `name`
and `metadata` stay as they are; change them with `PATCH /members/{id}`). Nothing is emailed,
and the person never hears from HappyScribe: no confirmation, no onboarding, no
summary emails. An email that already belongs to a HappyScribe user is added to
the workspace as it is; such a member's `name` is theirs and reads as `null`.

## Request body

- MemberCreate
  - `workspace_id` string, required: Workspace ID, beginning with `wks_`. Treat it as an opaque string. Integer workspace ids are still accepted.
  - `email` string, email, required: The end user's email. Creating a member again with it returns the existing one.
  - `name` string: The end user's name.
  - `metadata` union: Merged into the object's metadata: the keys you send are added or overwritten and the others kept. `""` as a value removes that key; `metadata: ""` removes every key. Numbers and booleans are stored as their text; objects, arrays and `null` are refused.
    - object
    - ''

## Response `200`

The member already existed.

- Member
  - `id` string: Stable typed member ID beginning with `mem_`. Treat it as an opaque string.
  - `object` string: Always `member`.
  - `workspace_id` string: Workspace ID, beginning with `wks_`. Treat it as an opaque string.
  - `email` string, email: The member's email, unique within the workspace.
  - `name` string, nullable: `null` for a person who also has workspaces of their own: their name is theirs.
  - `metadata` Metadata: Your own key-value pairs, for your ids and context. HappyScribe stores them, returns them on the object and in every webhook that carries it, and never acts on them. Up to 50 keys of up to 40 characters (no square brackets), values up to 500 characters. See [metadata](/meetingkit/setup#a-workspace-per-customer).
  - `created_at` string, date-time: When the member was created, in ISO 8601.

## Other responses

- `201`: Member created.
- `401`: Missing or invalid API key, or the key is not an owner or admin of the workspace.
- `404`: The workspace is not one the key belongs to.
- `422`: Invalid `email` or `name`; an email that cannot be added to a workspace (`unavailable`); a workspace on a legacy plan that bills every member as a seat (`seat_billed_plan`).
- `429`: More than 100 members created in the workspace in the last hour. `Retry-After` says when to try again.

---

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