curl --request PATCH \
--url https://api.zapsterapi.com/v1/wa/instances/{instance_id}/settings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"settings": {
"read_confirmation": {
"chats": true
}
}
}
'import requests
url = "https://api.zapsterapi.com/v1/wa/instances/{instance_id}/settings"
payload = { "settings": { "read_confirmation": { "chats": True } } }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({settings: {read_confirmation: {chats: true}}})
};
fetch('https://api.zapsterapi.com/v1/wa/instances/{instance_id}/settings', 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://api.zapsterapi.com/v1/wa/instances/{instance_id}/settings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'settings' => [
'read_confirmation' => [
'chats' => true
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.zapsterapi.com/v1/wa/instances/{instance_id}/settings"
payload := strings.NewReader("{\n \"settings\": {\n \"read_confirmation\": {\n \"chats\": true\n }\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.zapsterapi.com/v1/wa/instances/{instance_id}/settings")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"settings\": {\n \"read_confirmation\": {\n \"chats\": true\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zapsterapi.com/v1/wa/instances/{instance_id}/settings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"settings\": {\n \"read_confirmation\": {\n \"chats\": true\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"created_at": "2024-10-03T21:56:22.620Z",
"id": "xy9rexnkwobmgg3tehgvs",
"metadata": {
"customer_id": "123456",
"customer_name": "Joãozinho",
"phone_number": "+5587989075555"
},
"name": "MyNewInstance2",
"owner": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"display_name": null
},
"settings": {
"call_rejection": "all",
"delay_per_word": true,
"delete_chat_after_sent": true,
"message_delay": {
"enabled": true,
"max": 10,
"min": 1
},
"presence_behavior": "only_composing",
"read_confirmation": "never"
},
"status": "disconnected",
"webhooks": [
{
"enabled": true,
"events": [
"message.received"
],
"id": "2nenz69l0xbf0m3uu9tfo",
"name": "Webhook Name",
"test_mode": false,
"url": "https://webhook.mydomain.com",
"test_url": null
}
],
"connection_type": "unofficial",
"qrcode": null,
"lookup_key": "ins_8j7wlxmpjlixx9mux5"
}{
"errors": [
{
"code": "invalid_enum_value",
"message": "Invalid enum value. Expected 'all' | 'none' | 'video_only' | 'audio_only'",
"path": "settings.call_rejection"
}
]
}{
"errors": [
{
"code": "instance_not_found",
"message": "Instance not found."
}
]
}{
"errors": [
{
"code": "instance_update_required",
"message": "This instance is running an older version that does not support this feature. Power the instance off and on to update it, or contact support for help."
}
]
}Atualizando Configurações
Atualiza as configurações de comportamento da instância. Envie apenas o que quer mudar: tudo o que ficar de fora continua exatamente como está.
curl --request PATCH \
--url https://api.zapsterapi.com/v1/wa/instances/{instance_id}/settings \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"settings": {
"read_confirmation": {
"chats": true
}
}
}
'import requests
url = "https://api.zapsterapi.com/v1/wa/instances/{instance_id}/settings"
payload = { "settings": { "read_confirmation": { "chats": True } } }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({settings: {read_confirmation: {chats: true}}})
};
fetch('https://api.zapsterapi.com/v1/wa/instances/{instance_id}/settings', 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://api.zapsterapi.com/v1/wa/instances/{instance_id}/settings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'settings' => [
'read_confirmation' => [
'chats' => true
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.zapsterapi.com/v1/wa/instances/{instance_id}/settings"
payload := strings.NewReader("{\n \"settings\": {\n \"read_confirmation\": {\n \"chats\": true\n }\n }\n}")
req, _ := http.NewRequest("PATCH", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.patch("https://api.zapsterapi.com/v1/wa/instances/{instance_id}/settings")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"settings\": {\n \"read_confirmation\": {\n \"chats\": true\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zapsterapi.com/v1/wa/instances/{instance_id}/settings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"settings\": {\n \"read_confirmation\": {\n \"chats\": true\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"created_at": "2024-10-03T21:56:22.620Z",
"id": "xy9rexnkwobmgg3tehgvs",
"metadata": {
"customer_id": "123456",
"customer_name": "Joãozinho",
"phone_number": "+5587989075555"
},
"name": "MyNewInstance2",
"owner": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"display_name": null
},
"settings": {
"call_rejection": "all",
"delay_per_word": true,
"delete_chat_after_sent": true,
"message_delay": {
"enabled": true,
"max": 10,
"min": 1
},
"presence_behavior": "only_composing",
"read_confirmation": "never"
},
"status": "disconnected",
"webhooks": [
{
"enabled": true,
"events": [
"message.received"
],
"id": "2nenz69l0xbf0m3uu9tfo",
"name": "Webhook Name",
"test_mode": false,
"url": "https://webhook.mydomain.com",
"test_url": null
}
],
"connection_type": "unofficial",
"qrcode": null,
"lookup_key": "ins_8j7wlxmpjlixx9mux5"
}{
"errors": [
{
"code": "invalid_enum_value",
"message": "Invalid enum value. Expected 'all' | 'none' | 'video_only' | 'audio_only'",
"path": "settings.call_rejection"
}
]
}{
"errors": [
{
"code": "instance_not_found",
"message": "Instance not found."
}
]
}{
"errors": [
{
"code": "instance_update_required",
"message": "This instance is running an older version that does not support this feature. Power the instance off and on to update it, or contact support for help."
}
]
}Atualize só o que precisar
Você não precisa enviar todas as configurações a cada chamada. Envie apenas o que quer mudar e tudo o que ficar de fora continua exatamente como está. Isso vale até para configurações com subcampos, comomessage_delay e o formato segmentado de read_confirmation: cada subcampo que você não enviar também fica como estava. Por exemplo, enviando apenas:
{
"settings": {
"read_confirmation": {
"chats": true
}
}
}
groups e status seguem do jeito que estavam.
Configurações disponíveis
call_rejection: define se ligações recebidas devem ser rejeitadas automaticamente. Aceitaall(rejeita todas),none(não rejeita nenhuma),video_only(rejeita apenas chamadas de vídeo) ouaudio_only(rejeita apenas chamadas de áudio).message_delay: adiciona um atraso proposital antes do envio de cada mensagem, útil para simular um comportamento mais humano. É um objeto comenabled(liga/desliga o delay),minemax(limites em segundos, o tempo real é sorteado dentro desse intervalo).delay_per_word: quando ligado, o delay antes do envio passa a ser calculado com base na quantidade de palavras da mensagem, até um teto de 10 segundos. Quandomessage_delayestá configurado, ele tem prioridade edelay_per_wordé ignorado.presence_behavior: controla quando a instância aparece como “online” ou “digitando” para os contatos.only_composingexibe apenas “Digitando…” durante o envio, sem marcar a conta como online (recomendado);always_onlinemantém a conta sempre online — atenção: isso pode suprimir as notificações do WhatsApp no celular onde o número está instalado, já que o WhatsApp entende que a conta está em uso em outro dispositivo;always_offlinenunca aparece online nem exibe “Digitando…”.delete_chat_after_sent: quando ligado, limpa a conversa no aparelho logo depois do envio da mensagem, para evitar acúmulo de histórico no dispositivo conectado.read_confirmation: controla a confirmação de leitura automática das mensagens recebidas. Aceita os valoresnever(nunca confirma) oualways(sempre confirma), ou um objeto segmentado por tipo de conversa com os camposchats,groupsestatus, cada um booleano e independente. Quando o segmentostatusestá ligado, os status publicados pelos seus contatos são marcados como vistos assim que recebidos. Mensagens enviadas pela própria instância, listas de transmissão e publicações de canais nunca recebem confirmação automática, independentemente dessa configuração.
Autorizações
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Parâmetros de caminho
ID da instância.
Corpo
Objeto opcional de configurações da sua instância.
Show child attributes
Show child attributes
Resposta
Success
Estrutura de uma instância registrada na API.
Data e hora de criação da instância no formato ISO 8601.
"2024-10-03T21:56:22.620Z"
Identificador único da instância.
"xy9rexnkwobmgg3tehgvs"
Metadados adicionais armazenados como chave e valor.
Show child attributes
Show child attributes
{
"customer_id": "123456",
"customer_name": "Joãozinho",
"phone_number": "+5587989075555"
}
Nome da instância.
"MyNewInstance2"
Informações sobre o proprietário da instância.
Show child attributes
Show child attributes
Objeto opcional de configurações da sua instância.
Show child attributes
Show child attributes
Status atual da instância
connected, disconnected, offline "disconnected"
Lista de webhooks configurados para esta instância.
Show child attributes
Show child attributes
Tipo de conexão da instância:
unofficial: conexão via QR code (padrão)waba: conexão via API oficial do WhatsApp (Cloud API da Meta)
unofficial, waba "unofficial"
QR Code da instância, caso disponível.
null
Identificador de pesquisa criado anteriormente.
"ins_8j7wlxmpjlixx9mux5"