Send video
curl --request POST \
--url https://api.z-api.io/instances/{instanceId}/token/{token}/send-video \
--header 'Client-Token: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"phone": "<string>",
"video": "<string>"
}
'import requests
url = "https://api.z-api.io/instances/{instanceId}/token/{token}/send-video"
payload = {
"phone": "<string>",
"video": "<string>"
}
headers = {
"Client-Token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Client-Token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({phone: '<string>', video: '<string>'})
};
fetch('https://api.z-api.io/instances/{instanceId}/token/{token}/send-video', 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}/send-video",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'phone' => '<string>',
'video' => '<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}/send-video"
payload := strings.NewReader("{\n \"phone\": \"<string>\",\n \"video\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.z-api.io/instances/{instanceId}/token/{token}/send-video")
.header("Client-Token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"phone\": \"<string>\",\n \"video\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.z-api.io/instances/{instanceId}/token/{token}/send-video")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Client-Token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"phone\": \"<string>\",\n \"video\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyMessages
Send video
Send a video to a contact or group on WhatsApp
POST
/
instances
/
{instanceId}
/
token
/
{token}
/
send-video
Send video
curl --request POST \
--url https://api.z-api.io/instances/{instanceId}/token/{token}/send-video \
--header 'Client-Token: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"phone": "<string>",
"video": "<string>"
}
'import requests
url = "https://api.z-api.io/instances/{instanceId}/token/{token}/send-video"
payload = {
"phone": "<string>",
"video": "<string>"
}
headers = {
"Client-Token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Client-Token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({phone: '<string>', video: '<string>'})
};
fetch('https://api.z-api.io/instances/{instanceId}/token/{token}/send-video', 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}/send-video",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'phone' => '<string>',
'video' => '<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}/send-video"
payload := strings.NewReader("{\n \"phone\": \"<string>\",\n \"video\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", 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.post("https://api.z-api.io/instances/{instanceId}/token/{token}/send-video")
.header("Client-Token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"phone\": \"<string>\",\n \"video\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.z-api.io/instances/{instanceId}/token/{token}/send-video")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Client-Token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"phone\": \"<string>\",\n \"video\": \"<string>\"\n}"
response = http.request(request)
puts response.read_bodyOverview
Method responsible for sending videos to your chats. You can work with videos in 2 ways:- By Link: if you have the video hosted somewhere on the internet, just send the link;
- By Base64: if you want to send the video in Base64 format.
For more predictable API behavior, we recommend using videos encoded with the H.264 codec, which is the format supported by WhatsApp. Videos using other codecs go through an internal conversion process to H.264, which may cause intermittent sending issues or increase the final file size, potentially exceeding WhatsApp’s allowed limit.The file size must not exceed 100MB.
Example on WhatsApp

Attributes
Header
string
required
Your instance ID. Available in the Z-API panel under Instances.
string
required
Your Z-API instance token.
Required
string
required
Recipient’s phone number (or group ID for group messages) in DDI DDD NUMBER format. E.g.: 551199999999
string
required
Video link or Base64
Optional
string
Message to send along with the video
string
Attribute used to reply to a chat message, just add the messageId of the message you want to reply to
number
Delay added to the message. You can choose between a range of 1 to 15 sec, meaning how many seconds it will wait before sending the next message. (E.g.: “delayMessage”: 5). The default delay if not provided is 1 to 3 sec
boolean
Whether it will be a view-once message or not
boolean
If enabled, the request will respond immediately with success and the file processing will be done in the background
string
Allows editing the message caption of a previously sent video. It is required to configure the webhook before using this feature.
Request Body
By link:{
"phone": "5511999999999",
"video": "https://example.com/video.mp4",
"caption": "",
"viewOnce": false
}
{
"phone": "5511999999999",
"video": "data:video/mp4;base64,AAYXJ0eKEF...",
"caption": "",
"viewOnce": false
}
Response
200
{
"zaapId": "3999984263738042930CD6ECDE9VDWSA",
"messageId": "D241XXXX732339502B68",
"id": "D241XXXX732339502B68"
}