curl --request GET \
--url https://app.base44.com/api/apps/{app_id}/payments/stripe/sandbox \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/apps/{app_id}/payments/stripe/sandbox"
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}/payments/stripe/sandbox', 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}/payments/stripe/sandbox",
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}/payments/stripe/sandbox"
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}/payments/stripe/sandbox")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/payments/stripe/sandbox")
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{
"app_id": "6820f3a4e7b91d003c45a1f2",
"status": "unclaimed",
"claimable_sandbox_id": "clmsbx_T7mK2p9Q4r6S8v",
"claim_url": "https://dashboard.stripe.com/claim/example",
"stripe_account_id": "acct_T7mK2p9Q4r6S8v",
"is_claimable": true,
"expires_at": "2026-10-25T10:00:00"
}Get Stripe sandbox
Returns the stored Stripe sandbox, or null if none exists.
Use this when you need the sandbox’s own fields, such as its Stripe ID or exact expiration time, rather than the summary Get Stripe integration status reports.
This read does not refresh the sandbox’s state from Stripe. Call Get Stripe onboarding link instead if you need it refreshed.
Requires read access to the app.
curl --request GET \
--url https://app.base44.com/api/apps/{app_id}/payments/stripe/sandbox \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/apps/{app_id}/payments/stripe/sandbox"
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}/payments/stripe/sandbox', 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}/payments/stripe/sandbox",
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}/payments/stripe/sandbox"
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}/payments/stripe/sandbox")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/payments/stripe/sandbox")
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{
"app_id": "6820f3a4e7b91d003c45a1f2",
"status": "unclaimed",
"claimable_sandbox_id": "clmsbx_T7mK2p9Q4r6S8v",
"claim_url": "https://dashboard.stripe.com/claim/example",
"stripe_account_id": "acct_T7mK2p9Q4r6S8v",
"is_claimable": true,
"expires_at": "2026-10-25T10:00:00"
}Authorizations
Personal access token, sent as Authorization: Bearer <token>. Each operation lists the permission it needs: read_only or full_access. A full-access token can call every operation. A read-only token can call only the operations that list read_only; anything else returns 403 read_only_credential_route_not_allowed.
Path Parameters
ID of the Base44 app.
Response
Successful Response
Sandbox status response.
ID of the Base44 app.
"6820f3a4e7b91d003c45a1f2"
Stored sandbox status. Either unclaimed, claimed, or expired.
"unclaimed"
Stripe claimable sandbox ID.
"clmsbx_T7mK2p9Q4r6S8v"
Onboarding link, or null when none is stored, you are a workspace viewer, or the app's workspace restricts payment management. Treat this link as a credential.
"https://dashboard.stripe.com/claim/example"
Stripe account ID for the sandbox.
"acct_T7mK2p9Q4r6S8v"
Whether the sandbox is unclaimed, has not expired, has a stored claim link, and the app's workspace allows payment management.
true
Sandbox expiration as a UTC timestamp in ISO 8601 format, or null when no expiration is stored.
"2026-10-25T10:00:00"
Was this page helpful?