Docs/Changelog

Changelog

All notable changes to the BulkSMSRates API, newest first. Following Keep a Changelog conventions.

Legend:AddedImprovedFixedSecurityDeprecatedBreaking

v1.5.0

Latest

WhatsApp Business API, auto top-up billing, performance indexes, and API documentation portal.

Added

WhatsApp Business API — send template messages, manage approved templates, list conversations, and receive inbound events via webhook.

Added

Auto top-up billing — configure balance thresholds and automatic Stripe charges to keep your wallet funded.

Added

Usage export endpoint (GET /v1/billing/usage/export) — download a CSV of your usage for any date range.

Added

API Documentation Portal at /docs — interactive reference with 7 language examples, copy-to-clipboard, pagination guide, webhook signature verification, and SDK examples.

Added

Changelog page at /docs/changelog.

Added

Notification preferences endpoint (GET/PATCH /v1/settings/notifications).

Improved

Performance: added B-tree and partial indexes on messages, campaigns, contacts, billing_transactions tables — 3–10× query speedup on dashboard.

Improved

DLR stats endpoint now cached in Redis for 60 seconds per tenant. Message logs first page cached for 10 seconds.

Improved

Reports endpoint now supports filtering by campaign_id, destination number, and date range.

Security

Webhook timestamp validation — requests older than 5 minutes are now rejected automatically.

v1.4.0

Billing enhancements, dynamic rates, and complete admin API.

Added

Stripe integration — create checkout sessions, handle webhooks, download PDF invoices.

Added

Dynamic rates system — rates per country/carrier can now be updated without a code deploy.

Added

Admin billing endpoints: revenue overview, per-tenant billing view, transaction export.

Added

Admin rate management: bulk import (CSV), rate history per country code, individual rate CRUD.

Added

Campaign approval workflow — campaigns over a configurable recipient threshold require admin approval before sending.

Added

Audit log (GET /v1/admin/system/audit) — all admin actions recorded with actor, IP, and timestamp.

Improved

Billing transactions now include a breakdown field showing cost per segment.

Improved

Invoice PDF generation with professional letterhead, VAT breakdown, and QR code.

Fixed

Race condition in wallet balance deduction when concurrent bulk sends were submitted simultaneously.

Fixed

Incorrect segment count for messages containing emoji (now correctly treated as Unicode).

v1.3.0

Contact management system, groups, tags, opt-out enforcement, and CSV import.

Added

Contact management API — create, update, delete contacts with custom fields.

Added

Contact groups — organise contacts into lists for targeted campaigns.

Added

Tags — flexible label system for segmentation.

Added

CSV import for contact groups (POST /v1/contacts/groups/{id}/import).

Added

Opt-out list — STOP replies automatically recorded and enforced on every send.

Added

Opt-out webhook event — receive real-time notifications when someone opts out.

Improved

Bulk send now validates against opt-out list before accepting, returning a rejected count in the response.

Fixed

Contact import: duplicate phone numbers now deduplicated rather than inserted twice.

v1.2.0

Campaigns, scheduled sending, WebSocket real-time events, and sender ID management.

Added

Campaign API — named batches with state machine (draft → approved → sending → completed).

Added

Scheduled sending — set scheduled_at on any send request (up to 30 days ahead).

Added

WebSocket endpoint (wss://app.bulksmsrates.com/ws) for real-time DLR, campaign progress, and balance updates.

Added

Sender ID management — request and manage approved alphanumeric sender IDs per country.

Added

Message templates API — save reusable message bodies with variable placeholders.

Added

Campaign pause / resume — stop a campaign mid-send and continue later.

Improved

Template variable substitution now supports nested objects and array indexing.

Improved

WebSocket heartbeat: server sends a ping every 30s, closes after 3 missed pongs.

v1.1.0

Webhooks, SMPP access, reporting endpoints, and account settings.

Added

Webhook management — configure HTTP endpoints to receive DLR events.

Added

HMAC-SHA256 webhook signature verification with timestamp replay protection.

Added

Webhook retry policy: 3 attempts with 5s → 30s → 300s backoff.

Added

SMPP v3.4 access credentials — get SMPP host, system_id, and password via API.

Added

Reports API: message logs (GET /v1/reports/messages) with date/status/destination filters.

Added

DLR stats (GET /v1/reports/dlr-stats) — delivery rate by period.

Added

Account profile (GET/PATCH /v1/settings/profile).

Added

Rate lookup endpoints — check per-country rates for your account tier.

Security

API key secrets now only returned once at creation. Subsequent reads show masked key only.

v1.0.0

Initial production release. Core SMS API, authentication, and billing.

Added

Core SMS send API (POST /v1/sms/send) with E.164 validation.

Added

Bulk SMS send (POST /v1/sms/bulk) — up to 10,000 recipients per call.

Added

Message status and history endpoints.

Added

JWT authentication with access + refresh token rotation.

Added

API key + secret authentication for server-to-server use.

Added

Google OAuth 2.0 sign-in.

Added

Prepaid wallet billing model with GBP as base currency.

Added

Transaction history and invoice listing.

Added

Rate limiting via token bucket (100 req/s default, configurable).

Added

Sandbox environment with bsms_test_ keys — no real SMS sent.

Added

Cursor-based pagination on all list endpoints.

Added

Consistent error response format with typed error codes.

Added

Health and readiness endpoints for infrastructure monitoring.

Need support? Email [email protected] or visit the documentation.