Business messaging
Customer announcements and updates, from one place.
Use the dashboard for one-off messages and the API for high-volume sending. Every message is logged, and credits are shared across both.
Dashboard and API
Non-technical teams send from the dashboard; developers integrate the same account through the API.
Permission-based sending
SMSHub is for messages recipients expect. Verified senders and content moderation protect deliverability for everyone.
Transparent billing
Prepaid ETB packages, per-message pricing that drops with volume, and a full payment history.
curl -X POST 'https://sms.hizcore.com/api/sms' \
-H "Authorization: Bearer sk_live_your_key" \
-H 'Content-Type: application/json' \
-d '{"msisdn":"0911234567","text":"Your verification code is 482193. It expires in 5 minutes."}'<?php
$ch = curl_init('https://sms.hizcore.com/api/sms');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . getenv('SMSHUB_API_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'msisdn' => '0911234567',
'text' => 'Your verification code is 482193. It expires in 5 minutes.',
]),
]);
$body = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($status !== 200) {
error_log('SMSHub ' . $status . ': ' . ($body['message'] ?? 'unknown'));
}const res = await fetch('https://sms.hizcore.com/api/sms', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.SMSHUB_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
msisdn: '0911234567',
text: "Your verification code is 482193. It expires in 5 minutes.",
}),
});
const body = await res.json();
if (!res.ok) throw new Error(`${body.error_type}: ${body.message}`);
console.log(body.data.credits_remaining);import os, requests
res = requests.post(
'https://sms.hizcore.com/api/sms',
headers={'Authorization': f"Bearer {os.environ['SMSHUB_API_KEY']}"},
json={'msisdn': '0911234567', 'text': "Your verification code is 482193. It expires in 5 minutes."},
timeout=30,
)
body = res.json()
if res.status_code != 200:
raise RuntimeError(f"{body['error_type']}: {body['message']}")
print(body['data']['credits_remaining'])