Download media from a newsletter message
curl --request GET \
--url http://localhost:3000/newsletter/messages/{server_id}/download \
--header 'Authorization: Basic <encoded-value>'import requests
url = "http://localhost:3000/newsletter/messages/{server_id}/download"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('http://localhost:3000/newsletter/messages/{server_id}/download', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "3000",
CURLOPT_URL => "http://localhost:3000/newsletter/messages/{server_id}/download",
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: Basic <encoded-value>"
],
]);
$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 := "http://localhost:3000/newsletter/messages/{server_id}/download"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("http://localhost:3000/newsletter/messages/{server_id}/download")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:3000/newsletter/messages/{server_id}/download")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Basic <encoded-value>'
response = http.request(request)
puts response.read_body{
"status": 200,
"code": "SUCCESS",
"message": "Media downloaded successfully",
"results": {
"server_id": 8872,
"message_id": "ACBD7F85529AAD63FAF376F622351D14",
"status": "Media downloaded successfully to statics/media/120363024512399999/2026-08-28/image.jpg",
"media_type": "image",
"mime_type": "image/jpeg",
"filename": "image.jpg",
"file_path": "statics/media/120363024512399999/2026-08-28/image.jpg",
"file_url": "http://localhost:3000/statics/media/120363024512399999/2026-08-28/image.jpg",
"file_size": 524288
}
}{
"code": 400,
"message": "field cannot be blank",
"results": null
}{
"code": "INTERNAL_SERVER_ERROR",
"message": "you are not loggin",
"results": null
}newsletter
Download media from a newsletter message
Fetches one newsletter message directly from WhatsApp by server ID, downloads its media to the server’s statics directory, and returns the saved file metadata and public URL. Supported media types are images, videos, video notes, audio, documents, and stickers.
GET
/
newsletter
/
messages
/
{server_id}
/
download
Download media from a newsletter message
curl --request GET \
--url http://localhost:3000/newsletter/messages/{server_id}/download \
--header 'Authorization: Basic <encoded-value>'import requests
url = "http://localhost:3000/newsletter/messages/{server_id}/download"
headers = {"Authorization": "Basic <encoded-value>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Basic <encoded-value>'}};
fetch('http://localhost:3000/newsletter/messages/{server_id}/download', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_PORT => "3000",
CURLOPT_URL => "http://localhost:3000/newsletter/messages/{server_id}/download",
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: Basic <encoded-value>"
],
]);
$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 := "http://localhost:3000/newsletter/messages/{server_id}/download"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("http://localhost:3000/newsletter/messages/{server_id}/download")
.header("Authorization", "Basic <encoded-value>")
.asString();require 'uri'
require 'net/http'
url = URI("http://localhost:3000/newsletter/messages/{server_id}/download")
http = Net::HTTP.new(url.host, url.port)
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Basic <encoded-value>'
response = http.request(request)
puts response.read_body{
"status": 200,
"code": "SUCCESS",
"message": "Media downloaded successfully",
"results": {
"server_id": 8872,
"message_id": "ACBD7F85529AAD63FAF376F622351D14",
"status": "Media downloaded successfully to statics/media/120363024512399999/2026-08-28/image.jpg",
"media_type": "image",
"mime_type": "image/jpeg",
"filename": "image.jpg",
"file_path": "statics/media/120363024512399999/2026-08-28/image.jpg",
"file_url": "http://localhost:3000/statics/media/120363024512399999/2026-08-28/image.jpg",
"file_size": 524288
}
}{
"code": 400,
"message": "field cannot be blank",
"results": null
}{
"code": "INTERNAL_SERVER_ERROR",
"message": "you are not loggin",
"results": null
}Authorizations
Basic authentication header of the form Basic <encoded-value>, where <encoded-value> is the base64-encoded string username:password.
Headers
Device identifier for multi-device support. Required when multiple devices are registered.
If only one device is registered, it will be used as the default.
Can also be provided as device_id query parameter.
Example:
"my-device-id"
Path Parameters
Newsletter message server ID returned by GET /newsletter/messages
Required range:
x >= 1Query Parameters
Newsletter JID containing the message
