curl --request GET \
--url https://app.base44.com/api/apps/{app_id}/google-ads/accounts \
--header 'api_key: <api-key>'import requests
url = "https://app.base44.com/api/apps/{app_id}/google-ads/accounts"
headers = {"api_key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {api_key: '<api-key>'}};
fetch('https://app.base44.com/api/apps/{app_id}/google-ads/accounts', 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}/google-ads/accounts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"api_key: <api-key>"
],
]);
$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}/google-ads/accounts"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("api_key", "<api-key>")
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}/google-ads/accounts")
.header("api_key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/google-ads/accounts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["api_key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "68b1c0d4e7b91d003c45a1f8",
"account_name": "Nordwind Furniture",
"google_customer_id": "1234567890",
"status": "ACTIVE",
"currency_code": "EUR",
"timezone": "Europe/Berlin",
"budget_active": true,
"billing_cadence": "1w",
"charge_trigger_mode": "cadence",
"monthly_spend_cap_micros": 500000000,
"auto_renew": true,
"business_profile_location_id": "locations/12345",
"created_date": "2026-08-25T11:20:00Z",
"updated_date": "2026-08-25T14:05:00Z",
"budget_window_end": "2026-09-30T23:59:59Z",
"terms_accepted_at": "2026-08-25T11:20:00Z"
}Get Google Ads account
Returns the app’s Google Ads account: its status, currency, billing cadence, spend cap and the Google Business Profile linked to it.
An app has at most one Google Ads account, and returns null with a 200 when it has none — that is the normal state for an app that has never advertised, not an error. status is the field to read before anything else, because only an ACTIVE account can create or resume campaigns. budget_active is the second. A campaign cannot serve without a live Google Ads budget behind it.
curl --request GET \
--url https://app.base44.com/api/apps/{app_id}/google-ads/accounts \
--header 'api_key: <api-key>'import requests
url = "https://app.base44.com/api/apps/{app_id}/google-ads/accounts"
headers = {"api_key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {api_key: '<api-key>'}};
fetch('https://app.base44.com/api/apps/{app_id}/google-ads/accounts', 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}/google-ads/accounts",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"api_key: <api-key>"
],
]);
$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}/google-ads/accounts"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("api_key", "<api-key>")
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}/google-ads/accounts")
.header("api_key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/google-ads/accounts")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["api_key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"id": "68b1c0d4e7b91d003c45a1f8",
"account_name": "Nordwind Furniture",
"google_customer_id": "1234567890",
"status": "ACTIVE",
"currency_code": "EUR",
"timezone": "Europe/Berlin",
"budget_active": true,
"billing_cadence": "1w",
"charge_trigger_mode": "cadence",
"monthly_spend_cap_micros": 500000000,
"auto_renew": true,
"business_profile_location_id": "locations/12345",
"created_date": "2026-08-25T11:20:00Z",
"updated_date": "2026-08-25T14:05:00Z",
"budget_window_end": "2026-09-30T23:59:59Z",
"terms_accepted_at": "2026-08-25T11:20:00Z"
}Authorizations
Personal API key.
Path Parameters
ID of the app whose Google Ads campaigns to manage.
Response
Successful Response
The account fields this API commits to.
Base44's ID for the account. Pass it as account_id on the other account endpoints.
"68b1c0d4e7b91d003c45a1f8"
Name of the Google Ads account.
"Nordwind Furniture"
The account's customer ID in Google Ads. Empty until Google has provisioned it.
"1234567890"
State of the account. Either ACTIVE, BLOCKED, SUSPENDED, BILLING_HOLD, CANCELED, PENDING_VERIFICATION, PENDING_BILLING_SETUP, or PENDING_CLOSE. Only an ACTIVE account can create or resume campaigns.
"ACTIVE"
Currency the account bills in, as an ISO 4217 code.
"EUR"
Time zone the account reports in, as an IANA name.
"Europe/Berlin"
Whether the account has a live Google Ads budget, which campaigns need in order to serve.
true
How often the account is charged: 3d, 1w, 2w, or 1m. Only drives charging when charge_trigger_mode is cadence.
"1w"
What triggers a charge on this account. A mode of cadence charges on the billing_cadence schedule, while threshold is a legacy mode that charges when spend crosses a ladder of thresholds and ignores billing_cadence entirely.
"cadence"
Monthly spend cap in micros of the account currency, so 500000000 is 500.00. The value is 0 when no cap is set.
500000000
Whether the account's budget renews automatically at the end of its window.
true
Google Business Profile location linked to the account, as locations/<id>. Empty when none is linked.
"locations/12345"
When the account was created in Base44.
"2026-08-25T11:20:00Z"
When Base44 last changed its record of the account.
"2026-08-25T14:05:00Z"
When the current budget window ends, or null before a budget exists.
"2026-09-30T23:59:59Z"
When the Google Ads terms were accepted for this account, or null until they are.
"2026-08-25T11:20:00Z"
Was this page helpful?