curl --request POST \
--url https://app.base44.com/api/apps/{app_id}/testing-agent/analysis/{execution_id}/reanalyze \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/apps/{app_id}/testing-agent/analysis/{execution_id}/reanalyze"
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/analysis/{execution_id}/reanalyze', 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/analysis/{execution_id}/reanalyze",
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/analysis/{execution_id}/reanalyze"
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/analysis/{execution_id}/reanalyze")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/testing-agent/analysis/{execution_id}/reanalyze")
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{
"id": "68a1ca02f0b3d9001a7e5d11",
"app_id": "6820f3a4e7b91d003c45a1f2",
"flow_id": "68a1c2e4f0b3d9001a7e5c21",
"execution_id": "68a1c9b7f0b3d9001a7e5d04",
"flow_goal": "Sign up, create a project called Launch, and check that it appears on the dashboard.",
"status": "goal_accomplished",
"summary": "The project was created and listed on the dashboard, but only after a reload.",
"issues": [
{
"category": "functionality",
"related_step_number": 3,
"severity": "warning",
"summary": "After saving, the dashboard still shows no projects until the page is reloaded.",
"title": "Project doesn't appear after creation"
}
],
"created_date": "2026-09-28T10:18:39+00:00",
"updated_date": "2026-09-28T10:18:39+00:00"
}Reanalyze test run
Writes a new report for a finished test run from the steps the run already recorded. The browser doesn’t run again. The new report replaces the old one, and the run’s goal_accomplished follows the new verdict.
It also finishes a run stuck in analyzing whose steps were saved, and that run then ends normally.
This makes an AI call and costs credits, which are recorded against the user who started the run. It runs while you wait, usually for under a minute, and returns the new report. If it fails, the old report stays. The call is refused when the workspace is out of credits.
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/analysis/{execution_id}/reanalyze \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/apps/{app_id}/testing-agent/analysis/{execution_id}/reanalyze"
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/analysis/{execution_id}/reanalyze', 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/analysis/{execution_id}/reanalyze",
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/analysis/{execution_id}/reanalyze"
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/analysis/{execution_id}/reanalyze")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/testing-agent/analysis/{execution_id}/reanalyze")
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{
"id": "68a1ca02f0b3d9001a7e5d11",
"app_id": "6820f3a4e7b91d003c45a1f2",
"flow_id": "68a1c2e4f0b3d9001a7e5c21",
"execution_id": "68a1c9b7f0b3d9001a7e5d04",
"flow_goal": "Sign up, create a project called Launch, and check that it appears on the dashboard.",
"status": "goal_accomplished",
"summary": "The project was created and listed on the dashboard, but only after a reload.",
"issues": [
{
"category": "functionality",
"related_step_number": 3,
"severity": "warning",
"summary": "After saving, the dashboard still shows no projects until the page is reloaded.",
"title": "Project doesn't appear after creation"
}
],
"created_date": "2026-09-28T10:18:39+00:00",
"updated_date": "2026-09-28T10:18:39+00:00"
}Authorizations
Personal access token, sent as Authorization: Bearer <token>.
Path Parameters
ID of the app.
ID of the run to reanalyze.
Response
The new report.
The report for a finished run.
ID of the report.
"68a1ca02f0b3d9001a7e5d11"
ID of the app.
"6820f3a4e7b91d003c45a1f2"
ID of the test.
"68a1c2e4f0b3d9001a7e5c21"
ID of the run.
"68a1c9b7f0b3d9001a7e5d04"
The test's goal when the run started.
"Sign up, create a project called Launch, and check that it appears on the dashboard."
The verdict. failed and timeout mean the report couldn't reach one, and summary says what happened.
goal_accomplished, goal_not_accomplished, failed, timeout "goal_accomplished"
Plain-language summary of the run.
"The project was created and listed on the dashboard, but only after a reload."
Problems found during the run. Empty when there were none.
Show child attributes
Show child attributes
[
{
"category": "functionality",
"related_step_number": 3,
"severity": "warning",
"summary": "After saving, the dashboard still shows no projects until the page is reloaded.",
"title": "Project doesn't appear after creation"
}
]
When the report was written, as an ISO 8601 UTC timestamp.
"2026-09-28T10:18:39+00:00"
When the report last changed, as an ISO 8601 UTC timestamp.
"2026-09-28T10:18:39+00:00"
Was this page helpful?