curl --request GET \
--url https://app.base44.com/api/billing/business-email/status \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/billing/business-email/status"
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/billing/business-email/status', 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/billing/business-email/status",
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/billing/business-email/status"
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/billing/business-email/status")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/billing/business-email/status")
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{
"items": [
{
"domain": "acme.com",
"status": "ACTIVE",
"end_of_period_date": "2027-03-14T00:00:00Z",
"auto_renew_off": false,
"created_date": "2026-03-14T09:21:07Z"
}
],
"can_purchase": true
}{
"detail": [
{
"type": "less_than_equal",
"loc": [
"query",
"limit"
],
"msg": "Input should be less than or equal to 500",
"input": "501",
"ctx": {
"le": 500
}
}
]
}Get business email status
Lists the business email on your workspace, one entry per domain, and tells you whether you can buy more. Business email is a Google Workspace subscription on one of your workspace’s custom domains, billed to the workspace.
Each entry’s status tells you what to do next:
PENDING_SETUP: finish setting it up with Get business email setup link.TOS_SUSPENDED: the domain’s Google admin has to accept Google’s terms of service. Get them a sign-in link with Get business email admin console link.EXPIRED: the subscription has ended. Renew it from Get business email management link.
Only the workspace owner can call this endpoint. A workspace with no billing account for business email gets an empty items list and can_purchase: false, whoever calls. A read-only token is refused, and workspace API keys aren’t accepted. Limited to 30 requests a minute per caller. Some workspaces have a different limit.
Entries come in the order the billing provider lists them, and the default limit of 500 returns every one on one page. To page through them, pass a smaller limit and send each next_cursor back as cursor. A cursor carries the rest of the query, so send it alone.
curl --request GET \
--url https://app.base44.com/api/billing/business-email/status \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/billing/business-email/status"
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/billing/business-email/status', 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/billing/business-email/status",
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/billing/business-email/status"
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/billing/business-email/status")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/billing/business-email/status")
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{
"items": [
{
"domain": "acme.com",
"status": "ACTIVE",
"end_of_period_date": "2027-03-14T00:00:00Z",
"auto_renew_off": false,
"created_date": "2026-03-14T09:21:07Z"
}
],
"can_purchase": true
}{
"detail": [
{
"type": "less_than_equal",
"loc": [
"query",
"limit"
],
"msg": "Input should be less than or equal to 500",
"input": "501",
"ctx": {
"le": 500
}
}
]
}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.
Query Parameters
Entries per page, 1 to 500. Defaults to 500, which fits every entry.
1 <= x <= 500next_cursor from the previous page. Send it alone.
Response
The workspace's business email.
One entry per domain with business email on this page. With the default limit, every one. Empty when the workspace has none.
Show child attributes
Show child attributes
[ { "auto_renew_off": false, "created_date": "2026-03-14T09:21:07Z", "domain": "acme.com", "end_of_period_date": "2027-03-14T00:00:00Z", "status": "ACTIVE" } ]
true when the workspace can buy business email. false when it has no billing account for business email, or its plan is paid through the App Store.
true
Send as cursor to get the next page. null on the last page.
"gAAAAABn7vJ0q2kX"
Was this page helpful?