Skip to content

Send your first SMS

Two options: the portal composer, or the REST API. Either way the message is sent by your paired Android phone. In test mode (the default for new workspaces) delivery is simulated and nothing leaves the phone — switch to live in Profile when you are ready.

Option A — Portal composer

  1. Open Compose.
  2. Pick the phone to send from and type the recipient in E.164 format (e.g. +15551234567).
  3. Type the message — the character and segment counter updates as you type — and press Send.
  4. Follow its status in the Inbox, which refreshes every 15 seconds.

Option B — REST API

Create a key in Settings → API keys, then:

curl -X POST https://api.99billingsolutions.com/v1/messages/send \
  -H "x-api-key: $SMS_BRIDGE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from_number": "+15550100001",
    "to_number":   "+15550100002",
    "content":     "Hello from SMS Bridge!"
  }'

The API answers 202 Accepted:

{
  "status": "success",
  "message": "Request handled successfully",
  "data": {
    "id": "0b6f0c7e-8f1d-4a57-9d3a-2f6c1e9b1a42",
    "status": "queued",
    "from_number": "+15550100001",
    "to_number": "+15550100002",
    "segments": 1,
    "encoding": "GSM-7",
    "expires_at": "2026-09-26T11:00:00+00:00"
  }
}

Message statuses

  • queued — accepted, waiting for the phone.
  • scheduled — waiting for its scheduled_for time.
  • dispatched — handed to the phone, which picks it up on its next wake-up or poll (within about 30 seconds while the app is open).
  • sent — the phone's radio accepted it.
  • delivered — the carrier confirmed delivery.
  • sent_no_report — sent, but no delivery report arrived within 24 hours (some carriers never send one).
  • failed — the phone reported a failure after all retries; see failure_reason.
  • expired — the phone did not send it in time (usually because it was offline).