Wasend

Send Video Message

Send a video message to a WhatsApp contact

Send Video Message

Send a video message to a WhatsApp contact with an optional caption.

Endpoint

POST /sendVideo

Headers

NameTypeRequiredDescription
AuthorizationstringYesBearer token for authentication
Content-TypestringYesapplication/json

Request Body

FieldTypeRequiredDescription
sessionstringYesThe session ID
tostringYesRecipient's phone number in international format (e.g., "+1234567890")
urlstringNo*URL of the video to send
datastringNo*Base64 encoded video data
captionstringNoCaption for the video

* Either url or data must be provided

Response

{
  "id": "string",
  "to": "string",
  "content": "string",
  "type": "video",
  "timestamp": "string",
  "status": "string",
  "fromMe": boolean,
  "sender": "string",
  "recipient": "string"
}

Response Fields

FieldTypeDescription
idstringUnique identifier for the message
tostringThe recipient's phone number or group JID
contentstringContent of the message (e.g., video URL/ref)
typestringType of the message (always "video")
timestampstringWhen the message was sent
statusstringCurrent status of the message
fromMebooleanWhether the message was sent by you
senderstringSender's phone number
recipientstringThe message recipient (details may vary)

Examples

# Send a video with URL
curl -X POST "https://api.wasend.dev/sendVideo" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "session": "sessionId",
    "to": "+1234567890",
    "url": "https://example.com/video.mp4",
    "caption": "Check out this video!"
  }'

# Send a video with base64 data
curl -X POST "https://api.wasend.dev/sendVideo" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "session": "sessionId",
    "to": "+1234567890",
    "data": "base64_encoded_video_data",
    "caption": "Video from base64 data"
  }'
import { WasendClient } from '@wasend/core';

const client = new WasendClient({
  apiKey: 'YOUR_API_KEY',
  baseUrl: 'https://api.wasend.dev'
});

// Send a video with URL
const videoMessage = await client.sendVideo({
  session: "sessionId",
  to: "+1234567890",
  url: "https://example.com/video.mp4",
  caption: "Check out this video!"
});

// Send a video with base64 data
const videoData = "base64_encoded_video_data";
const videoMessage2 = await client.sendVideo({
  session: "sessionId",
  to: "+1234567890",
  data: videoData,
  caption: "Video from base64 data"
});
const { WasendClient } = require('@wasend/core');

const client = new WasendClient({
  apiKey: 'YOUR_API_KEY',
  baseUrl: 'https://api.wasend.dev'
});

// Send a video with URL
const videoMessage = await client.sendVideo({
  session: "sessionId",
  to: "+1234567890",
  url: "https://example.com/video.mp4",
  caption: "Check out this video!"
});
from wasend import WasendClient

client = WasendClient(
    api_key='YOUR_API_KEY',
    base_url='https://api.wasend.dev'
)

# Send a video with URL
video_message = client.send_video(
    session="sessionId",
    to="+1234567890",
    url="https://example.com/video.mp4",
    caption="Check out this video!"
)
package main

import (
	"fmt"
	"log"
	"github.com/wasenddev/wasend-sdk-go/wasendcore"
)

func StringPtr(s string) *string { return &s }

func main() {
	client := wasendcore.NewWasendClient(&wasendcore.WasendConfig{
		ApiKey:  StringPtr("YOUR_API_KEY"),
		BaseUrl: StringPtr("https://api.wasend.dev"),
	})

	// Send a video with URL
	videoMessage, err := client.SendVideo(&wasendcore.MessageVideoRequest{
		Session: StringPtr("sessionId"),
		To:      StringPtr("+1234567890"),
		URL:     StringPtr("https://example.com/video.mp4"),
		Caption: StringPtr("Check out this video!"),
	})
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("Video message sent: %+v\n", videoMessage)

	// Send a video with base64 data
	videoData := "base64_encoded_video_data"
	videoMessage2, err := client.SendVideo(&wasendcore.MessageVideoRequest{
		Session: StringPtr("sessionId"),
		To:      StringPtr("+1234567890"),
		Data:    StringPtr(videoData),
		Caption: StringPtr("Video from base64 data"),
	})
	if err != nil {
		log.Fatal(err)
	}
	fmt.Printf("Video message from base64 sent: %+v\n", videoMessage2)
}
using Wasend.Core;

