SDKs and libraries
Official Hellio Messaging clients for six languages. Same token, same base URL, typed responses and errors, no HTTP boilerplate.
Every SDK wraps the full API: SMS, OTP and 2FA (SMS / voice / email, plus WhatsApp on PHP), voice broadcasts, number lookup (HLR), email verification, pricing, balance and webhooks. Recipients can be a single number, a comma-separated string or a list, and each library maps HTTP errors to typed exceptions so you catch exactly what you care about.
Install
Pick your language and pull in the package.
Authenticate once
Generate a token, then let the SDK read it from the environment.
Create a scoped token from your dashboard under Settings → API Keys & Webhooks. Every SDK reads the same three variables when you omit the constructor arguments, so you rarely hard-code anything:
HELLIO_API_TOKEN=your-token-here
HELLIO_BASE_URL=https://api.helliomessaging.com/v1
HELLIO_DEFAULT_SENDER=HellioSMS
Prefer explicit configuration? Pass token, baseUrl and defaultSender straight to the client constructor instead. See Authentication for scopes, idempotency and rate limits.
Send an SMS
The same call in every language.
curl -X POST https://api.helliomessaging.com/v1/sms/send \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"recipients":["233241234567"],"sender":"HellioSMS","message":"Hello from Hellio!"}'
import { Hellio } from 'helliomessaging-nodejs';
const hellio = new Hellio({ token: process.env.HELLIO_API_TOKEN });
await hellio.sms('233241234567', 'Hello from Hellio!', 'HellioSMS');
from hellio import Hellio
client = Hellio(token="your-token-here")
client.sms("233241234567", "Hello from Hellio!", sender="HellioSMS")
use Hellio\HellioMessaging\Facades\HellioMessaging;
HellioMessaging::sms('233241234567', 'Hello from Hellio!', 'HellioSMS');
Go
client := hellio.NewClient("your-token-here")
client.SMS(context.Background(), []string{"233241234567"}, "Hello from Hellio!", "HellioSMS", "")
Ruby
require "hellio"
client = Hellio::Client.new(token: "your-token-here")
client.sms("233241234567", "Hello from Hellio!", sender: "HellioSMS")
.NET
using Hellio.Messaging;
var hellio = new HellioClient(token: "your-token-here");
await hellio.SendSmsAsync("233241234567", "Hello from Hellio!", "HellioSMS");
A 202 Accepted means the campaign is queued. Every method returns the decoded JSON (payloads live under the data key), except the boolean verify helper. The other channels use the same client: OTP (otp / verifyOtp), voice (voice), number lookup (lookup) and email verification (verifyEmail).
What you get
- Full API coverage — SMS, OTP and 2FA, voice, number lookup, email verification, pricing, balance and webhook management.
- Typed errors — invalid token (401), insufficient balance (402), validation (422) and rate limit (429) each map to their own exception type.
- Environment fallbacks — read
HELLIO_API_TOKEN,HELLIO_BASE_URLandHELLIO_DEFAULT_SENDERautomatically. - Recipient normalization — pass one number, a comma-separated string or an array.
- No heavy dependencies — the Go, Ruby and Python clients use only their standard libraries; Node uses the built-in
fetch.
Source and versioning
Open source on GitHub, released under MIT.
Each SDK lives in its own repository under github.com/HellioSolutions, follows Semantic Versioning, and ships a CHANGELOG. Found a bug or want a method added? Open an issue on the relevant repo, or talk to our team.
Working in a language we don't ship yet? Every SDK is a thin wrapper over the REST API, so you can call it directly. Start with the Quickstart and the API Reference.
