Get a send
curl --request GET \
--url https://api.zapfy.io/v1/messages/{messageId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.zapfy.io/v1/messages/{messageId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.zapfy.io/v1/messages/{messageId}', 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.zapfy.io/v1/messages/{messageId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.zapfy.io/v1/messages/{messageId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.zapfy.io/v1/messages/{messageId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zapfy.io/v1/messages/{messageId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"messageId": "3EB0C767D26A1D8E4F2B",
"to": "5511999998888",
"type": "TEXT",
"status": "DELIVERED",
"createdAt": "2026-10-04T11:59:59.000Z",
"failureReason": "NOT_ON_WHATSAPP",
"failureMessage": "Could not download the media from the URL after 4 attempts: failed to download file: HTTP status 404",
"sentAt": "2026-10-04T12:00:00.000Z",
"deliveredAt": "2026-10-04T12:00:03.000Z",
"readAt": "2023-11-07T05:31:56Z",
"failedAt": "2023-11-07T05:31:56Z"
}
}{
"error": "Instance not found"
}{
"error": "Instance not found"
}{
"error": "Instance not found"
}Messages
Get a send
Returns a message sent through the API, by the messageId the send answered: recipient, type, status and when it was sent, delivered and read. An alternative to the MESSAGE.STATUS_UPDATED webhook for those who prefer to poll. Only finds the instance’s own messages, and only sends made through the API (messages typed on the phone and received messages are not here).
GET
/
messages
/
{messageId}
Get a send
curl --request GET \
--url https://api.zapfy.io/v1/messages/{messageId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.zapfy.io/v1/messages/{messageId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.zapfy.io/v1/messages/{messageId}', 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.zapfy.io/v1/messages/{messageId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.zapfy.io/v1/messages/{messageId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.zapfy.io/v1/messages/{messageId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.zapfy.io/v1/messages/{messageId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"messageId": "3EB0C767D26A1D8E4F2B",
"to": "5511999998888",
"type": "TEXT",
"status": "DELIVERED",
"createdAt": "2026-10-04T11:59:59.000Z",
"failureReason": "NOT_ON_WHATSAPP",
"failureMessage": "Could not download the media from the URL after 4 attempts: failed to download file: HTTP status 404",
"sentAt": "2026-10-04T12:00:00.000Z",
"deliveredAt": "2026-10-04T12:00:03.000Z",
"readAt": "2023-11-07T05:31:56Z",
"failedAt": "2023-11-07T05:31:56Z"
}
}{
"error": "Instance not found"
}{
"error": "Instance not found"
}{
"error": "Instance not found"
}