On send
curl --request PUT \
--url https://api.z-api.io/instances/{instanceId}/token/{token}/update-webhook-delivery \
--header 'Client-Token: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"value": "<string>"
}
'import requests
url = "https://api.z-api.io/instances/{instanceId}/token/{token}/update-webhook-delivery"
payload = { "value": "<string>" }
headers = {
"Client-Token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'Client-Token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({value: '<string>'})
};
fetch('https://api.z-api.io/instances/{instanceId}/token/{token}/update-webhook-delivery', 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.z-api.io/instances/{instanceId}/token/{token}/update-webhook-delivery",
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([
'value' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Client-Token: <api-key>",
"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.z-api.io/instances/{instanceId}/token/{token}/update-webhook-delivery"
payload := strings.NewReader("{\n \"value\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Client-Token", "<api-key>")
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.put("https://api.z-api.io/instances/{instanceId}/token/{token}/update-webhook-delivery")
.header("Client-Token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"value\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.z-api.io/instances/{instanceId}/token/{token}/update-webhook-delivery")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Client-Token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"value\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"phone": "<string>",
"zaapId": "<string>",
"messageId": "<string>",
"instanceId": "<string>",
"momment": 123,
"type": "<string>",
"error": "<string>"
}Webhooks
On send
Webhook for sent message callbacks
PUT
/
instances
/
{instanceId}
/
token
/
{token}
/
update-webhook-delivery
On send
curl --request PUT \
--url https://api.z-api.io/instances/{instanceId}/token/{token}/update-webhook-delivery \
--header 'Client-Token: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"value": "<string>"
}
'import requests
url = "https://api.z-api.io/instances/{instanceId}/token/{token}/update-webhook-delivery"
payload = { "value": "<string>" }
headers = {
"Client-Token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {'Client-Token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({value: '<string>'})
};
fetch('https://api.z-api.io/instances/{instanceId}/token/{token}/update-webhook-delivery', 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.z-api.io/instances/{instanceId}/token/{token}/update-webhook-delivery",
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([
'value' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Client-Token: <api-key>",
"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.z-api.io/instances/{instanceId}/token/{token}/update-webhook-delivery"
payload := strings.NewReader("{\n \"value\": \"<string>\"\n}")
req, _ := http.NewRequest("PUT", url, payload)
req.Header.Add("Client-Token", "<api-key>")
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.put("https://api.z-api.io/instances/{instanceId}/token/{token}/update-webhook-delivery")
.header("Client-Token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"value\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.z-api.io/instances/{instanceId}/token/{token}/update-webhook-delivery")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Put.new(url)
request["Client-Token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"value\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"phone": "<string>",
"zaapId": "<string>",
"messageId": "<string>",
"instanceId": "<string>",
"momment": 123,
"type": "<string>",
"error": "<string>"
}Overview
This is the webhook for sent message callbacks.Z-API does not accept webhooks that are not HTTPS.
Update webhook
Header
string
required
Your instance ID. Available in the Z-API panel under Instances.
string
required
Your Z-API instance token.
Body
string
required
Delivery webhook URL
Request Body
{
"value": "https://your-system-address.com/instance/YOUR_INSTANCE/delivery"
}
Webhook Response
Response Attributes
string
Destination phone number of the message
string
Message identifier within the conversation
string
Message identifier on WhatsApp
string
Instance identifier
integer
Moment when the event was triggered (timestamp in milliseconds)
string
Type of the instance event, in this case it will be
DeliveryCallbackstring
Present only in error cases. Contains the description of the error that occurred when sending the message. Check the full list of possible errors in On Send callback examples
{
"phone": "554499999999",
"zaapId": "A20DA9C0183A2D35A260F53F5D2B9244",
"messageId": "A20DA9C0183A2D35A260F53F5D2B9244",
"instanceId": "instance.id",
"momment": 1777494009341,
"type": "DeliveryCallback"
}
Response
200
{
"value": true
}