var config = new WasendConfig
{
    ApiKey = "YOUR_API_KEY"
};
var client = new WasendClient(config);

// Send a video with URL
var videoMessage = client.SendVideo(new MessageVideoRequest
{
    Session = "sessionId",
    To = "+1234567890",
    Url = "https://example.com/video.mp4",
    Caption = "Check out this video!"
});

// Send a video with base64 data
var videoData = "base64_encoded_video_data";
var videoMessage2 = client.SendVideo(new MessageVideoRequest
{
    Session = "sessionId",
    To = "+1234567890",
    Data = videoData,
    Caption = "Video from base64 data"
});
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
import org.json.JSONObject;

public class Main {
    public static void main(String[] args) throws Exception {
        HttpClient client = HttpClient.newHttpClient();
        
        // Send a video with URL
        JSONObject requestBody = new JSONObject();
        requestBody.put("session", "sessionId");
        requestBody.put("to", "+1234567890");
        requestBody.put("url", "https://example.com/video.mp4");
        requestBody.put("caption", "Check out this video!");

        HttpRequest request = HttpRequest.newBuilder()
            .uri(URI.create("https://api.wasend.dev/sendVideo"))
            .header("Authorization", "Bearer YOUR_API_KEY")
            .header("Content-Type", "application/json")
            .POST(HttpRequest.BodyPublishers.ofString(requestBody.toString()))
            .build();

        HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
        System.out.println("Response: " + response.body());
    }
}
<?php

$url = 'https://api.wasend.dev/sendVideo';
$data = [
    'session' => 'sessionId',
    'to' => '+1234567890',
    'url' => 'https://example.com/video.mp4',
    'caption' => 'Check out this video!'
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    'Authorization: Bearer YOUR_API_KEY',
    'Content-Type: application/json'
]);

$response = curl_exec($ch);
curl_close($ch);

echo $response;
require 'net/http'
require 'json'
require 'uri'

uri = URI('https://api.wasend.dev/sendVideo')
request = Net::HTTP::Post.new(uri)
request['Authorization'] = 'Bearer YOUR_API_KEY'
request['Content-Type'] = 'application/json'

request.body = {
  session: 'sessionId',
  to: '+1234567890',
  url: 'https://example.com/video.mp4',
  caption: 'Check out this video!'
}.to_json

response = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) do |http|
  http.request(request)
end

puts response.body
import Foundation

let url = URL(string: "https://api.wasend.dev/sendVideo")!
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer YOUR_API_KEY", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")

let body: [String: Any] = [
    "session": "sessionId",
    "to": "+1234567890",
    "url": "https://example.com/video.mp4",
    "caption": "Check out this video!"
]

request.httpBody = try? JSONSerialization.data(withJSONObject: body)

let task = URLSession.shared.dataTask(with: request) { data, response, error in
    if let data = data {
        print(String(data: data, encoding: .utf8) ?? "")
    }
}
task.resume()
use reqwest;
use serde_json::json;

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let client = reqwest::Client::new();
    
    let response = client
        .post("https://api.wasend.dev/sendVideo")
        .header("Authorization", "Bearer YOUR_API_KEY")
        .header("Content-Type", "application/json")
        .json(&json!({
            "session": "sessionId",
            "to": "+1234567890",
            "url": "https://example.com/video.mp4",
            "caption": "Check out this video!"
        }))
        .send()
        .await?
        .text()
        .await?;

    println!("Response: {}", response);
    Ok(())
}

Error Codes

CodeDescription
400Bad Request - Invalid parameters
401Unauthorized - Invalid or missing API key
404Not Found - Session or recipient not found
429Too many requests - Rate limit exceeded
500Internal server error

Notes

  • Phone numbers must be in international format (e.g., "+1234567890")
  • The @c.us suffix is automatically added by the API
  • Maximum video duration: 30 seconds
  • Supported video formats: MP4, 3GPP
  • Maximum file size: 16MB
  • Maximum caption length: 1024 characters
  • For URL-based videos, the URL must be publicly accessible
  • For base64 data, the video must be properly encoded
  • Videos are displayed as playable media in WhatsApp