curl --request DELETE \
--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.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', 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 => "DELETE",
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("DELETE", 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.delete("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::Delete.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
}Clear message queue
Removes every queued message and lifts any pause, so the next message you send runs as soon as the AI is free. With keep_pr_watch=true, queued PR Watch runs stay in the queue, and if any remain the queue keeps its pause. The turn that’s already running isn’t affected. Stop it with Stop generation.
A message that was just taken off the queue to run is cancelled too, if its turn hasn’t started yet.
A collaborator in the editor can send a queued message into the turn that’s running. While that’s happening the message can’t be changed or removed. Clearing the queue is refused until it finishes, unless you pass keep_sent=true.
With keep_sent=true, messages already sent into the chat stay in the queue and still run, even after the turn they were sent into ends, and the request is never refused for a message being sent. Until that behavior reaches your account, keep_sent has no effect and the clear works as without it.
This is limited to 60 requests per minute per app for each workspace’s personal API keys, so every key in a workspace shares one allowance. Every endpoint that changes the queue shares it. Some workspaces have a different limit.
curl --request DELETE \
--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.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', 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 => "DELETE",
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("DELETE", 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.delete("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::Delete.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>. 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
ID of the app whose message queue this request acts on.
Query Parameters
true keeps queued PR Watch runs. If any remain, the queue keeps its pause.
true keeps messages already sent into the chat, which still run, and never refuses the clear with a 409. The response can then include them.
ID of the branch to work on, as returned by List branches. Omit it to work on the app's main branch.
Response
The emptied, unpaused queue. With keep_pr_watch=true, any kept PR Watch runs remain and the queue keeps its pause. With keep_sent=true, messages already sent into the chat remain too.
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?