Seamless migration from Bulletin Connect to WebSMS - Just change your credentials and URL!
service.bulletinconnect.net
websms.co.nz
curl -X POST http://service.bulletinconnect.net/api/1/sms/out \
-d "userId=myuser" \
-d "password=mypass" \
-d "to=6421234567" \
-d "body=Hello World"
curl -X POST https://websms.co.nz/api/connexus/sms/out \
-d "userId=user@domain.co.nz" \
-d "password=websmspwd" \
-d "to=6421234567" \
-d "body=Hello World"
| Function | Bulletin Connect URL | WebSMS Replacement URL |
|---|---|---|
| Send SMS | http://service.bulletinconnect.net/api/1/sms/out |
https://websms.co.nz/api/connexus/sms/out |
| Receive SMS | http://service.bulletinconnect.net/api/1/sms/in |
https://websms.co.nz/api/connexus/sms/in |
| Status Updates | http://service.bulletinconnect.net/api/1/sms/status |
https://websms.co.nz/api/connexus/sms/status |
| Query MO Messages | N/A |
https://websms.co.nz/api/connexus/mo/query |
| Check Balance | N/A |
https://websms.co.nz/api/connexus/sms/balance |
| Parameter | Required | Description | Example |
|---|---|---|---|
userId |
Required | Your WebSMS account email | user@domain.co.nz |
password |
Required | Your WebSMS account password | mypassword |
to |
Required | Recipient phone number (international format) | 6421234567 |
body |
Required | Message content | Hello World |
from |
Optional | Sender ID | 64228984220 |
messageId |
Optional | Unique message identifier (max 36 chars) | MSG123456 |
rateCode |
Optional | Message source identifier | CAMPAIGN1 |
contentType |
Optional | Message type | text/plain |
fragmentationLimit |
Optional | Maximum SMS parts (0-3) | 3 |
schedule |
Optional | Unix timestamp for scheduled delivery | 1735689600 |
| 204 | Success - Message sent |
| 400 | Bad Request - Missing parameters |
| 401 | Unauthorized - Invalid credentials |
| 403 | Forbidden - Insufficient funds |
| 500 | Server Error |
| Standard SMS (160 chars) | $0.10 +GST |
| Multi-part SMS (per part) | $0.10 +GST |
| Unicode SMS (70 chars) | $0.10 +GST |
| GST applies to NZ customers only | |
POST http://service.bulletinconnect.net/api/1/sms/status
Content-Type: application/x-www-form-urlencoded
userId=myuser&password=mypass&url=https://yoursite.com/status
POST https://websms.co.nz/api/connexus/sms/status
Content-Type: application/x-www-form-urlencoded
userId=user@domain.co.nz&password=pass&url=https://yoursite.com/status
// Your webhook will receive:
{
"messageId": "MSG123", // Your original messageId
"status": "DELIVRD", // Delivery status
"statusCode": 1, // Numeric status code
"timestamp": 1234567890, // Unix timestamp
"details": {
"smsc": "carrier_name", // Network carrier
"smscid": "abc123" // Carrier message ID
}
}
| statusCode | status | Description |
|---|---|---|
1 | DELIVRD | Message delivered successfully |
2 | UNDELIV | Message undeliverable |
4 | QUEUED | Message expired/queued |
8 | ACCEPTD | Message accepted by network |
16 | UNDELIV | Message undeliverable |
<?php
// Register webhook first
$ch = curl_init('https://websms.co.nz/api/connexus/sms/status');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
'userId' => 'user@domain.co.nz',
'password' => 'yourpassword',
'url' => 'https://yoursite.com/webhook/status.php'
]));
curl_exec($ch);
curl_close($ch);
// Then in your webhook handler (status.php):
$data = json_decode(file_get_contents('php://input'), true);
if ($data['status'] == 'DELIVRD') {
// Message was delivered
error_log("Message {$data['messageId']} delivered");
} elseif ($data['status'] == 'UNDELIV') {
// Message failed
error_log("Message {$data['messageId']} failed");
}
?>
POST http://service.bulletinconnect.net/api/1/sms/in
Content-Type: application/x-www-form-urlencoded
userId=myuser&password=mypass&url=https://yoursite.com/incoming
POST https://websms.co.nz/api/connexus/sms/in
Content-Type: application/x-www-form-urlencoded
userId=user@domain.co.nz&password=pass&url=https://yoursite.com/incoming
// Your webhook will receive:
{
"messageId": "MO456", // Unique message ID
"from": "+6421234567", // Sender's phone number
"to": "shortcode", // Recipient (shortcode or your number)
"body": "Reply text", // Message content
"timestamp": 1234567890, // Unix timestamp
"type": "SMS", // Message type
"encoding": "text/plain", // Content encoding
"network": "carrier_name" // Origin network
}
<?php
// Register webhook first
$ch = curl_init('https://websms.co.nz/api/connexus/sms/in');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
'userId' => 'user@domain.co.nz',
'password' => 'yourpassword',
'url' => 'https://yoursite.com/webhook/incoming.php'
]));
curl_exec($ch);
curl_close($ch);
// Then in your webhook handler (incoming.php):
$data = json_decode(file_get_contents('php://input'), true);
// Process incoming message
$from = $data['from'];
$message = $data['body'];
// Reply to the message
$ch = curl_init('https://websms.co.nz/api/connexus/sms/out');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
'userId' => 'user@domain.co.nz',
'password' => 'yourpassword',
'to' => ltrim($from, '+'), // Remove + prefix
'body' => 'Thank you for your message!'
]));
curl_exec($ch);
curl_close($ch);
?>
curl -X POST https://websms.co.nz/api/connexus/mo/query \
-d "userId=user@domain.co.nz" \
-d "password=yourpassword" \
-d "from=6421234567" \
-d "to=551" \
-d "start_date=2025-01-01" \
-d "end_date=2025-01-31" \
-d "limit=100" \
-d "page=1"
| Parameter | Required | Description | Example |
|---|---|---|---|
userId |
Required | Your WebSMS account email | user@domain.co.nz |
password |
Required | Your WebSMS account password | yourpassword |
from |
Optional | Filter by sender number | 6421234567 |
to |
Optional | Filter by recipient (shortcode) | 551 |
callback_status |
Optional | Filter by webhook callback HTTP status | 200 |
start_date |
Optional | Start of date range (Y-m-d or Y-m-d H:i:s) | 2025-01-01 |
end_date |
Optional | End of date range (Y-m-d or Y-m-d H:i:s) | 2025-01-31 |
limit |
Optional | Number of results per page (default: 100, max: 200) | 100 |
page |
Optional | Page number for pagination (default: 1) | 1 |
{
"status": "success",
"messages": [
{
"messageId": "1234",
"from": "6421234567",
"to": "551",
"body": "Reply message text",
"receivedTime": "2025-01-15 14:30:00",
"timestamp": 1736948400,
"relatedMessageId": "5678", // Optional: only if reply to sent message
"callbackUrl": "https://...", // Optional: only if webhook configured
"callbackStatus": "200", // Optional: only if webhook called
"callbackResponse": "OK" // Optional: only if webhook responded
}
],
"pagination": {
"page": 1,
"limit": 100,
"totalRecords": 250,
"totalPages": 3,
"hasNextPage": true,
"hasPreviousPage": false
},
"filters": {
"from": "6421234567",
"to": "551",
"callback_status": null,
"start_date": "2025-01-01 00:00:00",
"end_date": "2025-01-31 23:59:59"
}
}
relatedMessageId, callbackUrl, callbackStatus, and callbackResponse only appear in the response if they have values.
<?php
// Query incoming messages
$ch = curl_init('https://websms.co.nz/api/connexus/mo/query');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
'userId' => 'user@domain.co.nz',
'password' => 'yourpassword',
'from' => '6421234567',
'start_date' => '2025-01-01',
'end_date' => '2025-01-31',
'limit' => 100,
'page' => 1
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode == 200) {
$data = json_decode($response, true);
echo "Total messages: " . $data['pagination']['totalRecords'] . "\n";
foreach ($data['messages'] as $msg) {
echo "From: {$msg['from']}, Message: {$msg['body']}\n";
}
// Fetch next page if available
if ($data['pagination']['hasNextPage']) {
// Query with page=2
}
} else {
echo "Error: HTTP $httpCode";
}
?>
curl -X POST https://websms.co.nz/api/connexus/sms/balance \
-d "userId=user@domain.co.nz" \
-d "password=yourpassword"
{
"balance": "125.50",
"currency": "NZD"
}
<?php
// Check account balance
$ch = curl_init('https://websms.co.nz/api/connexus/sms/balance');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query([
'userId' => 'user@domain.co.nz',
'password' => 'yourpassword'
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode == 200) {
$data = json_decode($response, true);
echo "Current balance: $" . $data['balance'] . " " . $data['currency'];
} else {
echo "Error: HTTP $httpCode";
}
?>
# Get current configuration
curl -X GET https://websms.co.nz/api/connexus/configure.php \
-u "user@domain.co.nz:password"
# Set webhook URLs
curl -X POST https://websms.co.nz/api/connexus/configure.php \
-u "user@domain.co.nz:password" \
-H "Content-Type: application/json" \
-d '{
"mo_webhook_url": "https://yoursite.com/receive-sms",
"dlr_webhook_url": "https://yoursite.com/delivery-status"
}'
{
"messageId": "MSG123",
"status": "DELIVRD",
"statusCode": 1,
"timestamp": 1234567890,
"details": {
"smsc": "carrier",
"smscid": "abc123"
}
}
{
"messageId": "MO456",
"from": "+6421234567",
"to": "shortcode",
"body": "Reply text",
"timestamp": 1234567890,
"type": "SMS",
"encoding": "text/plain",
"network": "carrier"
}
<?php
$url = 'https://websms.co.nz/api/connexus/sms/out';
$data = [
'userId' => 'user@domain.co.nz',
'password' => 'yourpassword',
'to' => '6421234567',
'body' => 'Hello from WebSMS!'
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($httpCode == 204) {
echo "Message sent successfully!";
} else {
echo "Error: HTTP $httpCode";
}
?>
import requests
url = 'https://websms.co.nz/api/connexus/sms/out'
data = {
'userId': 'user@domain.co.nz',
'password': 'yourpassword',
'to': '6421234567',
'body': 'Hello from WebSMS!'
}
response = requests.post(url, data=data)
if response.status_code == 204:
print("Message sent successfully!")
else:
print(f"Error: HTTP {response.status_code}")
const axios = require('axios');
const data = new URLSearchParams({
userId: 'user@domain.co.nz',
password: 'yourpassword',
to: '6421234567',
body: 'Hello from WebSMS!'
});
axios.post('https://websms.co.nz/api/connexus/sms/out', data)
.then(response => {
if (response.status === 204) {
console.log('Message sent successfully!');
}
})
.catch(error => {
console.error('Error:', error.response?.status);
});
using System;
using System.Net.Http;
using System.Collections.Generic;
var client = new HttpClient();
var values = new Dictionary<string, string>
{
{ "userId", "user@domain.co.nz" },
{ "password", "yourpassword" },
{ "to", "6421234567" },
{ "body", "Hello from WebSMS!" }
};
var content = new FormUrlEncodedContent(values);
var response = await client.PostAsync(
"https://websms.co.nz/api/connexus/sms/out",
content
);
if ((int)response.StatusCode == 204)
{
Console.WriteLine("Message sent successfully!");
}
else
{
Console.WriteLine($"Error: {response.StatusCode}");
}
Our team is ready to help you migrate from Bulletin Connect:
Email: support@websms.co.nz
Phone: +64 27 4909-712
Hours: Monday-Friday, 9am-5pm NZST