SMS API — Send & Receive Text Messages | BulkSMS.ca
Complete REST API for sending and receiving SMS messages. Send single SMS, bulk messages, schedule campaigns, and track delivery status in real-time.
Base URL: https://api.bulksms.ca
What is the BulkSMS.ca SMS API?
The BulkSMS.ca SMS API is a RESTful API that lets developers send and receive SMS messages programmatically. It supports single and bulk message sending, scheduling, delivery tracking, template management, and webhook notifications. Authentication uses API keys passed in the Authorization header. The API returns JSON responses and supports up to 1,000 requests per minute.
Authentication
Authorization: Bearer YOUR_API_KEY
Content-Type: application/jsonInclude your API key in the Authorization header of every request. API keys are available in your BulkSMS.ca dashboard under Settings > API Keys.
API Endpoints
/v2/sendSend a single SMS message to one recipient.
Auth: API Key{
"to": "9198XXXXXXXX",
"message": "Hello from BulkSMS!",
"sender": "BULKSMS",
"route": "transactional"
}{
"status": "success",
"message_id": "msg_abc123",
"to": "9198XXXXXXXX",
"status_code": "202",
"credits_used": 1
}/v2/send-bulkSend bulk SMS to up to 10,000 recipients.
Auth: API Key{
"to": ["9198XXXXXXXX", "9198XXXXXXXX"],
"message": "Hello!",
"sender": "BULKSMS",
"route": "promotional"
}{
"status": "success",
"batch_id": "batch_xyz789",
"total": 1000,
"credits_used": 1000
}/v2/scheduleSchedule an SMS for future delivery.
Auth: API Key{
"to": "9198XXXXXXXX",
"message": "Reminder: Your appointment is tomorrow.",
"sender": "BULKSMS",
"schedule_time": "2026-06-20T10:00:00+05:30"
}{
"status": "success",
"schedule_id": "sch_456def",
"scheduled_for": "2026-06-20T10:00:00+05:30"
}/v2/status/{message_id}Get delivery status of a sent message.
Auth: API Key{
"message_id": "msg_abc123",
"to": "9198XXXXXXXX",
"status": "delivered",
"delivered_at": "2026-06-15T14:30:22+05:30",
"operator": "Jio"
}/v2/balanceCheck your account credit balance.
Auth: API Key{
"balance": 15420,
"currency": "INR",
"expiry_date": "2027-06-15"
}/v2/templatesList all approved DLT templates.
Auth: API Key{
"templates": [
{ "id": "tpl_001", "name": "Order Confirmation", "content": "Dear {#var#}, your order {#var#} is confirmed." }
]
}/v2/schedule/{schedule_id}Cancel a scheduled message.
Auth: API Key{
"status": "success",
"message": "Scheduled message cancelled"
}SDK Code Examples
curl (built-in)curl -X POST https://api.bulksms.ca/v2/send \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": "9198XXXXXXXX",
"message": "Hello from BulkSMS!",
"sender": "BULKSMS"
}'pip install requestsimport requests
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
data = {
"to": "9198XXXXXXXX",
"message": "Hello from BulkSMS!",
"sender": "BULKSMS"
}
response = requests.post("https://api.bulksms.ca/v2/send", json=data, headers=headers)
print(response.json())npm install axiosconst axios = require('axios');
const response = await axios.post('https://api.bulksms.ca/v2/send', {
to: '9198XXXXXXXX',
message: 'Hello from BulkSMS!',
sender: 'BULKSMS'
}, {
headers: { Authorization: 'Bearer YOUR_API_KEY' }
});
console.log(response.data);composer require guzzlehttp/guzzle$client = new GuzzleHttp\Client();
$response = $client->post('https://api.bulksms.ca/v2/send', [
'headers' => ['Authorization' => 'Bearer YOUR_API_KEY'],
'json' => [
'to' => '9198XXXXXXXX',
'message' => 'Hello from BulkSMS!',
'sender' => 'BULKSMS'
]
]);
echo $response->getBody();Webhooks
Configure webhooks in your dashboard to receive real-time event notifications.
Supported Events
{
"event": "message.delivered",
"message_id": "msg_abc123",
"to": "9198XXXXXXXX",
"status": "delivered",
"operator": "Jio",
"delivered_at": "2026-06-15T14:30:22+05:30",
"timestamp": "2026-06-15T14:30:22+05:30"
}Error Codes
FAQs
How do I send an SMS using the API?
Make a POST request to /v2/send with your API key in the Authorization header. Include the recipient phone number, message text, and sender ID in the JSON body. The API returns a message ID for tracking.
What is the rate limit for the SMS API?
The SMS API supports up to 1,000 requests per minute per API key. For higher volumes, contact our sales team for dedicated infrastructure.
Can I send bulk SMS via API?
Yes, use the /v2/send-bulk endpoint to send messages to up to 10,000 recipients in a single request. Each recipient is billed as one SMS.
How do I track SMS delivery?
Use the /v2/status/{msg_id} endpoint to check delivery status. Alternatively, configure webhooks to receive real-time delivery notifications.
Is the SMS API DLT compliant?
Yes, all SMS sent through our API are automatically routed through DLT-registered templates and sender IDs. Ensure your templates are approved before sending.