curl --request POST \
--url https://app.base44.com/api/apps/{app_id}/testing-agent/flows/generate-from-app-context \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/apps/{app_id}/testing-agent/flows/generate-from-app-context"
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/apps/{app_id}/testing-agent/flows/generate-from-app-context', 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}/testing-agent/flows/generate-from-app-context",
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/apps/{app_id}/testing-agent/flows/generate-from-app-context"
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/apps/{app_id}/testing-agent/flows/generate-from-app-context")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/testing-agent/flows/generate-from-app-context")
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{
"flows": [
{
"app_id": "6820f3a4e7b91d003c45a1f2",
"created_date": "2026-09-28T10:15:00+00:00",
"goal": "Sign up, create a project called Launch, and check that it appears on the dashboard.",
"id": "68a1c2e4f0b3d9001a7e5c21",
"name": "Create a project",
"revision": 1,
"source": "app_context",
"updated_date": "2026-09-28T10:15:00+00:00"
}
],
"no_changes": false
}Generate tests from app
Has Base44 read the app’s code and builder conversation, write up to 5 tests for its main features, and save them. The response lists the saved tests. Start them with Run test.
This makes AI calls and costs credits for the tests it saves. It runs while you wait, usually for 30 seconds to a minute. The call is refused when the workspace is out of credits.
The app needs room for 5 more tests, so it can have at most 245 when you call this. An app with no pages or entities yet gets no tests and no charge, with no_changes set to true.
Each call adds new tests, even when similar ones exist. To get ideas that avoid the tests you have, use Suggest new tests. This call also saves a generation checkpoint, as Save test generation checkpoint does.
This is limited to 20 requests per minute per caller for each app. Some workspaces have a different limit.
curl --request POST \
--url https://app.base44.com/api/apps/{app_id}/testing-agent/flows/generate-from-app-context \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/apps/{app_id}/testing-agent/flows/generate-from-app-context"
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/apps/{app_id}/testing-agent/flows/generate-from-app-context', 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}/testing-agent/flows/generate-from-app-context",
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/apps/{app_id}/testing-agent/flows/generate-from-app-context"
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/apps/{app_id}/testing-agent/flows/generate-from-app-context")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/testing-agent/flows/generate-from-app-context")
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{
"flows": [
{
"app_id": "6820f3a4e7b91d003c45a1f2",
"created_date": "2026-09-28T10:15:00+00:00",
"goal": "Sign up, create a project called Launch, and check that it appears on the dashboard.",
"id": "68a1c2e4f0b3d9001a7e5c21",
"name": "Create a project",
"revision": 1,
"source": "app_context",
"updated_date": "2026-09-28T10:15:00+00:00"
}
],
"no_changes": false
}Authorizations
Personal access token, sent as Authorization: Bearer <token>.
Path Parameters
ID of the app.
Response
The tests Base44 saved.
Tests Base44 generated and saved.
The saved tests, up to 5. Empty when no_changes is true.
Show child attributes
Show child attributes
[
{
"app_id": "6820f3a4e7b91d003c45a1f2",
"created_date": "2026-09-28T10:15:00+00:00",
"goal": "Sign up, create a project called Launch, and check that it appears on the dashboard.",
"id": "68a1c2e4f0b3d9001a7e5c21",
"name": "Create a project",
"revision": 1,
"source": "app_context",
"updated_date": "2026-09-28T10:15:00+00:00"
}
]
true when the app has no pages or entities yet, so nothing was generated or charged.
false
Was this page helpful?