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 |
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
}
}
ACCEPTD | Message accepted by network |
ENROUTE | Message in transit |
DELIVRD | Message delivered successfully |
UNDELIV | Message undeliverable |
EXPIRED | Message expired |
FAILED | Message failed |
<?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);
?>
# 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