using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;
const string baseUrl = "https://api.bulksmsonline.co";
const string username = "YOURUSERNAME";
const string password = "YOURPASSWORD";
using var http = new HttpClient();
var tokenUrl =
$"{baseUrl}/rest/api/v1/sms/gettoken/username/" +
$"{Uri.EscapeDataString(username)}/password/" +
$"{Uri.EscapeDataString(password)}";
var tokenResponse = await http.GetAsync(tokenUrl);
var tokenBody = await tokenResponse.Content.ReadAsStringAsync();
if (!tokenResponse.IsSuccessStatusCode)
{
throw new Exception($"Token error: {(int)tokenResponse.StatusCode} - {tokenBody}");
}
var token = ExtractToken(tokenBody);
var smsPayload = new
{
@from = "SenderName",
to = new[] { "16813000014" },
type = "Text",
content = "Sample SMS content from BulkSMSOnline REST API"
};
var sendRequest = new HttpRequestMessage(
HttpMethod.Post,
$"{baseUrl}/rest/api/v1/sms/send/"
);
sendRequest.Headers.Authorization =
new AuthenticationHeaderValue("Bearer", token);
// Compatibility with older BulkSMSOnline examples.
sendRequest.Headers.Add("token", token);
sendRequest.Content = new StringContent(
JsonSerializer.Serialize(smsPayload),
Encoding.UTF8,
"application/json"
);
var sendResponse = await http.SendAsync(sendRequest);
var sendBody = await sendResponse.Content.ReadAsStringAsync();
Console.WriteLine(sendBody);
static string ExtractToken(string body)
{
var text = body.Trim().Trim('"');
if (!text.StartsWith("{"))
{
return text;
}
using var json = JsonDocument.Parse(text);
var root = json.RootElement;
foreach (var field in new[] { "token", "Token", "access_token" })
{
if (root.TryGetProperty(field, out var value))
{
return value.GetString() ?? "";
}
}
if (root.TryGetProperty("data", out var data) &&
data.TryGetProperty("token", out var nestedToken))
{
return nestedToken.GetString() ?? "";
}
return text;
}
<?php
$baseUrl = 'https://api.bulksmsonline.co';
$username = 'YOURUSERNAME';
$password = 'YOURPASSWORD';
function bsoExtractToken(string $body): string
{
$body = trim($body);
$json = json_decode($body, true);
if (json_last_error() === JSON_ERROR_NONE && is_array($json)) {
foreach (['token', 'Token', 'access_token'] as $field) {
if (!empty($json[$field])) {
return $json[$field];
}
}
if (!empty($json['data']['token'])) {
return $json['data']['token'];
}
}
return trim($body, "\" \t\n\r\0\x0B");
}
function bsoRequest(string $url, string $method = 'GET', ?string $body = null, array $headers = []): string
{
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => $method,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTPHEADER => $headers,
]);
if ($body !== null) {
curl_setopt($curl, CURLOPT_POSTFIELDS, $body);
}
$response = curl_exec($curl);
$error = curl_error($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
curl_close($curl);
if ($response === false) {
throw new Exception('cURL error: ' . $error);
}
if ($status < 200 || $status >= 300) {
throw new Exception("HTTP {$status}: {$response}");
}
return $response;
}
$tokenUrl =
$baseUrl . '/rest/api/v1/sms/gettoken/username/' .
rawurlencode($username) . '/password/' .
rawurlencode($password);
$tokenBody = bsoRequest($tokenUrl);
$token = bsoExtractToken($tokenBody);
$smsPayload = json_encode([
'from' => 'SenderName',
'to' => ['16813000014'],
'type' => 'Text',
'content' => 'Sample SMS content from BulkSMSOnline REST API',
], JSON_UNESCAPED_UNICODE);
$sendBody = bsoRequest(
$baseUrl . '/rest/api/v1/sms/send/',
'POST',
$smsPayload,
[
'Content-Type: application/json',
'Accept: application/json',
'Authorization: Bearer ' . $token,
'token: ' . $token
]
);
echo $sendBody;
import java.net.URI;
import java.net.URLEncoder;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class BulkSmsOnlineExample {
private static final String BASE_URL = "https://api.bulksmsonline.co";
public static void main(String[] args) throws Exception {
String username = "YOURUSERNAME";
String password = "YOURPASSWORD";
HttpClient client = HttpClient.newHttpClient();
String tokenUrl =
BASE_URL + "/rest/api/v1/sms/gettoken/username/" +
enc(username) + "/password/" + enc(password);
HttpRequest tokenRequest = HttpRequest.newBuilder()
.uri(URI.create(tokenUrl))
.GET()
.build();
HttpResponse<String> tokenResponse = client.send(
tokenRequest,
HttpResponse.BodyHandlers.ofString()
);
if (tokenResponse.statusCode() < 200 || tokenResponse.statusCode() >= 300) {
throw new RuntimeException("Token error: " + tokenResponse.body());
}
String token = extractToken(tokenResponse.body());
String smsJson =
"{" +
"\"from\":\"SenderName\"," +
"\"to\":[\"16813000014\"]," +
"\"type\":\"Text\"," +
"\"content\":\"Sample SMS content from BulkSMSOnline REST API\"" +
"}";
HttpRequest sendRequest = HttpRequest.newBuilder()
.uri(URI.create(BASE_URL + "/rest/api/v1/sms/send/"))
.header("Content-Type", "application/json")
.header("Accept", "application/json")
.header("Authorization", "Bearer " + token)
.header("token", token)
.POST(HttpRequest.BodyPublishers.ofString(smsJson))
.build();
HttpResponse<String> sendResponse = client.send(
sendRequest,
HttpResponse.BodyHandlers.ofString()
);
System.out.println(sendResponse.body());
}
private static String enc(String value) {
return URLEncoder.encode(value, StandardCharsets.UTF_8);
}
private static String extractToken(String body) {
String text = body.trim().replaceAll("^\"|\"$", "");
Pattern pattern = Pattern.compile(
"\"(?:token|Token|access_token)\"\\s*:\\s*\"([^\"]+)\""
);
Matcher matcher = pattern.matcher(text);
if (matcher.find()) {
return matcher.group(1);
}
return text;
}
}