Skip to content

Accept ownership of an organization

The ownership_transfers.accept operation: POST /api/v1/ownership_transfers/accept in the REST API and the ownership_transfers_accept tool in the MCP server.

POST/api/v1/ownership_transfers/accept

Accepts the offer of ownership an owner made to you: you become an owner of the whole organization (org_owner), and the owner who offered it becomes an admin. You must be signed in as the member the offer is for, with a sign-in in the last 15 minutes; the offer must still be open (7 days).

Who can call it: the signed-in member the offer is addressed to.

At a glance

  • REST: POST /api/v1/ownership_transfers/accept
  • MCP tool: ownership_transfers_accept
  • Operation ID: ownership_transfers.accept
  • Scope: Platform
  • Permission: account:write
  • Risk tier: security
  • Dry run: Supported (send Ownrecord-Dry-Run: true)
  • Idempotency: Idempotency-Key required
  • Modes: Test and live
  • Authentication: API key with the account:write scope
  • Fresh sign-in: In the console, a sign-in within the last 15 minutes
  • Since: M12

Request

Body

A JSON object (Content-Type: application/json):

FieldTypeRequiredDescription
orgIdorg_… IDYes

Response

200 OK with a JSON object:

FieldTypeDescription
organizationobject
organization.idorg_… ID
organization.slugstring
organization.namestring
membershipobjectYour organization-wide owner membership.
membership.idmem_… ID
membership.object"membership"
membership.orgIdorg_… ID
membership.userIdusr_… ID
membership.roleone of org_owner, org_admin, billing_admin, finance, tax_manager, support, developer, viewer
membership.scopeobject
membership.livemodeAccessboolean
membership.invitedByusr_… ID or null
membership.userobject or null
membership.createdAtdate-time
membership.updatedAtdate-time
previousOwnerMembershipobject or nullThe membership of the owner who offered it, now org_admin.

Examples

Accept the offer

HTTP
POST /api/v1/ownership_transfers/accept
Authorization: Bearer or_test_…
Idempotency-Key: 3f1c9a52-7d0e-4b8f-9a61-0c2d5e8b7f14
Content-Type: application/json

{
  "orgId": "org_01m4tx5nj7ekd958x53w4bntcg"
}

Response (200):

JSON
{
  "organization": {
    "id": "org_01m4tx5nj7ekd958x53w4bntcg",
    "slug": "acme",
    "name": "Acme"
  },
  "membership": {
    "id": "mem_01m4tx5nj8emwbyf7y9vcf47x6",
    "object": "membership",
    "orgId": "org_01m4tx5nj7ekd958x53w4bntcg",
    "userId": "usr_01m4tx5nj8emwbyf7y9vcf47xb",
    "role": "org_owner",
    "scope": {
      "type": "brand",
      "brandId": "brd_01m4tx5nj8emwbyf7y9vcf47x4"
    },
    "livemodeAccess": false,
    "invitedBy": "usr_01m4tx5nj8emwbyf7y9vcf47xa",
    "user": {
      "email": "dev@acme.example",
      "name": "Dana Developer"
    },
    "createdAt": "2026-10-13T12:00:00.000Z",
    "updatedAt": "2026-10-13T12:00:00.000Z"
  },
  "previousOwnerMembership": {
    "id": "mem_01m4tx5nj8emwbyf7y9vcf47x6",
    "object": "membership",
    "orgId": "org_01m4tx5nj7ekd958x53w4bntcg",
    "userId": "usr_01m4tx5nj8emwbyf7y9vcf47xb",
    "role": "org_admin",
    "scope": {
      "type": "brand",
      "brandId": "brd_01m4tx5nj8emwbyf7y9vcf47x4"
    },
    "livemodeAccess": false,
    "invitedBy": "usr_01m4tx5nj8emwbyf7y9vcf47xa",
    "user": {
      "email": "dev@acme.example",
      "name": "Dana Developer"
    },
    "createdAt": "2026-10-13T12:00:00.000Z",
    "updatedAt": "2026-10-13T12:00:00.000Z"
  }
}

Errors

CodeHTTP statusWhenWhat to do
ownership_transfer_not_found404No open offer of this organization is addressed to you.Offers expire after 7 days. Ask an owner to offer ownership again.
owner_required403The caller isn't a signed-in person.Ask an organization owner (org_owner).
version_conflict409The offer or a membership changed at the same time; try again.Fetch the object again and retry the change.
fresh_auth_required403Your last sign-in is older than 15 minutes.Sign in again, then repeat the action within 15 minutes.
permission_denied403The caller isn't a signed-in user.Ask an organization owner or admin for a role or scope that allows this action.

It can also return these common errors: validation_failed, api_version_unsupported, invalid_json, unsupported_media_type, authentication_required, api_key_invalid, resource_not_found, idempotency_key_required, idempotency_key_reused, idempotency_in_progress, rate_limited, internal_error.