Arquivar, fixar, silenciar ou marcar como (não) lido
/v1/instances/{id}/chats/{jid}desde M9token da instância ou adminQuando usar
Muda o chat pelo app state do WhatsApp: o celular e os outros aparelhos acompanham (nada é enviado ao contato). Os campos são aplicados na ordem unread, archived, pinned, muted; uma falha para ali. unread: false também manda os recibos de leitura. Só chats que estão no log. O WhatsApp permite 3 chats fixados (409 pin_limit); arquivar desafixa. Logo depois de parear, até o celular mandar as chaves, responde 409 app_state_not_synced.
Autenticação
Aceita o token da instância (só a própria instância) ou o token admin. Um token de outra instância recebe 403 forbidden (ou 404 not_found em webhooks de outra instância).
Parâmetros
Caminho
| Nome | Tipo | Descrição |
|---|---|---|
idobrigatório | string | Id da instância (inst_...). |
jidobrigatório | string | JID do chat ([email protected], [email protected], ...@lid) ou número com DDI. Prefira o jid devolvido por GET /chats ou check-numbers. |
Corpo (JSON)
| Nome | Tipo | Descrição |
|---|---|---|
archived | boolean | |
pinned | boolean | |
muted | boolean | |
mute_seconds | integer | Com muted: true: duração; 0 ou ausente = até reativar. (0–31622400) |
unread | boolean | true marca como não lido; false lê (e manda os recibos). |
Exemplo
curl -s -X PATCH "$LITEZAP_URL/v1/instances/$ID/chats/$JID" \ -H "Authorization: Bearer $LITEZAP_TOKEN" \ -d '{"muted":true,"mute_seconds":28800}'const res = await fetch("http://localhost:8787/v1/instances/inst_7f3a9c2e5b1d4086/chats/[email protected]", { method: "PATCH", headers: { Authorization: `Bearer ${process.env.LITEZAP_TOKEN}`, "Content-Type": "application/json" }, body: JSON.stringify({ "muted": true, "mute_seconds": 28800 }),});console.log(res.status, res.status === 204 ? "" : await res.json());import osimport requests
r = requests.patch( headers={"Authorization": f"Bearer {os.environ['LITEZAP_TOKEN']}"}, json={ "muted": True, "mute_seconds": 28800, }, 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("PATCH", "http://localhost:8787/v1/instances/inst_7f3a9c2e5b1d4086/chats/[email protected]", strings.NewReader(`{"muted":true,"mute_seconds":28800}`)) req.Header.Set("Authorization", "Bearer "+os.Getenv("LITEZAP_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']); 'headers' => ['Authorization' => 'Bearer ' . getenv('LITEZAP_TOKEN')], 'json' => [ 'muted' => true, 'mute_seconds' => 28800, ], 'http_errors' => false,]);echo $res->getStatusCode(), ' ', $res->getBody(), PHP_EOL;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 O chat depois da mudança.
Campos de Chat
jid | string | |
name | string | |
is_group | boolean | |
last_message_at | string | |
unread_count | integer | |
archived | boolean | |
pinned | boolean | |
muted | boolean | |
muted_until | string | Fim do silêncio; ausente com muted: true = até reativar. |
unread | boolean | Marcado como não lido à mão (unread_count conta as recebidas). |
deleted_at | string | Quando foi apagado (o chat volta à lista com uma mensagem nova). |
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). |
not_found | 404 | não | Confira o id do recurso (mensagem, chat, contato, mídia ou webhook). |
instance_not_found | 404 | não | Confira o id da instância. |
app_state_not_synced | 409 | não | |
worker_error | 502 | sim | Tente de novo com backoff; se persistir, veja o log do servidor. |
worker_timeout | 504 | sim | Tente de novo; a instância pode estar sobrecarregada ou reconectando. |
Todo erro usa o envelope {"error":{"code","message","retryable"}}. Tabela completa em Erros.
Eventos gerados
Equivalente na Z-API: Arquivar chat / Fixar chat / Silenciar chat / Ler chats. Veja Migrar da Z-API.
Outras operações de Chats: Listar chats · Histórico do chat · Marcar chat como lido · Consultar chat · Apagar chat

