Start ownership transfer
Changed on<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>
Invites a new owner for the app by email, which starts an ownership transfer.
The recipient gets an email with a link, and the transfer completes only once they sign in and accept it. Nothing about the app changes until then. The invitation expires after 7 days. Check first that it can be sent, and what would transfer with the app, with Check ownership transfer. Afterwards, follow it with Get pending ownership transfer, Resend ownership transfer, or Cancel ownership transfer.
When the recipient accepts, they pick the workspace that receives the app. If it's a different workspace, the app's current collaborators lose access and its AI chat history is cleared. Integrations and secrets follow the choices in the request. To pass the app to a member of its workspace right away, with no invitation, use Transfer ownership to a workspace member.
An app can have only one pending transfer. Starting another while one is pending is rejected, whoever it's for. An expired invitation is replaced.
You need to own the app or be an owner or admin of its workspace. A workspace admin who doesn't own the app also needs an Enterprise workspace or approved partner status. An invitation to someone outside the workspace needs that status too, and only workspace owners and admins can send one. The workspace's transfer policy can narrow that to owners, or turn it off.
This is limited to 30 requests a minute per workspace. Some workspaces have a different limit. Invitation emails are also limited to 5 an hour and 20 a day per caller, and to 3 an hour and 10 a day per recipient. Resending counts toward the same limits.
<Note>This endpoint accepts a personal API key. A read-only key is refused, and workspace API keys are not accepted.</Note>
Request
- Base URL: https://app.base44.com
- URL: https://app.base44.com/api/apps/{app_id}/ownership/transfer
- Auth: HTTP bearer
Path parameters
ID of the app.
Request body
Example request
{
"new_owner_email": "jane@acme.com",
"destination": "external_email",
"disconnect_integrations": true,
"integration_decisions": [
{
"action": "keep_connected",
"integration_type": "slack"
}
],
"secret_decisions": [
{
"action": "require_new_value",
"secret_name": "STRIPE_API_KEY"
}
]
}Response
The new transfer, waiting for the recipient to accept it.
Example response
{
"id": "68d4b1e9c2a7f3001e5b8c40",
"app_id": "6820f3a4e7b91d003c45a1f2",
"new_owner_email": "jane@acme.com",
"status": "pending",
"expires_at": "2026-10-05T09:23:41.512000Z"
}Changes
- ○
endpoint added
- ○