Skip to main content
POST
Start ownership transfer

Authorizations

Authorization
string
header
required

Personal access token, sent as Authorization: Bearer <token>.

Path Parameters

app_id
string
required

ID of the app.

Body

application/json

The ownership transfer invitation to send.

new_owner_email
string<email>
required

Email address of the new owner. The invitation goes there, and they need a Base44 account with this email to accept it.

Example:

"jane@acme.com"

destination
enum<string> | null

Either same_workspace, to invite an owner, admin, editor, or member of the app's workspace, or external_email, to invite anyone. Defaults to external_email.

Available options:
same_workspace,
external_email
Example:

"external_email"

disconnect_integrations
boolean
default:true

Whether to disconnect all of the app's integrations when the recipient accepts into another workspace (true) or keep them connected (false). It's used only when you send neither integration_decisions nor secret_decisions, and has no effect when the recipient accepts into the app's current workspace. To disconnect integrations in that case, send integration_decisions. Defaults to true.

Example:

true

integration_decisions
IntegrationTransferDecisionRequest · object[] | null

What happens to each of the app's integrations when the recipient accepts. An integration you leave out is disconnected, and so is one whose can_keep_connected is false, whatever you choose. If you send secret_decisions without this, it counts as empty, which is rejected when the app has integrations.

Example:
secret_decisions
SecretTransferDecisionRequest · object[] | null

What happens to each of the app's secrets when the recipient accepts. A secret you leave out needs a new value. Values never go in the request, and are copied on the server. If you send integration_decisions without this, it counts as empty, which is rejected when the app has secrets. When you send neither list, every secret keeps its value.

Example:
keep_sender_as_collaborator
boolean
default:false

Whether the app's current owner keeps editor access to the app after the transfer (true) or loses their direct access to it (false). An owner or admin of the workspace the app ends up in keeps access through that workspace either way. Defaults to false.

Example:

false

Response

The new transfer, waiting for the recipient to accept it.

An ownership transfer waiting for its recipient to accept it.

id
string
required

ID of the ownership transfer.

Example:

"68d4b1e9c2a7f3001e5b8c40"

app_id
string
required

ID of the app being transferred.

Example:

"6820f3a4e7b91d003c45a1f2"

new_owner_email
string
required

Email address the transfer invitation was sent to.

Example:

"jane@acme.com"

status
string
required

Either pending, while the invitation waits for the recipient, or accepting, while the recipient's acceptance is being applied.

Example:

"pending"

expires_at
string
required

When the invitation expires, as a UTC timestamp in ISO 8601 format. The recipient can't accept it after that.

Example:

"2026-10-05T09:23:41.512000Z"