SSMSHub

DOCUMENTATION

SMSHub API Reference

Everything you need to integrate Ethiopian SMS delivery into your application. All endpoints return JSON and accept JSON. Authentication is via Bearer token.

Base URL
https://sms.hizcore.com/index.php?endpoint=sms

Quick start

  1. Create an account and verify your phone number.
  2. Copy your API key from Dashboard → API access.
  3. POST to ?endpoint=sms with your key and message.
curl -X POST 'https://sms.hizcore.com/index.php?endpoint=sms' \
  -H 'Authorization: Bearer sk_live_your_key' \
  -H 'Content-Type: application/json' \
  -d '{"msisdn":"0911234567","text":"Hello from SMSHub"}'

Authentication

Every request must include your API key as a Bearer token in the Authorization header.

Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxx

Missing or invalid keys return 401 Unauthorized.

Send SMS

POST https://sms.hizcore.com/index.php?endpoint=sms

Headers

  • AuthorizationBearer <your_api_key>
  • Content-Typeapplication/json

Body parameters

FieldTypeRequiredDescription
msisdnstringYesRecipient: 09xxxxxxxx or 07xxxxxxxx
textstringYesMessage body. Max 160 characters.

Example request

{
  "msisdn": "0911234567",
  "text":   "Your OTP is 4821"
}

Success response

{
  "status": "success",
  "data": {
    "msisdn":            "0911234567",
    "message_status":    "sent",
    "credits_remaining": 49
  }
}

Every successful send decrements your account by 1 credit. Failed sends do not consume credits.

Error codes

HTTPMeaning
200Success
401Invalid or missing API key
402Insufficient credits
403Account not verified
405Wrong HTTP method
422Invalid msisdn or text
502Upstream provider error

Code examples

cURL

curl -X POST 'https://sms.hizcore.com/index.php?endpoint=sms' \
  -H 'Authorization: Bearer sk_live_your_key' \
  -H 'Content-Type: application/json' \
  -d '{"msisdn":"0911234567","text":"Hello"}'

PHP

<?php
$ch = curl_init('https://sms.hizcore.com/index.php?endpoint=sms');
curl_setopt_array($ch, [
    CURLOPT_POST           => true,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => [
        'Authorization: Bearer sk_live_your_key',
        'Content-Type: application/json'
    ],
    CURLOPT_POSTFIELDS => json_encode([
        'msisdn' => '0911234567',
        'text'   => 'Hello'
    ])
]);
echo curl_exec($ch);

Node.js

await fetch('https://sms.hizcore.com/index.php?endpoint=sms', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer sk_live_your_key',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({ msisdn: '0911234567', text: 'Hello' })
}).then(r => r.json());

Python

import requests
r = requests.post(
    'https://sms.hizcore.com/index.php?endpoint=sms',
    headers={'Authorization': 'Bearer sk_live_your_key'},
    json={'msisdn': '0911234567', 'text': 'Hello'}
)
print(r.json())

Rate limits & rules

  • Rate limit: 60 requests per minute per key.
  • Message max 160 chars — longer is rejected (422).
  • Numbers must match 09xxxxxxxx or 07xxxxxxxx.
  • SMSHub does not auto-retry — retry from your side as needed.

Chapa checkout flow

When you click Buy now on the billing tab, SMSHub:

  1. Creates a pending transaction with a unique tx_ref.
  2. Renders an auto-submitting HTML form pointing to Chapa's hosted page: https://api.chapa.co/v1/hosted/pay
  3. Sends your browser there automatically.
  4. After you pay, Chapa redirects to ?page=payment-return&tx_ref=...
  5. SMSHub calls Chapa's /transaction/verify/{tx_ref} using the secret key.
  6. If verified, credits are added — idempotent, so double-callbacks are safe.

Webhook

Point your Chapa dashboard webhook to:

https://sms.hizcore.com/index.php?endpoint=chapa

The webhook re-verifies every transaction with Chapa's API before crediting. The same idempotency guard prevents double-credits between the webhook and the return URL.

Credits & billing

PackagePricePer SMS
500 SMS300 ETB0.600 ETB
2,000 SMS1,000 ETB0.500 ETB
5,000 SMS2,400 ETB0.480 ETB
10,000 SMS4,700 ETB0.470 ETB
25,000 SMS11,500 ETB0.460 ETB
50,000 SMS22,000 ETB0.440 ETB