B
Bloom SMS Gateway
High-Performance Distributed REST API
API Version v1.0.0 API Active

Bloom SMS API Documentation

Welcome to the Bloom SMS Gateway API. Our platform provides high-performance SMS delivery with two specialized processing lanes: OTP (Instant delivery) and Promotional (Bulk throughput).


1. Authentication

Every request must include your unique API Key. You can provide it in two ways:

  1. HTTP Header (Recommended): API-Key: your_key_here
  2. Query Parameter: ?api_key=your_key_here

2. API Endpoints

Purpose Endpoint Lane
OTP SMS POST/GET /api/v1/sms/send/otp Priority (Low Latency)
Promotional SMS POST/GET /api/v1/sms/send Standard (Bulk)
Bulk SMS POST/GET /api/v1/sms/send/bulk Standard (Bulk)
IMPORTANT: Always use the **/otp** endpoint for time-sensitive messages like login codes, password resets, and alerts.

3. Request Parameters

Parameter Type Required Description
to String/Array Yes Recipient(s). For bulk, use comma-separated string or array.
message String Yes The content of your SMS.
sender String No Your approved Masking or Sender ID. Use NOMASK for default.
gateway String No Target gateway provider (route_mobile, gennet). Auto-routed if omitted.
api_key String * Required if not passed via HTTP Header.

4. Examples

Send OTP (GET Request)

GET https://api.yoursite.com/api/v1/sms/send/otp?api_key=bloom_abc123&to=8801700000000&message=Your+OTP+is+1234&sender=BLOOM

Send Bulk (GET Request)

GET https://api.yoursite.com/api/v1/sms/send/bulk?api_key=...&to=88017000,88017001&message=Hello&sender=BLOOM

Send Bulk (POST Request - JSON)

URL: https://api.yoursite.com/api/v1/sms/send/bulk
Header: API-Key: bloom_abc123
Body:

{
    "to": "8801700000000, 8801700000001",
    "message": "Check out our new summer sale!",
    "sender": "PROMO"
}

5. API Response

Success Response (HTTP 200)

{
    "success": true,
    "data": {
        "to": "8801700000000",
        "message_type": "TEXT",
        "status": "queued",
        "lane": "otp"
    },
    "message": "SMS queued successfully."
}

Success Response (Bulk Endpoint)

{
    "success": true,
    "data": {
        "total_recipients": 2,
        "total_cost": 1.0,
        "status": "queued"
    },
    "message": "Bulk SMS processed successfully."
}

Error Response (HTTP 401/422/400)

{
    "success": false,
    "message": "Insufficient wallet balance.",
    "errors": {
        "error": "Organization balance is less than estimated cost (BDT 0.50)."
    }
}

6. Rate Limits & Best Practices

  • Unicode Support: The API automatically detects Unicode characters. Unicode messages are limited to 70 characters per SMS part.
  • Concatenation: Long messages are automatically split and charged per part.
  • Async Processing: Our API is asynchronous. A "queued" status means your message has been accepted and is being transmitted by our high-speed Go workers.

© 2026 Bloom SMS Platform