---
title: "Add Organization Member"
method: POST
path: "/api/me/organizations/{tenant_id}/members"
tags: ["me"]
---

# Add Organization Member

`POST /api/me/organizations/{tenant_id}/members`

## Request

- Base URL: `https://app.thinqos.com` (the document declares no server; this is the origin it was published from)
- URL: `https://app.thinqos.com/api/me/organizations/{tenant_id}/members`
- Auth: none declared

Put a person on this organization's roster by naming their email address.

The roster could re-grade somebody already on it and remove them, and had
no way to put anybody ON it. The routes in were an email-domain rule, which
needs the organization to own the domain, and the retired root-domain
derivation. A contractor on a personal address could not be added at all.

404 when no account holds the address, and the message says what to do
instead rather than restating the failure. The address has to belong to
somebody who has already signed up: this endpoint seats an existing
identity, it does not invite a stranger.

## Path parameters

- `tenant_id` string, uuid, required

## Headers

- `x-impersonate-identity-id` string, nullable

## Request body

- AddOrganizationMemberIn: Put somebody on the roster by email address, or by picking them (TOS-4113 Lane A). An email address typed by the administrator, or the ``identity_id`` of a row they picked from ``GET /api/identities/search`` (TOS-7894). The picked id is only honoured for somebody that search would show, so it is no way around anyone's opt-out of being found. Nobody types a UUID: the page sends the id of the row that was clicked. A NAME is not accepted, though it briefly was. ``identities.display_name`` is neither unique nor verified and is chosen at sign-up, so adding by name seats whoever registered under that name first, with nothing on the screen to say so. 320 is the RFC 5321 maximum length of an address.
  - `email` string, nullable
  - `identity_id` string, uuid, nullable
  - `role` string

## Response `201`

Successful Response

- OrganizationDetailOut: Everything the organization page renders (TOS-4113).
  - `tenant_id` string, uuid, required
  - `display_name` string, required
  - `slug` string, required
  - `logo_url` string, nullable, required
  - `my_role` string, required
  - `can_manage` boolean, required
  - `can_manage_owners` boolean, required
  - `discoverable` boolean, required
  - `members` OrganizationSeatOut[], required
    - `identity_id` string, uuid, required
    - `display_name` string, required
    - `email` string, nullable, required
    - `role` string, required
    - `source` string, required
    - `granted_by` string, uuid, nullable, required
    - `is_agent` boolean, required
  - `join_rules` OrganizationJoinRuleOut[], required
    - `id` string, uuid, required
    - `kind` string, required
    - `value` string, required
    - `default_role` string, required
  - `pending_join_requests` OrganizationJoinRequestOut[], required
    - `id` string, uuid, required
    - `tenant_id` string, uuid, required
    - `identity_id` string, uuid, required
    - `display_name` string, required
    - `email` string, nullable, required
    - `status` string, required
    - `message` string, nullable, required
    - `created_at` string, date-time, required
    - `decided_at` string, date-time, nullable, required
  - `conversation_status` OrganizationConversationStatusOut, required
    - `state` 'ready' | 'mindset_required' | 'confirmation_required' | 'funding_required', required
    - `blocking_reasons` string[], required
    - `can_configure` boolean, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/thinqos/apis/thinqos-api.md) · [All operations](https://skmtc.dev/thinqos/apis/thinqos-api/llms.txt) · [OpenAPI document](https://skmtc.dev/thinqos/apis/thinqos-api/revisions/5387b4ded614?raw)
