WilCybertek SMS Gateway API
A direct, low-latency SMS gateway connecting your applications to Zambia's three major mobile networks — MTN, Airtel, and Zamtel — via physical on-premise GSM hardware. No international routing. No hidden relay fees.
Quickstart
Send your first SMS message in under 5 minutes.
curl -X POST https://sms.wilcybertek.com/api \
-H "Content-Type: application/json" \
-d '{
"api_key": "YOUR_API_KEY_HERE",
"to": "260977000000",
"message": "Hello! This is my first WilCybertek SMS."
}'
Authentication
Every API request must include your unique API Key.
Including Your Key
{
"api_key": "YOUR_32_CHAR_API_KEY",
"to": "260977000000",
"message": "Your message here"
}
Send SMS
The primary endpoint for sending a single SMS message to any Zambian mobile number.
Request Parameters
Example Request
<?php $payload = json_encode([ "api_key" => getenv("WCT_API_KEY"), "to" => "260977000000", "message" => "Your account balance is K250.00" ]); $ch = curl_init("https://sms.wilcybertek.com/api"); curl_setopt_array($ch, [ CURLOPT_POST=>true, CURLOPT_POSTFIELDS=>$payload, CURLOPT_RETURNTRANSFER=>true, CURLOPT_HTTPHEADER=>["Content-Type: application/json"] ]); $r = json_decode(curl_exec($ch), true); curl_close($ch); echo $r['success'] ? "✓ Queued" : "Error: ".$r['error'];
Response
{
"success": true,
"id": 42,
"status": "QUEUED"
}
{
"error": "Invalid API key"
}
Bulk SMS
Send the same message to multiple recipients in a single API call.
{
"api_key": "YOUR_API_KEY",
"recipients": ["260977000001", "260966000002"],
"message": "Flash sale! 30% off all services today."
}
Check Balance
Retrieve your current SMS credit balance programmatically.
{
"balance": 249,
"is_unlimited": false
}
Message Logs
Retrieve a paginated list of your recent message activity including delivery statuses.
Supported Networks
WilCybertek routes messages through physical Android gateway hardware with active local SIM cards.
Phone Number Formatting
All phone numbers must be submitted in Zambian international format.
Rate Limits
To maintain fair usage across all developers:
Error Codes
All errors return a JSON body with an error field.
Security Best Practices
WCT_API_KEY rather than hardcoding it in source files.PHP Examples
<?php function sendOTP(string $phone, int $otp): bool { $ch = curl_init("https://sms.wilcybertek.com/api"); curl_setopt_array($ch, [ CURLOPT_POST=>true, CURLOPT_RETURNTRANSFER=>true, CURLOPT_HTTPHEADER=>["Content-Type: application/json"], CURLOPT_POSTFIELDS=>json_encode([ "api_key" => getenv("WCT_API_KEY"), "to" => $phone, "message" => "Your code is: {$otp}. Valid 5 mins." ]) ]); $r = json_decode(curl_exec($ch), true); curl_close($ch); return !empty($r['success']); }
Python Examples
import os, requests
def send_sms(to: str, message: str) -> dict:
r = requests.post("https://sms.wilcybertek.com/api",
json={"api_key": os.environ["WCT_API_KEY"], "to": to, "message": message},
timeout=10)
r.raise_for_status()
return r.json()
result = send_sms("260977000000", "Payment confirmed!")
print("Queued:", result.get("id"))
JavaScript Examples
// Server-side only — never expose key in browser const sendSMS = async (to, message) => { const r = await fetch("https://sms.wilcybertek.com/api", { method:"POST", headers:{"Content-Type":"application/json"}, body: JSON.stringify({api_key: process.env.WCT_API_KEY, to, message}) }); return r.json(); }; sendSMS("260977000000", "Order ready!").then(d => console.log(d));
cURL Examples
curl -X POST https://sms.wilcybertek.com/api \
-H "Content-Type: application/json" \
-d '{"api_key":"YOUR_KEY","to":"260977000000","message":"Hello!"}'
Start Sending SMS in Minutes
Create your free developer account and connect to Zambia's fastest SMS gateway.