Key Takeaways
- A cURL bulk loop POSTs JSON to the control plane. GSM still leaves one Android SIM. Sleep between iterations.
- Staff MSISDNs only. Customer lists are not a bench. Honor STOP even in a “test” loop.
- Idempotency keys stop a retried shell from double-texting. Confirm live field names in Developer Center.
- Raise OEM/Android SMS rate ceilings so the phone can send consented traffic. That is not unlimited carrier SMS and not evasion.
- Priced by devices and SMS send volume. You use your own phone and operator SMS credit. Free’s 300 SMS lifetime vanishes in an unpaced loop.
A loop is still a radio
Live contract: Developer Center and SMS API documentation— typically POST /api/v1/messages with Bearer and deviceIds. Confirm names there. Hub: how an Android SMS gateway works.
If the shell script’s success metric is “until the operator filters us,” delete the script.
Safe loop vs reckless hammer
| Safe | Reckless | |
|---|---|---|
| Targets | Staff file | CRM dump |
| Concurrency | One POST, sleep | xargs -P vs one SIM |
| STOP | Honor, abort row | Skip suppression “for the run” |
| Success | DLR + still paired | HTTP 201 flood |
cURL talks HTTPS, not GSM
Conceptual shape (placeholders only):
curl -sS -X POST "$API/api/v1/messages" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"to":"$MSISDN","text":"$BODY","deviceIds":["$DEVICE"]}'
sleep "$SECONDS"Field names may differ — Developer Center wins. Pairing: device setup. DLR: delivery reports. Bulk product: CSV import after consent, not a hidden loop around it.
Pace a staff-only send loop
- Put live fields in env, not in git. BASE URL, Bearer token, deviceIds from Developer Center. Never commit the token.
- Use a labeled staff file. Not a CRM export. One MSISDN per line you own.
- POST one message, then sleep. Pace at or below the OEM ceiling and operator fair-use. Dual SIM is not two loops.
- Send an idempotency key per row. Confirm the live header/field. A Ctrl+C restart must not double-send.
- Stop on 429, unpaired, or DLR collapse. Those are saturation. Do not “find the filter.”
- Record platform volume and airtime. Finance should see the loop. It is not free SMS.
Longer caution: load test carefully. Ethics: spam-filter ethics.
OEM ceilings, not filter games
Raise Android/OEM SMS rate ceilings if the handset throttles consented send. Carrier fair-use still applies. Do not snowshoe SIMs. Multi-device is extra batteries, not extra hammers. Dual SIM ≠ two loops.
Each iteration bills twice
Service pricing is based on device count and total SMS sent through the gateway. You need a working Android phone with a SIM and SMS credit from your mobile operator. Operator message costs are yours—we do not sell carrier SMS balance. Platform volume + pulsa. Paid from $19/month. Device and SMS volume pricing. Volume worksheet: SMS volume planning.
Next steps
Env secrets, staff file, sleep, idempotency, stop conditions. Then prefer the CSV feature for consented campaigns instead of growing a shell novel.
Related product pages
Jump to the live product docs for this topic—not another long-form article.
- bulk SMS from Excel and CSVSpreadsheet campaigns
- bulk SMS with consent best practicesHigh-volume outreach
- SMS API documentationLive endpoint reference
- device and SMS volume pricingPlans and allowances




