curl --request GET \
--url https://app.base44.com/api/apps/{app_id}/ownership/transfer/pending \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/apps/{app_id}/ownership/transfer/pending"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.base44.com/api/apps/{app_id}/ownership/transfer/pending', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.base44.com/api/apps/{app_id}/ownership/transfer/pending",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.base44.com/api/apps/{app_id}/ownership/transfer/pending"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.base44.com/api/apps/{app_id}/ownership/transfer/pending")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/ownership/transfer/pending")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"transfer": {
"app_id": "6820f3a4e7b91d003c45a1f2",
"expires_at": "2026-10-05T09:23:41.512000Z",
"id": "68d4b1e9c2a7f3001e5b8c40",
"new_owner_email": "jane@acme.com",
"status": "pending"
}
}Get pending ownership transfer
Returns the app’s pending ownership transfer, or null in transfer when it has none.
A transfer starts in the builder, when the app’s owner or a workspace admin invites a new owner by email. 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. An invitation expires 7 days after it’s sent. An expired invitation isn’t returned. Send it again with Resend ownership transfer, or withdraw it with Cancel ownership transfer.
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. For a transfer to someone outside the workspace, the owner has to be a workspace owner or admin too, with the same Enterprise or partner requirement.
This is limited to 120 requests a minute per caller. Some workspaces have a different limit.
curl --request GET \
--url https://app.base44.com/api/apps/{app_id}/ownership/transfer/pending \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/apps/{app_id}/ownership/transfer/pending"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.base44.com/api/apps/{app_id}/ownership/transfer/pending', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.base44.com/api/apps/{app_id}/ownership/transfer/pending",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.base44.com/api/apps/{app_id}/ownership/transfer/pending"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.base44.com/api/apps/{app_id}/ownership/transfer/pending")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/ownership/transfer/pending")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"transfer": {
"app_id": "6820f3a4e7b91d003c45a1f2",
"expires_at": "2026-10-05T09:23:41.512000Z",
"id": "68d4b1e9c2a7f3001e5b8c40",
"new_owner_email": "jane@acme.com",
"status": "pending"
}
}Authorizations
Personal access token, sent as Authorization: Bearer <token>.
Path Parameters
ID of the app.
Response
The app's pending transfer, if any.
The app's pending ownership transfer, if it has one.
The pending transfer, or null when the app has none.
Show child attributes
Show child attributes
{
"app_id": "6820f3a4e7b91d003c45a1f2",
"expires_at": "2026-10-05T09:23:41.512000Z",
"id": "68d4b1e9c2a7f3001e5b8c40",
"new_owner_email": "jane@acme.com",
"status": "pending"
}
Was this page helpful?