curl --request POST \
--url https://app.base44.com/api/billing/mobile/google-play/refresh \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/billing/mobile/google-play/refresh"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.base44.com/api/billing/mobile/google-play/refresh', 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/mobile/google-play/refresh",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
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/mobile/google-play/refresh"
req, _ := http.NewRequest("POST", 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.post("https://app.base44.com/api/billing/mobile/google-play/refresh")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/billing/mobile/google-play/refresh")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"synchronized": true,
"changed": false
}Refresh Google Play subscription
Re-reads your workspace’s Google Play subscription from Google Play and applies its current state, such as a renewal, a plan change, or a cancellation. Use it when the workspace pays through the Base44 Android app and its plan looks out of date. Check the result with Get mobile subscription status.
A workspace that isn’t billed through Google Play gets synchronized: true and changed: false, and nothing is read. Refreshing fails, and keeps failing when you retry, while the workspace also has a web subscription, an App Store purchase on record, or an open payment dispute, or when its Google Play purchase is tied to another workspace. Resolve that instead of retrying.
Only the workspace owner can refresh. Errors from this endpoint have the body {"error": {"code": ..., "message": ..., "details": {}}, "detail": ...}, and a read-only token gets a 403 with error.code forbidden. Workspace API keys aren’t accepted. Limited to 120 requests an hour per user, shared with the Base44 mobile app. Some workspaces have a different limit.
curl --request POST \
--url https://app.base44.com/api/billing/mobile/google-play/refresh \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/billing/mobile/google-play/refresh"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.base44.com/api/billing/mobile/google-play/refresh', 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/mobile/google-play/refresh",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
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/mobile/google-play/refresh"
req, _ := http.NewRequest("POST", 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.post("https://app.base44.com/api/billing/mobile/google-play/refresh")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/billing/mobile/google-play/refresh")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"synchronized": true,
"changed": false
}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.
Response
The refresh result.
true when the workspace's plan now matches Google Play, or when the workspace isn't billed through Google Play. false when the purchase is pending, was replaced by a newer one, or Base44 no longer holds it.
true
true when the refresh changed the workspace's plan or billing period. Absent when requires_restore is true.
false
Present and true when Base44 no longer holds the purchase. Restore purchases from the Base44 Android app to reconnect it.
true
Was this page helpful?