curl --request POST \
--url http://localhost:8080/api/bots/toggle-disabled \
--header 'Authorization: Bearer <token>'import requests
url = "http://localhost:8080/api/bots/toggle-disabled"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('http://localhost:8080/api/bots/toggle-disabled', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8080",
CURLOPT_URL => "http://localhost:8080/api/bots/toggle-disabled",
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 := "http://localhost:8080/api/bots/toggle-disabled"
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("http://localhost:8080/api/bots/toggle-disabled")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8080/api/bots/toggle-disabled")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": 123,
"token": "<string>",
"name": "<string>",
"source": "cli",
"manage_enabled": true,
"proxy_enabled": true,
"backend_url": "<string>",
"secret_token": "<string>",
"long_poll_enabled": true,
"description": "<string>",
"running": true,
"webhook_mode": true,
"disabled": true
}{
"error": "bot not found"
}{
"error": "bot not found"
}{
"error": "bot not found"
}Toggle bot disabled
Toggles whether a bot is disabled. A disabled bot is fully stopped — it does not poll for updates, does not receive webhook updates, and its managed Bot instance is removed. Calling this endpoint again re-enables the bot and restarts it. Admin only.
curl --request POST \
--url http://localhost:8080/api/bots/toggle-disabled \
--header 'Authorization: Bearer <token>'import requests
url = "http://localhost:8080/api/bots/toggle-disabled"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('http://localhost:8080/api/bots/toggle-disabled', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "8080",
CURLOPT_URL => "http://localhost:8080/api/bots/toggle-disabled",
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 := "http://localhost:8080/api/bots/toggle-disabled"
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("http://localhost:8080/api/bots/toggle-disabled")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:8080/api/bots/toggle-disabled")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": 123,
"token": "<string>",
"name": "<string>",
"source": "cli",
"manage_enabled": true,
"proxy_enabled": true,
"backend_url": "<string>",
"secret_token": "<string>",
"long_poll_enabled": true,
"description": "<string>",
"running": true,
"webhook_mode": true,
"disabled": true
}{
"error": "bot not found"
}{
"error": "bot not found"
}{
"error": "bot not found"
}Authorizations
API key with bmx_ prefix. Obtain via /api/auth/api-keys.
Query Parameters
Bot ID to toggle
Response
Updated bot configuration with the new disabled state
Unique bot ID
Telegram bot token
Display name
Registration source (informational only — both types are functionally identical)
cli, web Whether chat management features are active for this bot
Whether this bot forwards updates to a backend URL
Backend URL to forward updates to (when proxy_enabled)
Secret token for validating backend webhook requests
Whether the long-poll endpoint buffers updates for this bot
Natural-language description used by the LLM router
Whether the bot is currently active (polling or webhook-registered)
Whether the bot is in webhook mode (not polled by BotMux)
Whether the bot is disabled. Disabled bots are stopped and do not poll or receive webhook updates.
Was this page helpful?