curl --request POST \
--url https://app.base44.com/api/apps/{app_id}/google-ads/setup-suggestions/regenerate-keyword \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"current": "phone repair",
"existing": [
"phone repair",
"screen replacement",
"battery replacement"
]
}
'import requests
url = "https://app.base44.com/api/apps/{app_id}/google-ads/setup-suggestions/regenerate-keyword"
payload = {
"current": "phone repair",
"existing": ["phone repair", "screen replacement", "battery replacement"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
current: 'phone repair',
existing: ['phone repair', 'screen replacement', 'battery replacement']
})
};
fetch('https://app.base44.com/api/apps/{app_id}/google-ads/setup-suggestions/regenerate-keyword', 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/setup-suggestions/regenerate-keyword",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'current' => 'phone repair',
'existing' => [
'phone repair',
'screen replacement',
'battery replacement'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.base44.com/api/apps/{app_id}/google-ads/setup-suggestions/regenerate-keyword"
payload := strings.NewReader("{\n \"current\": \"phone repair\",\n \"existing\": [\n \"phone repair\",\n \"screen replacement\",\n \"battery replacement\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
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/apps/{app_id}/google-ads/setup-suggestions/regenerate-keyword")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"current\": \"phone repair\",\n \"existing\": [\n \"phone repair\",\n \"screen replacement\",\n \"battery replacement\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/google-ads/setup-suggestions/regenerate-keyword")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"current\": \"phone repair\",\n \"existing\": [\n \"phone repair\",\n \"screen replacement\",\n \"battery replacement\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"keyword_theme": "cracked screen fix"
}Regenerate a Google Ads setup keyword theme
Suggests one new keyword theme to replace one you rejected, for a campaign you have not launched yet.
Send the theme to replace as current and every theme already in the campaign as existing. A language model writes one replacement from the app’s own content, and Base44 checks that it differs from all of them, ignoring case.
The call returns a 200 with keyword_theme set to null when there is no new theme: the app has nothing to read, the model fails, or it only comes up with themes you already have. Keep the old theme then. Nothing is saved.
It is refused with a 409 while the workspace is on a Google Ads billing hold. Running the model does not spend credits.
curl --request POST \
--url https://app.base44.com/api/apps/{app_id}/google-ads/setup-suggestions/regenerate-keyword \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"current": "phone repair",
"existing": [
"phone repair",
"screen replacement",
"battery replacement"
]
}
'import requests
url = "https://app.base44.com/api/apps/{app_id}/google-ads/setup-suggestions/regenerate-keyword"
payload = {
"current": "phone repair",
"existing": ["phone repair", "screen replacement", "battery replacement"]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
current: 'phone repair',
existing: ['phone repair', 'screen replacement', 'battery replacement']
})
};
fetch('https://app.base44.com/api/apps/{app_id}/google-ads/setup-suggestions/regenerate-keyword', 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/setup-suggestions/regenerate-keyword",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'current' => 'phone repair',
'existing' => [
'phone repair',
'screen replacement',
'battery replacement'
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://app.base44.com/api/apps/{app_id}/google-ads/setup-suggestions/regenerate-keyword"
payload := strings.NewReader("{\n \"current\": \"phone repair\",\n \"existing\": [\n \"phone repair\",\n \"screen replacement\",\n \"battery replacement\"\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
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/apps/{app_id}/google-ads/setup-suggestions/regenerate-keyword")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"current\": \"phone repair\",\n \"existing\": [\n \"phone repair\",\n \"screen replacement\",\n \"battery replacement\"\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/google-ads/setup-suggestions/regenerate-keyword")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"current\": \"phone repair\",\n \"existing\": [\n \"phone repair\",\n \"screen replacement\",\n \"battery replacement\"\n ]\n}"
response = http.request(request)
puts response.read_body{
"keyword_theme": "cracked screen fix"
}Authorizations
Personal access token, sent as Authorization: Bearer <token>.
Path Parameters
ID of the app you are setting up Google Ads for.
Body
The theme to replace. Only its first 80 characters are used.
"phone repair"
Every theme already in the campaign, so the replacement is new. Only the first 25 are used, each cut to 80 characters.
[
"phone repair",
"screen replacement",
"battery replacement"
]
Response
One replacement theme, or null.
One replacement keyword theme.
A theme that is not current and not in existing, or null when there is no new one. Keep the theme you had on a null.
"cracked screen fix"
Was this page helpful?