curl --request GET \
--url https://app.base44.com/api/apps/{app_id}/imported/agent-runs \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/apps/{app_id}/imported/agent-runs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.base44.com/api/apps/{app_id}/imported/agent-runs', 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}/imported/agent-runs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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}/imported/agent-runs"
req, _ := http.NewRequest("GET", 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.get("https://app.base44.com/api/apps/{app_id}/imported/agent-runs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/imported/agent-runs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "6820f3a4e7b91d003c45a1f3",
"deployment_id": "6820f3a4e7b91d003c45a1f2",
"status": "queued",
"base_sha": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"head_sha": "cccccccccccccccccccccccccccccccccccccccc",
"source": {
"kind": "github_pull_request",
"number": 12
},
"package_digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"created_date": "2026-10-30T00:00:00Z"
}
]
}{
"error": {
"code": "invalid_cursor",
"message": "The cursor does not match this query.",
"details": {}
}
}{
"error": {
"code": "unauthenticated",
"message": "Sign in with Bearer credentials.",
"details": {}
}
}{
"error": {
"code": "forbidden",
"message": "App or repository access denied.",
"details": {}
}
}{
"error": {
"code": "not_found",
"message": "Agent run not found.",
"details": {}
}
}{
"error": {
"code": "idempotency_conflict",
"message": "Use a new Idempotency-Key for different input.",
"details": {}
}
}{
"error": {
"code": "invalid_request",
"message": "The agent manifest is invalid.",
"details": {}
}
}{
"error": {
"code": "rate_limited",
"message": "Too many agent requests.",
"details": {}
}
}{
"error": {
"code": "database_unavailable",
"message": "Database temporarily unavailable, please retry",
"details": {}
}
}List agent runs
Authenticate with a platform Bearer credential or full-access workspace key permitted to edit this app. Scoped workspace keys are not accepted. Shares 60 reads or 6 mutations per minute per credential. Responses include request and rate-limit headers; 429 includes Retry-After. List retained manual runs newest first by creation time and identifier. Staff shadow reviews are available only through the staff review API. Default 20, maximum 100. Cursors are scoped to this app and workspace. Includes measured usage when available.
curl --request GET \
--url https://app.base44.com/api/apps/{app_id}/imported/agent-runs \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/apps/{app_id}/imported/agent-runs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.base44.com/api/apps/{app_id}/imported/agent-runs', 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}/imported/agent-runs",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
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}/imported/agent-runs"
req, _ := http.NewRequest("GET", 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.get("https://app.base44.com/api/apps/{app_id}/imported/agent-runs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/imported/agent-runs")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"items": [
{
"id": "6820f3a4e7b91d003c45a1f3",
"deployment_id": "6820f3a4e7b91d003c45a1f2",
"status": "queued",
"base_sha": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"head_sha": "cccccccccccccccccccccccccccccccccccccccc",
"source": {
"kind": "github_pull_request",
"number": 12
},
"package_digest": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"created_date": "2026-10-30T00:00:00Z"
}
]
}{
"error": {
"code": "invalid_cursor",
"message": "The cursor does not match this query.",
"details": {}
}
}{
"error": {
"code": "unauthenticated",
"message": "Sign in with Bearer credentials.",
"details": {}
}
}{
"error": {
"code": "forbidden",
"message": "App or repository access denied.",
"details": {}
}
}{
"error": {
"code": "not_found",
"message": "Agent run not found.",
"details": {}
}
}{
"error": {
"code": "idempotency_conflict",
"message": "Use a new Idempotency-Key for different input.",
"details": {}
}
}{
"error": {
"code": "invalid_request",
"message": "The agent manifest is invalid.",
"details": {}
}
}{
"error": {
"code": "rate_limited",
"message": "Too many agent requests.",
"details": {}
}
}{
"error": {
"code": "database_unavailable",
"message": "Database temporarily unavailable, please retry",
"details": {}
}
}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.
Path Parameters
The imported app whose connected repository the agent may read.
^[a-f0-9]{24}$"6820f3a4e7b91d003c45a1f1"
Query Parameters
Maximum items, default 20 on the first page. Omit with a cursor to reuse its limit.
1 <= x <= 10020
Opaque next_cursor from the preceding page of this app's collection.
4096"opaque-cursor"
Was this page helpful?