Existência de Destinatário
curl --request PATCH \
--url https://api.zapsterapi.com/v1/wa/instances/{instance_id}/presence \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"recipient": "group:123456789987654321",
"max_duration": 123
}
'import requests
url = "https://api.zapsterapi.com/v1/wa/instances/{instance_id}/presence"
payload = {
"recipient": "group:123456789987654321",
"max_duration": 123
}
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({recipient: 'group:123456789987654321', max_duration: 123})
};
fetch('https://api.zapsterapi.com/v1/wa/instances/{instance_id}/presence', 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}/presence",
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([
'recipient' => 'group:123456789987654321',
'max_duration' => 123
]),
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}/presence"
payload := strings.NewReader("{\n \"recipient\": \"group:123456789987654321\",\n \"max_duration\": 123\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}/presence")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"recipient\": \"group:123456789987654321\",\n \"max_duration\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zapsterapi.com/v1/wa/instances/{instance_id}/presence")
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 \"recipient\": \"group:123456789987654321\",\n \"max_duration\": 123\n}"
response = http.request(request)
puts response.read_bodyUtilidades
Atualização de Presença
PATCH
/
wa
/
instances
/
{instance_id}
/
presence
Existência de Destinatário
curl --request PATCH \
--url https://api.zapsterapi.com/v1/wa/instances/{instance_id}/presence \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"recipient": "group:123456789987654321",
"max_duration": 123
}
'import requests
url = "https://api.zapsterapi.com/v1/wa/instances/{instance_id}/presence"
payload = {
"recipient": "group:123456789987654321",
"max_duration": 123
}
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({recipient: 'group:123456789987654321', max_duration: 123})
};
fetch('https://api.zapsterapi.com/v1/wa/instances/{instance_id}/presence', 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}/presence",
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([
'recipient' => 'group:123456789987654321',
'max_duration' => 123
]),
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}/presence"
payload := strings.NewReader("{\n \"recipient\": \"group:123456789987654321\",\n \"max_duration\": 123\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}/presence")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"recipient\": \"group:123456789987654321\",\n \"max_duration\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zapsterapi.com/v1/wa/instances/{instance_id}/presence")
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 \"recipient\": \"group:123456789987654321\",\n \"max_duration\": 123\n}"
response = http.request(request)
puts response.read_bodyIntrodução
Este endpoint permite que você atualize o status de presença de um destinatário em uma instância específica do WhatsApp. Você pode definir se o destinatário verá uma indicação de que você está “digitando…” ou “gravando…”. Esta funcionalidade é útil para melhorar a experiência do usuário durante interações em tempo real, especialmente em aplicações que dependem de feedback instantâneo, como chats ao vivo ou integrações com IA.O status
online marca a conta inteira como “Online”, não apenas a conversa com o recipient. Enquanto a conta estiver “Online” pela API, o WhatsApp entende que ela está em uso em um dispositivo vinculado e pode parar de enviar notificações para o celular onde o número está instalado. Use online apenas quando esse efeito for desejado; para simular digitação, prefira typing ou recording. Veja o porquê em boas práticas.Casos de Uso
- Integração com OpenAI: Enquanto a IA está gerando uma resposta, você pode definir a presença como “digitando…” ou “gravando…” para simular a experiência de uma interação humana e manter o usuário informado sobre o processamento em andamento.
Estratégias de Uso
-
Definindo a Presença de Curta Duração: Utilize a estratégia
maximum_durationpara garantir que o status de “digitando…” ou “gravando…” seja exibido por um período específico de tempo. Esta estratégia é ideal para interações em que o tempo de resposta é previsível. -
Até a Próxima Mensagem: Use a estratégia
until_next_messagepara manter o status ativo até que a próxima mensagem seja enviada, proporcionando uma transição suave entre o momento em que o usuário percebe a presença e a entrega da mensagem final. Isso é útil em cenários onde o tempo de processamento pode variar, como durante a geração de respostas por IA.
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
application/json
Destinatário que verá a atualização de presença (digitando... ou gravando...). Pode ser um grupo ou um número de telefone (DDI + DDD + Número).
Exemplos:
"group:123456789987654321"
"559912345678"
O status defini que tipo de presença o recipient irá ver.
- typing - O destinatário irá ver
Digitando... - recording - O destinatário irá ver
Gravando áudio... - online - A conta inteira aparece como
Onlinepara todos os contatos, não apenas para orecipient. Atenção: enquanto a conta estáOnline, o WhatsApp pode deixar de enviar notificações para o celular onde o número está instalado.
Opções disponíveis:
typing, recording, online As estratégias de duração definem como e por quanto tempo o status permanecerá ativo para o recipient.
- maximum_duration - Um tempo fixo de duração em segundos (padrão é 10 segundos).
- until_next_message - Ficará ativo até o envio da próxima mensagem, mas limitando-se a 5 minutos (600 segundos).
Opções disponíveis:
maximum_duration, until_next_message Válido quando duration_strategy=maximum_duration. Define o tempo máximo em segundos que o status permanecerá ativo para o recipient. Valor padrão é 10 segundos.
Resposta
204
No Content