curl --request PUT \
--url https://api.wabox.me/instances/{instance_id}/token/{token}/webhooks \
--header 'Content-Type: application/json' \
--data '
{
"received_url": "https://example.com/wabox/received",
"message_status_url": "https://example.com/wabox/message-status",
"ignore_groups": true
}
'const options = {
method: 'PUT',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
received_url: 'https://example.com/wabox/received',
message_status_url: 'https://example.com/wabox/message-status',
ignore_groups: true
})
};
fetch('https://api.wabox.me/instances/{instance_id}/token/{token}/webhooks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.wabox.me/instances/{instance_id}/token/{token}/webhooks"
payload = {
"received_url": "https://example.com/wabox/received",
"message_status_url": "https://example.com/wabox/message-status",
"ignore_groups": True
}
headers = {"Content-Type": "application/json"}
response = requests.put(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.wabox.me/instances/{instance_id}/token/{token}/webhooks",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'received_url' => 'https://example.com/wabox/received',
'message_status_url' => 'https://example.com/wabox/message-status',
'ignore_groups' => true
]),
CURLOPT_HTTPHEADER => [
"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.wabox.me/instances/{instance_id}/token/{token}/webhooks"
payload := strings.NewReader("{\n \"received_url\": \"https://example.com/wabox/received\",\n \"message_status_url\": \"https://example.com/wabox/message-status\",\n \"ignore_groups\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
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))
}{
"use_workspace_webhooks": false,
"received_url": "https://example.com/wabox/received",
"delivery_url": "https://example.com/wabox/delivery",
"message_status_url": "https://example.com/wabox/message-status",
"instance_status_url": "https://example.com/wabox/instance-status",
"chat_presence_url": null,
"single_url_enabled": false,
"single_url": null,
"notify_sent_by_me": false,
"notify_status": false,
"ignore_groups": true,
"ignore_private": false,
"ignore_text": false,
"ignore_image": false,
"ignore_video": false,
"ignore_audio": false,
"ignore_document": false,
"ignore_received_callback": false,
"ignore_delivery_callback": false,
"ignore_message_status_callback": false,
"ignore_instance_status_callback": false,
"ignore_chat_presence_callback": false,
"secret": "whsec_9f8e7d6c5b4a39281706f5e4d3c2b1a0"
}{
"error": {
"code": "instance_not_found",
"message": "Instance not found or invalid token"
}
}Atualizar webhooks (parcial)
Atualiza só os campos enviados; os demais ficam como estão. Envie null em uma *_url para desativar aquele webhook. URLs precisam ser http(s). single_url_enabled: true + single_url manda todos os eventos para uma URL só (roteie por type ou pelo header X-Wabox-Event). Definir uma URL não nula desliga use_workspace_webhooks (a instância passa a usar a própria configuração); envie use_workspace_webhooks: true para voltar a herdar do workspace. Retorna a configuração completa após a alteração.
curl --request PUT \
--url https://api.wabox.me/instances/{instance_id}/token/{token}/webhooks \
--header 'Content-Type: application/json' \
--data '
{
"received_url": "https://example.com/wabox/received",
"message_status_url": "https://example.com/wabox/message-status",
"ignore_groups": true
}
'const options = {
method: 'PUT',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
received_url: 'https://example.com/wabox/received',
message_status_url: 'https://example.com/wabox/message-status',
ignore_groups: true
})
};
fetch('https://api.wabox.me/instances/{instance_id}/token/{token}/webhooks', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.wabox.me/instances/{instance_id}/token/{token}/webhooks"
payload = {
"received_url": "https://example.com/wabox/received",
"message_status_url": "https://example.com/wabox/message-status",
"ignore_groups": True
}
headers = {"Content-Type": "application/json"}
response = requests.put(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.wabox.me/instances/{instance_id}/token/{token}/webhooks",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PUT",
CURLOPT_POSTFIELDS => json_encode([
'received_url' => 'https://example.com/wabox/received',
'message_status_url' => 'https://example.com/wabox/message-status',
'ignore_groups' => true
]),
CURLOPT_HTTPHEADER => [
"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.wabox.me/instances/{instance_id}/token/{token}/webhooks"
payload := strings.NewReader("{\n \"received_url\": \"https://example.com/wabox/received\",\n \"message_status_url\": \"https://example.com/wabox/message-status\",\n \"ignore_groups\": true\n}")
req, _ := http.NewRequest("PUT", url, payload)
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))
}{
"use_workspace_webhooks": false,
"received_url": "https://example.com/wabox/received",
"delivery_url": "https://example.com/wabox/delivery",
"message_status_url": "https://example.com/wabox/message-status",
"instance_status_url": "https://example.com/wabox/instance-status",
"chat_presence_url": null,
"single_url_enabled": false,
"single_url": null,
"notify_sent_by_me": false,
"notify_status": false,
"ignore_groups": true,
"ignore_private": false,
"ignore_text": false,
"ignore_image": false,
"ignore_video": false,
"ignore_audio": false,
"ignore_document": false,
"ignore_received_callback": false,
"ignore_delivery_callback": false,
"ignore_message_status_callback": false,
"ignore_instance_status_callback": false,
"ignore_chat_presence_callback": false,
"secret": "whsec_9f8e7d6c5b4a39281706f5e4d3c2b1a0"
}{
"error": {
"code": "instance_not_found",
"message": "Instance not found or invalid token"
}
}Path Parameters
Id da instância (dashboard › instância › Credenciais).
Token da instância. Trate como senha.
Body
Mudanças de status da instância (qr, connecting, connected, disconnected, logged_out…).
Com true, todos os eventos vão para single_url e as *_url por tipo são ignoradas.
URL única para todos os eventos (quando single_url_enabled).
Com true, também entrega received dos status (stories) publicados pelos contatos, com phone: "status@broadcast". Padrão false.
Com true, a instância usa as URLs e filtros configurados no workspace (painel › Webhooks) e ignora os campos próprios. As entregas passam a ser assinadas com o secret do workspace. Definir uma URL não nula na instância desliga isso automaticamente, salvo se use_workspace_webhooks vier junto.
Response
Configuração de webhooks após a alteração.
Com true, usa as URLs e filtros do workspace (painel › Webhooks) e ignora os campos abaixo. As entregas usam o secret do workspace.
URL http(s) ou null (desligado).
URL http(s) ou null (desligado).
URL http(s) ou null (desligado).
URL http(s) ou null (desligado).
URL http(s) ou null (desligado).
Com true, todos os eventos vão para single_url e as *_url por tipo são ignoradas.
URL única para todos os eventos (quando single_url_enabled).
Entrega received dos status (stories) dos contatos (status@broadcast).
Chave HMAC do header X-Wabox-Signature quando a instância usa a própria configuração. null significa entregas não assinadas. Herdando do workspace (use_workspace_webhooks), as entregas usam o secret do workspace.