---
title: "Transfer Workspace Ownership"
method: POST
path: "/api/v1/workspaces/{workspace_id}/transfer-ownership"
tags: ["workspaces"]
---

# Transfer Workspace Ownership

`POST /api/v1/workspaces/{workspace_id}/transfer-ownership`

## Request

- Base URL: `https://memory.kagura-ai.com` (the document declares no server; this is the origin it was published from)
- URL: `https://memory.kagura-ai.com/api/v1/workspaces/{workspace_id}/transfer-ownership`
- Auth: none declared

Transfer ownership of a workspace to an existing member.

Current-owner-only and session-only (a Bearer API key / OAuth token is
rejected 403 — a sensitive governance action must require a real browser
session). The owner check binds to the **path** ``workspace_id``, never the
caller's current workspace. Atomic single-owner invariant under a row lock,
idempotent, and writes an audit row + bumps the ownership epoch on success.

## Path parameters

- `workspace_id` string, uuid, required

## Headers

- `authorization` string, nullable

## Request body

- TransferOwnershipRequest: Request to transfer workspace ownership to an existing member.
  - `target_user_id` string, required: User ID of an existing workspace member to promote to owner.

## Response `200`

Successful Response

- TransferOwnershipResponse: Result of an ownership transfer (or idempotent no-op).
  - `workspace_id` string, required
  - `previous_owner_id` string, required
  - `new_owner_id` string, required
  - `ownership_epoch` integer, required
  - `changed` boolean, required: False when the target already owned the workspace (no-op).

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/kagura-ai/apis/kagura-memory-cloud.md) · [All operations](https://skmtc.dev/kagura-ai/apis/kagura-memory-cloud/llms.txt) · [OpenAPI document](https://skmtc.dev/kagura-ai/apis/kagura-memory-cloud/revisions/09f17f5ada29?raw)
