curl --request GET \
--url https://app.base44.com/api/apps/{app_id}/chat/queue \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/apps/{app_id}/chat/queue"
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}/chat/queue', 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}/chat/queue",
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}/chat/queue"
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}/chat/queue")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/chat/queue")
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": [
{
"branch_id": "68f1a2b3c4d5e6f708192a3b",
"content": "Add a contact form to the home page",
"created_at": "2026-10-05T14:30:00.123456+00:00",
"id": "3b9d2f6e-8c41-4a7e-9f05-1d2c3b4a5e6f"
}
],
"is_paused": false
}Get message queue
Returns the messages waiting to run in the app’s AI chat, next to run first, and whether the queue is paused.
When the AI is busy, Send chat message can queue your message instead of running it and return {"queued": true}. Queued messages run one at a time, in order, each as its own turn, once the turn before it finishes. The queue holds up to 7 messages, and a queue nobody changes for 24 hours is emptied. Base44 queues messages on apps that more than one person edits, so on other apps the queue is usually empty.
The API acts on the queue of the app’s main line. Queues on branches aren’t available through it.
Stop generation pauses a queue that has messages in it, so nothing queued starts after you stop. Edit and resend pauses the queue while it runs and resumes it afterward, unless the AI ends that turn waiting on a tool call. A turn that ends waiting on a tool call also pauses the queue until you answer it with Submit tool-call input. Base44 doesn’t lift a pause you set yourself, but every pause expires 24 hours after it was set.
This is limited to 120 requests per minute per app for each workspace’s personal API keys, so every key in a workspace shares one allowance. Some workspaces have a different limit.
curl --request GET \
--url https://app.base44.com/api/apps/{app_id}/chat/queue \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.base44.com/api/apps/{app_id}/chat/queue"
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}/chat/queue', 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}/chat/queue",
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}/chat/queue"
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}/chat/queue")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.base44.com/api/apps/{app_id}/chat/queue")
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": [
{
"branch_id": "68f1a2b3c4d5e6f708192a3b",
"content": "Add a contact form to the home page",
"created_at": "2026-10-05T14:30:00.123456+00:00",
"id": "3b9d2f6e-8c41-4a7e-9f05-1d2c3b4a5e6f"
}
],
"is_paused": false
}Authorizations
Personal access token, sent as Authorization: Bearer <token>.
Path Parameters
ID of the app whose message queue this request acts on.
Response
The app's message queue.
The messages waiting to run, in the order they run.
The queued messages, next to run first. Holds at most 7.
Show child attributes
Show child attributes
[
{
"branch_id": "68f1a2b3c4d5e6f708192a3b",
"content": "Add a contact form to the home page",
"created_at": "2026-10-05T14:30:00.123456+00:00",
"id": "3b9d2f6e-8c41-4a7e-9f05-1d2c3b4a5e6f"
}
]
Whether the queue is paused. While it is, queued messages don't run.
false
Was this page helpful?