WhatsApp Utility Messages allow businesses to send important documents such as PDFs or Word files directly to customers through WhatsApp using a simple HTTP API request, and with the Skynyx third-party API, this process becomes seamless and fully automated. Our API enables you to create and send utility messages by defining parameters such as the recipient’s mobile number, approved utility template, sender ID, document URL or file path, language code, and dynamic values for personalization, ensuring compliance with WhatsApp policies. This solution is ideal for transactional communications like invoices, reports, confirmations, and notifications, and can be easily integrated into web applications, mobile apps, backend services, or automated workflows for reliable document and message delivery.
Try it in Live Tool| Feature | Us | Other APIs |
|---|---|---|
| Credit-Based Pricing | Yes | Limited or confusing |
| Transparent Billing | Yes | Surprise charges |
| Dev-Focused Docs | Yes | Sparse examples |
| Free Credits | Yes | Paywall from day 1 |
| Fast Support | Yes | 3+ day wait time |
This example will sign your document with a Nutrient certificate.

Sign up and receive 100 credits for free, or log in to automatically add your API key to sample code. If you are not sure how credits are consumed read more in our pricing documentation , or check out this guide on calculating credit usage.

Add a PDF named document. pdf to your project folder. You can use our sample document.

Copy the code and run it from the same folder you added the files to. For more information, see our language-specific getting started guides.

