Skip to content

Environments

Lisoloo runs two environments — sandbox and production. They are configuration-distinct, not URL-prefixed: the same paths exist at every base URL.

EnvironmentBASE_URL sourceKey prefixPurpose
SandboxSandbox URL on the Bloonio dev portal dashboardsk_test_*Self-serve test traffic. SMS are routed to a stub carrier; no real delivery, no real cost.
ProductionProduction URL on the Bloonio dev portal dashboardsk_live_*Live SMS. Real carriers. Real cost against your balance.

Every Lisoloo endpoint is mounted under /api/v1/lisoloo/sms-api/. The unauthenticated /health probe is available in both environments.

There is no global “environment” toggle — the choice of base URL and the key prefix together determine the environment. A sandbox key (sk_test_*) cannot authenticate against the production base URL, and vice versa — that returns 401.

Terminal window
# Wrong — sandbox key against production base URL
curl $BASE_URL/api/v1/lisoloo/sms-api/balance \
-H "app-key: sk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
# → 401 with "Missing or invalid app-key"

Both environments are independent: separate API keys, separate webhook configuration, separate balance, separate rate-limit buckets. Rotating a sandbox key does not affect production, and vice versa.

Terminal window
# Sandbox (paste the sandbox BASE_URL from your dashboard)
export BASE_URL=<sandbox-base-url-from-dashboard>
export LISOLOO_API_KEY=sk_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
export LISOLOO_API_URL=$BASE_URL/api/v1/lisoloo/sms-api
# Production (paste the production BASE_URL from your dashboard)
export BASE_URL=<production-base-url-from-dashboard>
export LISOLOO_API_KEY=sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
export LISOLOO_API_URL=$BASE_URL/api/v1/lisoloo/sms-api
  • No real delivery. Sandbox SMS are accepted and walked through the full status lifecycle (pending → processing → sent → delivered) but no carrier traffic is generated. The recipient does not receive anything.
  • Test recipient numbers. Use any well-formed E.164 number — the sandbox doesn’t validate against a real number database. We recommend +243998857000 for documentation parity.
  • Webhooks fire normally. Sandbox callback_url calls and webhook_url POSTs are real HTTP requests from the gateway. Use a service like webhook.site to inspect them.
  • No real cost. total_cost on the response is computed but never deducted from your balance. The available_sms field on GET /balance reports the sandbox quota, not production credits.
  • Rate limits are the same. Don’t tune your test harness on sandbox-specific limits — they match production.