Operação em lote
/v1/instances/bulkdesde M11token adminQuando usar
Aplica start, stop, restart ou delete a várias instâncias, dadas por ids ou por tag (uma das duas), até 100 por requisição. Roda 4 por vez e devolve um resultado por instância: uma falha não interrompe as outras. delete exige "confirm": true e pode levar ~20s por instância conectada (logout + parada do worker). Exige o token admin (ou o do operador).
Autenticação
Exige o token admin. Com um token de instância a resposta é 403 forbidden.
Parâmetros
Corpo (JSON)
| Nome | Tipo | Descrição |
|---|---|---|
actionobrigatório | "start" | "stop" | "restart" | "delete" | |
ids | string[] | (até 100 itens) |
tag | string | |
confirm | boolean | Obrigatório (true) para delete. |
Exemplo
curl -s -X POST "$LITEZAP_URL/v1/instances/bulk" \ -H "Authorization: Bearer $LITEZAP_ADMIN_TOKEN" \ -d '{"action":"stop","tag":"cliente-acme"}'const res = await fetch("http://localhost:8787/v1/instances/bulk", { method: "POST", headers: { Authorization: `Bearer ${process.env.LITEZAP_ADMIN_TOKEN}`, "Content-Type": "application/json" }, body: JSON.stringify({ "action": "stop", "tag": "cliente-acme" }),});console.log(res.status, res.status === 204 ? "" : await res.json());import osimport requests
r = requests.post( "http://localhost:8787/v1/instances/bulk", headers={"Authorization": f"Bearer {os.environ['LITEZAP_ADMIN_TOKEN']}"}, json={ "action": "stop", "tag": "cliente-acme", }, timeout=150,)print(r.status_code, r.json() if r.content else "")package main
import ( "fmt" "io" "net/http" "os" "strings")
func main() { req, _ := http.NewRequest("POST", "http://localhost:8787/v1/instances/bulk", strings.NewReader(`{"action":"stop","tag":"cliente-acme"}`)) req.Header.Set("Authorization", "Bearer "+os.Getenv("LITEZAP_ADMIN_TOKEN")) req.Header.Set("Content-Type", "application/json") resp, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer resp.Body.Close() out, _ := io.ReadAll(resp.Body) fmt.Println(resp.Status, string(out))}<?phprequire 'vendor/autoload.php'; // composer require guzzlehttp/guzzle
$client = new GuzzleHttp\Client(['base_uri' => 'http://localhost:8787']);$res = $client->request('POST', '/v1/instances/bulk', [ 'headers' => ['Authorization' => 'Bearer ' . getenv('LITEZAP_ADMIN_TOKEN')], 'json' => [ 'action' => 'stop', 'tag' => 'cliente-acme', ], 'http_errors' => false,]);echo $res->getStatusCode(), ' ', $res->getBody(), PHP_EOL;Outros corpos de exemplo
{ "action": "delete", "ids": [ "inst_7f3a9c2e5b1d4086", "inst_2b9d4f6a8c0e1357" ], "confirm": true}Nos exemplos, LITEZAP_URL é a URL base (ex.: http://localhost:8787) e o token vem deLITEZAP_TOKEN (instância) ou LITEZAP_ADMIN_TOKEN.
Resposta
200 Resultado por instância.
Campos de object
action | string | |
succeeded | integer | |
failed | integer | |
results | object[] |
{ "action": "delete", "succeeded": 1, "failed": 1, "results": [ { "id": "inst_7f3a9c2e5b1d4086", "ok": true }, { "id": "inst_nao_existe", "ok": false, "error": { "code": "instance_not_found", "message": "instance not found", "retryable": false } } ]}Erros
| Código | HTTP | Retentável | O que fazer |
|---|---|---|---|
validation_failed | 400 | não | Corrija o corpo ou os parâmetros; a message diz o campo. |
unauthorized | 401 | não | Envie Authorization: Bearer <token> válido. |
forbidden | 403 | não | Use o token certo (admin, ou o da própria instância). |
Todo erro usa o envelope {"error":{"code","message","retryable"}}. Tabela completa em Erros.
Eventos gerados
Equivalente na Z-API: Apagar instâncias em lote (parceiros). Veja Migrar da Z-API.
Outras operações de Plataforma: Listar chaves de API · Criar chave de API · Revogar chave de API · Gerar link de pareamento · Revogar links de pareamento · Uso da instância

