Send a file
curl --request POST \
--url https://{host}/api/sendFile \
--header 'Content-Type: application/json' \
--header 'apikey: <api-key>' \
--data '
{
"session": "session",
"chatId": "5511999999999@c.us",
"url": "https://example.com/file.pdf",
"filename": "document.pdf"
}
'import requests
url = "https://{host}/api/sendFile"
payload = {
"session": "session",
"chatId": "5511999999999@c.us",
"url": "https://example.com/file.pdf",
"filename": "document.pdf"
}
headers = {
"apikey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {apikey: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
session: 'session',
chatId: '5511999999999@c.us',
url: 'https://example.com/file.pdf',
filename: 'document.pdf'
})
};
fetch('https://{host}/api/sendFile', 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://{host}/api/sendFile",
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([
'session' => 'session',
'chatId' => '5511999999999@c.us',
'url' => 'https://example.com/file.pdf',
'filename' => 'document.pdf'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"apikey: <api-key>"
],
]);
$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://{host}/api/sendFile"
payload := strings.NewReader("{\n \"session\": \"session\",\n \"chatId\": \"5511999999999@c.us\",\n \"url\": \"https://example.com/file.pdf\",\n \"filename\": \"document.pdf\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("apikey", "<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://{host}/api/sendFile")
.header("apikey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"session\": \"session\",\n \"chatId\": \"5511999999999@c.us\",\n \"url\": \"https://example.com/file.pdf\",\n \"filename\": \"document.pdf\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{host}/api/sendFile")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["apikey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"session\": \"session\",\n \"chatId\": \"5511999999999@c.us\",\n \"url\": \"https://example.com/file.pdf\",\n \"filename\": \"document.pdf\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"messageId": "3EB0XXXXXX"
}
Messaging
Send File
Send file (document) to a contact or group
POST
/
api
/
sendFile
Send a file
curl --request POST \
--url https://{host}/api/sendFile \
--header 'Content-Type: application/json' \
--header 'apikey: <api-key>' \
--data '
{
"session": "session",
"chatId": "5511999999999@c.us",
"url": "https://example.com/file.pdf",
"filename": "document.pdf"
}
'import requests
url = "https://{host}/api/sendFile"
payload = {
"session": "session",
"chatId": "5511999999999@c.us",
"url": "https://example.com/file.pdf",
"filename": "document.pdf"
}
headers = {
"apikey": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {apikey: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
session: 'session',
chatId: '5511999999999@c.us',
url: 'https://example.com/file.pdf',
filename: 'document.pdf'
})
};
fetch('https://{host}/api/sendFile', 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://{host}/api/sendFile",
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([
'session' => 'session',
'chatId' => '5511999999999@c.us',
'url' => 'https://example.com/file.pdf',
'filename' => 'document.pdf'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"apikey: <api-key>"
],
]);
$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://{host}/api/sendFile"
payload := strings.NewReader("{\n \"session\": \"session\",\n \"chatId\": \"5511999999999@c.us\",\n \"url\": \"https://example.com/file.pdf\",\n \"filename\": \"document.pdf\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("apikey", "<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://{host}/api/sendFile")
.header("apikey", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"session\": \"session\",\n \"chatId\": \"5511999999999@c.us\",\n \"url\": \"https://example.com/file.pdf\",\n \"filename\": \"document.pdf\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://{host}/api/sendFile")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["apikey"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"session\": \"session\",\n \"chatId\": \"5511999999999@c.us\",\n \"url\": \"https://example.com/file.pdf\",\n \"filename\": \"document.pdf\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"messageId": "3EB0XXXXXX"
}
Description
This endpoint allows you to send files of any type (documents, PDFs, spreadsheets, etc.) to individual contacts or groups on WhatsApp. The file must be sent in base64 format with the mimetype and file name specified.Body
{
"sessionId": "my-session",
"jid": "5511999999999@s.whatsapp.net",
"file": {
"content": "iVBORw0KGgoAAAANSUhEUgAAAA...",
"mimetype": "image/png",
"filename": "document.pdf"
}
}
Body Parameters
| Property | Type | Required | Description |
|---|---|---|---|
sessionId | string | ✅ Yes | Authenticated session ID that will send the file |
jid | string | ✅ Yes | Recipient identifier (WhatsApp JID). Format: 5511999999999@s.whatsapp.net for contacts or 120363XXXXX@g.us for groups |
file | object | ✅ Yes | Object containing the file information |
file.content | string | ✅ Yes | File content encoded in base64 |
file.mimetype | string | ✅ Yes | File MIME type (example: application/pdf, application/vnd.ms-excel, application/zip) |
file.filename | string | ✅ Yes | File name with extension (example: document.pdf, spreadsheet.xlsx) |
{
"success": true,
"messageId": "3EB0XXXXXX"
}
Status Codes
200- File sent successfully400- Invalid parameters401- Unauthorized session404- Session not found
Usage Example
curl -X POST https://api.wappfy.com.br/api/sendFile \
-H "Content-Type: application/json" \
-d '{
"sessionId": "my-session",
"jid": "5511999999999@s.whatsapp.net",
"file": {
"content": "JVBERi0xLjQKJeLjz9MKMy...",
"mimetype": "application/pdf",
"filename": "relatorio.pdf"
}
}'
const response = await fetch('https://api.wappfy.com.br/api/sendFile', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
sessionId: 'my-session',
jid: '5511999999999@s.whatsapp.net',
file: {
content: 'JVBERi0xLjQKJeLjz9MKMy...', // base64
mimetype: 'application/pdf',
filename: 'relatorio.pdf'
}
})
});
const data = await response.json();
console.log(data);
import requests
import base64
# Read file and convert to base64
with open('relatorio.pdf', 'rb') as f:
file_content = base64.b64encode(f.read()).decode('utf-8')
response = requests.post(
'https://api.wappfy.com.br/api/sendFile',
json={
'sessionId': 'my-session',
'jid': '5511999999999@s.whatsapp.net',
'file': {
'content': file_content,
'mimetype': 'application/pdf',
'filename': 'relatorio.pdf'
}
}
)
data = response.json()
print(data)
Authorizations
Your Wappfy API key (get it at dash.wappfy.com.br)
Body
application/json
Chat ID (WhatsApp JID)
Example:
"5511999999999@c.us"
File (remote URL or base64 data)
- Option 1
- Option 2
Show child attributes
Show child attributes
Session name (instanceName)
Example:
"my-session"
Message ID you want to reply to
Example:
null
Caption/text that accompanies the file
Response
201 - application/json
The response is of type object.
⌘I