Open result.pdf in your project folder to view the results.
# Instruction: Replace values with your own WhatsApp template details and numeric mobile number
POST /v1/whatsapp HTTP/1.1
Host: api.skynyx.dev
Content-Type: application/json
apiKey: your_default_api_key
{
"api_key": "xxxxx",
"mobile_no": "your_10_digit_numeric_mobile_number",
"template_name": "xxx",
"sender_id": "xxxx",
"type": "Utility",
"file": "C:/Users/YourName/Downloads/sample.pdf",
"language_code": "xxx",
"parameter": ["xxx", "xxx"]
}# Instruction: Replace values with your own WhatsApp template details and numeric mobile number
curl -X POST "https://api.skynyx.dev/v1/whatsapp" -H "Content-Type: application/json" -H "apiKey: your_default_api_key" -d "{
\"api_key\": \"xxxxx\",
\"mobile_no\": \"your_10_digit_numeric_mobile_number\",
\"template_name\": \"xxx\",
\"sender_id\": \"xxxx\",
\"type\": \"Utility\",
\"file\": \"C:/Users/YourName/Downloads/sample.pdf\",
\"language_code\": \"xxx\",
\"parameter\": [\"xxx\", \"xxx\"]
}":: Instruction: Replace values with your own WhatsApp template details and numeric mobile number
curl -X POST https://api.skynyx.dev/v1/whatsapp ^
-H "Content-Type: application/json" ^
-H "apiKey: your_default_api_key" ^
-d "{
\"api_key\": \"xxxxx\",
\"mobile_no\": \"your_10_digit_numeric_mobile_number\",
\"template_name\": \"xxx\",
\"sender_id\": \"xxxx\",
\"type\": \"Utility\",
\"file\": \"C:/Users/YourName/Downloads/sample.pdf\",
\"language_code\": \"xxx\",
\"parameter\": [\"xxx\", \"xxx\"]
}"// Instruction: Replace values with your own WhatsApp template details and numeric mobile number
import java.io.IOException;
import okhttp3.*;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
public class Program {
public static void main(String[] args) throws IOException {
OkHttpClient client = new OkHttpClient();
RequestBody requestBody = RequestBody.create(
MediaType.parse("application/json"),
"{\"api_key\": \"xxxxx\", \"mobile_no\": \"your_10_digit_numeric_mobile_number\", \"template_name\": \"xxx\", \"sender_id\": \"xxxx\", \"type\": \"Utility\", \"file\": \"C:/Users/YourName/Downloads/sample.pdf\", \"language_code\": \"xxx\", \"parameter\": [\"xxx\", \"xxx\"]}"
);
Request request = new Request.Builder()
.url("https://api.skynyx.dev/v1/whatsapp")
.addHeader("Content-Type", "application/json")
.addHeader("apiKey", "your_default_api_key")
.post(requestBody)
.build();
try (Response response = client.newCall(request).execute()) {
if (response.body() != null) {
String responseBody = response.body().string();
JsonObject json = JsonParser.parseString(responseBody).getAsJsonObject();
if (json.has("status") && json.get("status").getAsInt() == 200) {
System.out.println("Message sent successfully!");
System.out.println("Response: " + json.toString());
} else {
System.out.println("API returned error: " + json.toString());
}
} else {
System.out.println("Empty response from server");
}
}
}
}// Instruction: Replace values with your own WhatsApp template details and numeric mobile number
const axios = require('axios');
async function main() {
const data = {
api_key: "xxxxx",
mobile_no: "your_10_digit_numeric_mobile_number",
template_name: "xxx",
sender_id: "xxxx",
type: "Utility",
file: "C:/Users/YourName/Downloads/sample.pdf",
language_code: "xxx",
parameter: ["xxx", "xxx"]
};
try {
const response = await axios.post('https://api.skynyx.dev/v1/whatsapp', data, {
headers: { 'Content-Type': 'application/json', 'apiKey': 'your_default_api_key' }
});
if (response.data.status === 200) {
console.log("Message sent successfully!");
console.log(response.data);
} else {
console.log("API returned error:", response.data);
}
} catch (error) {
console.error(error.message);
}
}
main();// Instruction: Replace values with your own WhatsApp template details and numeric mobile number
using System;
using System.Net.Http;
using System.Text;
using System.Text.Json;
using System.Threading.Tasks;
class Program {
static async Task Main() {
var client = new HttpClient();
var payload = @"{
\"api_key\": \"xxxxx\",
\"mobile_no\": \"your_10_digit_numeric_mobile_number\",
\"template_name\": \"xxx\",
\"sender_id\": \"xxxx\",
\"type\": \"Utility\",
\"file\": \"C:/Users/YourName/Downloads/sample.pdf\",
\"language_code\": \"xxx\",
\"parameter\": [\"xxx\", \"xxx\"]
}";
var content = new StringContent(payload, Encoding.UTF8, "application/json");
client.DefaultRequestHeaders.Add("apiKey", "your_default_api_key");
var response = await client.PostAsync("https://api.skynyx.dev/v1/whatsapp", content);
var responseBody = await response.Content.ReadAsStringAsync();
var json = JsonSerializer.Deserialize<JsonElement>(responseBody);
if (json.GetProperty("status").GetInt32() == 200) {
Console.WriteLine("Message sent successfully!");
Console.WriteLine(responseBody);
} else {
Console.WriteLine("API returned error: " + responseBody);
}
}
}# Instruction: Replace values with your own WhatsApp template details and numeric mobile number
import requests
import json
url = "https://api.skynyx.dev/v1/whatsapp"
payload = {
"api_key": "xxxxx",
"mobile_no": "your_10_digit_numeric_mobile_number",
"template_name": "xxx",
"sender_id": "xxxx",
"type": "Utility",
"file": "C:/Users/YourName/Downloads/sample.pdf",
"language_code": "xxx",
"parameter": ["xxx", "xxx"]
}
headers = {"Content-Type": "application/json", "apiKey": "your_default_api_key"}
response = requests.post(url, headers=headers, data=json.dumps(payload))
data = response.json()
if data.get("status") == 200:
print("Message sent successfully!")
print(data)
else:
print("API returned error:", data)<?php
// Instruction: Replace values with your own WhatsApp template details and numeric mobile number
$url = 'https://api.skynyx.dev/v1/whatsapp';
$data = [
"api_key" => "xxxxx",
"mobile_no" => "your_10_digit_numeric_mobile_number",
"template_name" => "xxx",
"sender_id" => "xxxx",
"type" => "Utility",
"file" => "C:/Users/YourName/Downloads/sample.pdf",
"language_code" => "xxx",
"parameter" => ["xxx", "xxx"]
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json',
'apiKey: your_default_api_key'
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$json = json_decode($response, true);
if ($json['status'] === 200) {
echo "Message sent successfully!\n";
echo $response;
} else {
echo "API returned error: " . $response;
}
curl_close($ch);