Send SMS, check balances, and manage campaigns programmatically. Integrate bulk messaging into your apps in minutes.
# Check Balance curl "https://sms.palnode.com/api/?action=balance&api_key=your_api_key_here" # Send SMS curl -X POST "https://sms.palnode.com/api/?action=send" \ -H "Content-Type: application/json" \ -H "Authorization: your_api_key_here" \ -d '{"phone": "256700111111", "message": "Hello from cURL!"}'
/api/?action=balanceReturns your wallet balance and currency.
/api/?action=sendSend an SMS. The message is queued and sent by the system.
Request Body:// Check Balance $apiKey = 'your_api_key_here'; $baseUrl = 'https://sms.palnode.com/api'; $ch = curl_init($baseUrl . '/?action=balance&api_key=' . $apiKey); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $response = curl_exec($ch); curl_close($ch); $data = json_decode($response, true); echo "Balance: " . $data['currency'] . " " . $data['balance']; // Send SMS $payload = json_encode([ 'phone' => '256700111111', 'message' => 'Hello from PHP!', ]); $ch = curl_init($baseUrl . '/?action=send'); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_POSTFIELDS => $payload, CURLOPT_HTTPHEADER => [ 'Content-Type: application/json', 'Authorization: ' . $apiKey, ], CURLOPT_RETURNTRANSFER => true, ]); $response = curl_exec($ch); curl_close($ch); $result = json_decode($response, true);
/api/?action=balanceReturns your wallet balance and currency.
/api/?action=sendSend an SMS. The message is queued and sent by the system.
Request Body:# Check Balance import requests API_KEY = 'your_api_key_here' response = requests.get( 'https://sms.palnode.com/api/?action=balance', params={'api_key': API_KEY} ) data = response.json() print(f"Balance: {data['currency']} {data['balance']}") # Send SMS payload = { 'phone': '256700111111', 'message': 'Hello from Python!' } headers = { 'Content-Type': 'application/json', 'Authorization': API_KEY } response = requests.post( 'https://sms.palnode.com/api/?action=send', json=payload, headers=headers ) result = response.json()
/api/?action=balanceReturns your wallet balance and currency.
/api/?action=sendSend an SMS. The message is queued and sent by the system.
Request Body:// Check Balance const API_KEY = 'your_api_key_here'; const BASE_URL = 'https://sms.palnode.com/api'; const balanceRes = await fetch( `${BASE_URL}/?action=balance&api_key=${API_KEY}` ); const balance = await balanceRes.json(); console.log(`Balance: ${balance.currency} ${balance.balance}`); // Send SMS const sendRes = await fetch(`${BASE_URL}/?action=send`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'Authorization': API_KEY, }, body: JSON.stringify({ phone: '256700111111', message: 'Hello from Node.js!', }), }); const result = await sendRes.json();
/api/?action=balanceReturns your wallet balance and currency.
/api/?action=sendSend an SMS. The message is queued and sent by the system.
Request Body:// Check Balance import java.net.URI; import java.net.http.*; String apiKey = "your_api_key_here"; HttpClient client = HttpClient.newHttpClient(); HttpRequest req = HttpRequest.newBuilder() .uri(URI.create("https://sms.palnode.com/api/?action=balance&api_key=" + apiKey)) .GET() .build(); HttpResponse<String> res = client.send(req, HttpResponse.BodyHandlers.ofString()); System.out.println(res.body()); // Send SMS String json = """ {"phone": "256700111111", "message": "Hello from Java!"} """.stripIndent(); req = HttpRequest.newBuilder() .uri(URI.create("https://sms.palnode.com/api/?action=send")) .header("Content-Type", "application/json") .header("Authorization", apiKey) .POST(HttpRequest.BodyPublishers.ofString(json)) .build(); res = client.send(req, HttpResponse.BodyHandlers.ofString()); System.out.println(res.body());
/api/?action=balanceReturns your wallet balance and currency.
/api/?action=sendSend an SMS. The message is queued and sent by the system.
Request Body:# Check Balance require 'net/http' require 'json' api_key = 'your_api_key_here' uri = URI("https://sms.palnode.com/api/?action=balance&api_key=#{api_key}") response = Net::HTTP.get(uri) data = JSON.parse(response) puts "Balance: #{data['currency']} #{data['balance']}" # Send SMS uri = URI("https://sms.palnode.com/api/?action=send") http = Net::HTTP.new(uri.host, uri.port) http.use_ssl = true req = Net::HTTP::Post.new(uri) req['Content-Type'] = 'application/json' req['Authorization'] = api_key req.body = JSON.generate({ phone: '256700111111', message: 'Hello from Ruby!' }) res = http.request(req) puts res.body
/api/?action=balanceReturns your wallet balance and currency.
/api/?action=sendSend an SMS. The message is queued and sent by the system.
Request Body:// Check Balance package main import ("bytes";"encoding/json";"fmt";"io";"net/http") func main() { apiKey := "your_api_key_here" url := "https://sms.palnode.com/api/?action=balance&api_key=" + apiKey resp, err := http.Get(url) if err != nil { panic(err) } defer resp.Body.Close() body, _ := io.ReadAll(resp.Body) fmt.Println(string(body)) } // Send SMS // (reuse apiKey from above) payload, _ := json.Marshal(map[string]string{ "phone": "256700111111", "message": "Hello from Go!", }) req, _ := http.NewRequest("POST", "https://sms.palnode.com/api/?action=send", bytes.NewBuffer(payload)) req.Header.Set("Content-Type", "application/json") req.Header.Set("Authorization", apiKey) client := &http.Client{} resp, _ = client.Do(req) defer resp.Body.Close() body, _ = io.ReadAll(resp.Body) fmt.Println(string(body))
/api/?action=balanceReturns your wallet balance and currency.
/api/?action=sendSend an SMS. The message is queued and sent by the system.
Request Body:// Check Balance using System.Net.Http; var apiKey = "your_api_key_here"; var client = new HttpClient(); var balRes = await client.GetAsync( "https://sms.palnode.com/api/?action=balance&api_key=" + apiKey); var balBody = await balRes.Content.ReadAsStringAsync(); Console.WriteLine(balBody); // Send SMS var payload = new StringContent( @"{""phone"":""256700111111"",""message"":""Hello from C#!""}", Encoding.UTF8, "application/json"); payload.Headers.Add("Authorization", apiKey); var sendRes = await client.PostAsync( "https://sms.palnode.com/api/?action=send", payload); var sendBody = await sendRes.Content.ReadAsStringAsync(); Console.WriteLine(sendBody);
/api/?action=balanceReturns your wallet balance and currency.
/api/?action=sendSend an SMS. The message is queued and sent by the system.
Request Body:// Check Balance import 'dart:convert'; import 'package:http/http.dart' as http; final apiKey = 'your_api_key_here'; final baseUrl = Uri.parse('https://sms.palnode.com/api'); final balUri = baseUrl.replace(queryParameters: { 'action': 'balance', 'api_key': apiKey }); final balRes = await http.get(balUri); final balData = jsonDecode(balRes.body); print('Balance: ${balData['currency']} ${balData['balance']}'); // Send SMS final sendRes = await http.post( Uri.parse('https://sms.palnode.com/api/?action=send'), headers: { 'Content-Type': 'application/json', 'Authorization': apiKey, }, body: jsonEncode({ 'phone': '256700111111', 'message': 'Hello from Dart!', }), ); final result = jsonDecode(sendRes.body);
/api/?action=balanceReturns your wallet balance and currency.
/api/?action=sendSend an SMS. The message is queued and sent by the system.
Request Body:# Check Balance GET https://sms.palnode.com/api/?action=balance&api_key=your_api_key_here # Send SMS POST https://sms.palnode.com/api/?action=send Content-Type: application/json Authorization: your_api_key_here {"phone": "256700111111", "message": "Hello from HTTP!"}
/api/?action=balanceReturns your wallet balance and currency.
/api/?action=sendSend an SMS. The message is queued and sent by the system.
Request Body:| Code | Meaning |
|---|---|
| 400 | Bad request — missing or invalid parameters |
| 401 | Unauthorized — missing or invalid API key |
| 402 | Insufficient balance |
| 405 | Method not allowed |
| 500 | Internal server error |
Create an account to get your API key and start sending in minutes.
Get Your API Key