Changelog
Product updates, API improvements, and developer-facing changes in Bulkit.
Last updated · Markdown version
Stay up to date with Bulkit product updates, API improvements, platform enhancements, and documentation changes.
Smart Bundles (24-Hour Discounted SMS Bundles)
To lower the entry price point for SMEs and enable cost-effective flash campaigns, Bulkit introduced Smart Bundles:
- Discounted Pricing Tiers: Purchase bundles starting at KSh 100 for 125 SMS (KSh 0.80/SMS) up to KSh 2,000 for 5,000 SMS (KSh 0.40/SMS).
- Isolated Credit Lifecycle: Bundle credits expire 24 hours from purchase time, while regular cash float remains non-expiring and untouched.
- Instant One-Click Purchase: Activate bundles directly from
/bundlesusing available wallet balance.
Priority Consumption Engine (FEFO)
- First-Expiring, First-Out: The dispatch pipeline automatically exhausts active bundle credits with the earliest expiration deadline before debiting cash float.
- Seamless Hybrid Overflow: Broadcasts exceeding active bundle credits automatically draw the remainder from your cash wallet without failing.
- Zero-Cash Balance Dispatch: Accounts with active bundle credits can dispatch SMS via dashboard and API even when their cash balance is KSh 0.00.
- Automatic Failure Refunds: Credits for failed or rejected message dispatches are automatically refunded back to the originating bundle.
API v2 Balance & Transparent Dispatch
bundle_creditsin Account Balance:GET /api/v2/account/creditsnow returnsbundle_creditsrepresenting total active unexpired bundle units.- Zero Code Changes for API Dispatch: Calls to
POST /api/v2/messages/smsandPOST /api/v2/messages/sms/bulktransparently benefit from active bundle credits and returncost: 0.00when covered.
Dynamic Admin Bundle Management
- Admin Bundle Catalog: Administrators can configure and manage daily, weekly, monthly, holiday, and promotional bundles via
/admin/bundles. - Comprehensive Auditing: Real-time tracking of bundle purchases, unit consumption, and expirations via
/admin/bundles/activity.
Strict Sender ID Authorization on SMS API
To prevent unauthorized sender usage and protect brand integrity, Bulkit now strictly enforces account-level Sender ID ownership across all SMS endpoints (/api/v2/messages/sms, /api/v2/messages/sms/bulk, and legacy endpoints):
- No Silent Defaulting: Requests specifying an unauthorized, unassigned, inactive, or mistyped sender ID or sender name now return HTTP
400 Bad Request(Invalid sender ID) rather than silently defaulting to the system shortcode (BULK_IT). - Explicit System Sender: To send using Bulkit's default system shortcode, callers must explicitly provide
"sender": "BULK_IT". - Defense-in-Depth Verification: Sender resolution and queueing layers verify client authorization before deducting wallet credits or enqueueing messages.
Multi-Client Sender ID Assignment
Platform administrators can now assign a single custom or dedicated Sender ID to multiple client accounts simultaneously:
- One-to-Many Assignment: Map a shared Sender ID across multiple sub-accounts or organizations.
- Admin Multi-Client Dialog: Search, multi-select, and assign/unassign clients directly from
/admin/sender-ids. - Seamless Resolution: Assigned clients can immediately send using either the alphanumeric name or the assigned Sender UUID.
WhatsApp API v2
Bulkit now offers native WhatsApp integration for automated notifications, customer support, and high-throughput broadcasts:
- Direct Text Messaging: Send WhatsApp messages using
POST /api/v2/messages/whatsapp. - Media & Documents: Stream media attachments up to 50MB via remote URL or direct multipart file upload (
images,videos,audio,PDF documents). - Bulk Broadcasts: Dispatch personalized campaigns with curly brace placeholders (
{first_name}) and custom variable substitution. - Inbound Message Streaming: Query chat history and receive inbound customer replies with decrypted media downloads.
- Device Session Management: Real-time QR code linking and connection health monitoring (
/api/v2/whatsapp/status).
Account-Level Shared Webhooks
Webhook configuration has been simplified:
- Dedicated Webhooks Tab: Set global DLR Webhook URL and Inbox Webhook URL under
/api-keysacross all keys. - No Webhook Secrets: Removed complex signing secrets in favor of frictionless integration.
- Standardized Headers: Webhook payloads are tagged with
X-Bulkit-Webhook-Event(sms.delivered,sms.failed,sms.blacklisted,whatsapp.receipt.updated,sms.received,whatsapp.message.received).
High-Precision Float Balances & API v2 Refinements
- Float Wallet Balances: Account credit balances now return exact floating-point numbers (e.g.
2.97 KES), supporting fractional micro-billing. - Simplified API Key Creation: Generating new keys only requires a descriptive Key Name.
- Dedicated Single SMS Endpoint: OTPs and alerts can now be posted directly to
POST /api/v2/messages/smswith a singlemobilestring. - UUID & Flex Shortcode Support:
sender_idseamlessly accepts both modern UUID strings and legacy shortcode integers.
Contacts API
Bulkit now supports contact management via API.
New endpoints include:
- fetching contact groups
- creating a single contact
- creating contacts in bulk
- deleting contacts
SMS API validation improvements
SMS requests now return clearer, standardized errors for common send failures:
Invalid credentialsInsufficient balanceInvalid numberInvalid sender IDInvalid messageRestricted send time
Documentation improvements
The documentation site now includes:
- top-level sections for Documentation, Guides, API Reference, and Changelog
- a contextual AI menu with one-click copy support
- expanded Contacts API coverage
Scheduled SMS reliability improvements
Scheduled SMS processing was improved to ensure due messages are picked up correctly and handed off to the active queue provider.
QuickSMS request and response logging
Bulkit now stores QuickSMS API request and response logs for better operational visibility and support workflows.
API key management upgrades
Managed API keys now support:
- multiple keys per account
- enable and disable controls
- webhook configuration fields
- last-used metadata
Outbox filtering improvements
The SMS outbox gained improved filtering for:
- network
- sender ID
- single date
- date range
- sort order
Notifications improvements
Dashboard notifications now better reflect SMS sent and failed events, with clearer unread counts and better status visibility.
Message rendering consistency
Personalized SMS placeholders are now rendered earlier in the send flow so outbox and history views reflect final message content more reliably.