Skip to content

Bulk send & campaigns

Two ways to reach many people:

  • Bulk send — the same text to up to 500 numbers in one call.
  • Campaigns — personalised text ({{first_name}}) to up to 10,000 recipients or contact tags, with scheduling, pause and resume.

Bulk send

POST /v1/messages/bulk-send

curl -X POST https://api.99billingsolutions.com/v1/messages/bulk-send \
  -H "x-api-key: $SMS_BRIDGE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "from_number": "+15550100001",
    "to_numbers":  ["+15550100002", "+15550100003"],
    "content":     "Store closes early today at 5pm."
  }'

Fields: from_number (required), to_numbers (1–500 E.164 numbers), content (required), optional device_id. The response lists the new message ids:

{ "status": "success", "data": { "count": 2, "message_ids": ["…", "…"] } }

Campaigns

POST /v1/campaigns

curl -X POST https://api.99billingsolutions.com/v1/campaigns \
  -H "x-api-key: $SMS_BRIDGE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Order shipped",
    "from_number": "+15550100001",
    "body": "Hi {{first_name}}, your order {{order_id}} has shipped.",
    "recipients": [
      { "to": "+15550100002",   "vars": { "first_name": "Ali",  "order_id": "A12" } },
      { "to": "+15550100003", "vars": { "first_name": "Sana", "order_id": "A13" } }
    ],
    "launch_now": true
  }'
FieldNotes
nameRequired, up to 120 characters.
from_numberRequired. One of your paired phones.
bodyRequired. {{variable}} tokens are filled from each recipient's vars, then from the matching contact (first_name, last_name, email, custom fields). Missing values become empty.
recipientsList of { "to", "vars" }.
contact_tagsAlso send to every contact with any of these tags.
scheduled_forOptional start time (ISO 8601).
launch_nowfalse saves a draft.

Opted-out contacts and premium-rate numbers are skipped automatically; the response says how many. Control a running campaign with POST /v1/campaigns/{id}/pause, /resume and /cancel, and read progress from GET /v1/campaigns/{id}.

Pace

Each phone sends at most 6 messages a minute and 25 per 30 minutes (about 1,200 a day) so Android does not block it. Large sends simply take longer — pair more phones to go faster.

In the portal

Campaigns → New campaign builds the same request with a form: paste numbers (with optional key=value variables per line), pick contact tags, and launch or schedule it.