Bulk SMS API

Bulk SMS API that developers ship in an afternoon

BulkSMSAPI is a bulk SMS API for developers: send one text or a batch of up to 10,000 numbers per request to 227 countries over REST, follow every message with signed webhooks, and pay per message from a prepaid balance.

  • Pay per message
  • No monthly fee
  • Signed webhooks

One SMS to the United States costs $0.00507 per segment.

BulkSMSAPI at a glance

What it is
A REST API and web console for sending bulk SMS: one message, a batch of thousands, or a campaign from a pasted list.
Coverage
227 countries and territories, each with its own price per segment.
Price
From $0.00247 per segment (Brazil), $0.00507 to the United States. No monthly fee, no setup fee.
Requests
JSON over HTTPS, Bearer API keys, up to 10,000 recipients per batch request and 600 requests per minute per key.
Delivery reports
Signed webhooks for every delivered or failed message, 10 attempts per event, plus GET endpoints for polling.
Scheduling
send_at from 2 minutes to 45 days ahead; scheduled batches cancel with a full refund.
Text
GSM-7 and Unicode (UCS-2), long messages up to 10 segments, merge fields and personal text per recipient.
Payment
Prepaid balance from $40, topped up through a hosted checkout. Failed messages return to the balance.

Building blocks

Everything a bulk SMS integration needs

Six parts of one API, all priced per message and all visible in the same console. Use one, or wire them together into a full notification pipeline.

Single messages

POST /v1/messages sends one text to one number and answers with a message id at once. Login codes, password resets and payment alerts go out the moment your code calls it.

Send a message

Batches

POST /v1/batches takes up to 10,000 numbers in one request, with one text for everyone or a personal text per number. Duplicates and bad numbers are set aside and listed in the answer.

Send a batch

Signed webhooks

Every delivered or failed message calls your endpoint with a signed JSON event. Each event gets 10 attempts over about 24 hours, so a deploy never costs you a status.

Set up webhooks

Pricing API

GET /v1/pricing returns the price per segment for every country, without a key. Show costs in your own product, or check a route before a large send.

Read prices by API

Scheduling

Add send_at to any request and the batch waits until that minute, from 2 minutes up to 45 days ahead. Cancel it before it starts and the full cost returns to the balance.

Schedule a batch

Console for the whole team

Paste or upload a list, write the text, preview it per recipient and send without code. Every batch from the API shows up in the same console with live counts.

See the console

One bulk SMS API for codes, alerts and campaigns

Transactional texts and marketing campaigns use the same endpoints, the same price list and the same delivery events. The difference is only how many numbers you put in one request.

Transactional messages

One event in your system, one text to one person, sent within seconds.

  • POST /v1/messages answers 202 with the message id, the price and the status before the text leaves our queue.
  • Put your own order or user id in reference and it comes back in every webhook for that message.
  • Retry safely: the same Idempotency-Key returns the first answer for 24 hours instead of sending twice.
Send a message

Bulk campaigns

One text, or one text per person, to a list of thousands in a single request.

  • POST /v1/batches takes 10,000 numbers per request; the console takes 50,000 per campaign from a paste or a CSV file.
  • Numbers are cleaned for you: spaces, dashes and 00 prefixes are fixed, duplicates and invalid numbers are listed and skipped.
  • Estimate first with POST /v1/estimates: total cost, segments and a split by country, without sending anything.
Send a batch

What teams send through the SMS API

Real messages from real systems: each one is a single API call or a scheduled batch, priced per segment to the country of the number.

Login and sign-up codes

Send a one-time code from your auth service with POST /v1/messages and read the delivery event before the user asks for a new one.

Order and delivery updates

Your order system calls the API when a parcel leaves the depot, with the time window and the tracking code in one short text.

Appointment reminders

A nightly job builds tomorrow's list and sends one batch with a personal text per patient or client, scheduled for the evening before.

Payment and account alerts

Card payments, transfers and new device sign-ins trigger a text in the same second, priced per segment and logged with its status.

Sales and launch campaigns

Send 50,000 numbers from the console or batches of 10,000 from your CRM, with an opt-out line added to every text.

Service and outage notices

Tell every affected customer at once when a service, a flight or a delivery route changes, and follow up when it is fixed.

Send a batch with one request

Create an API key in the console, export it as BULKSMSAPI_KEY and run any of these. Each sample is a complete program that uses only the standard library, and the answer is the batch with its id, cost and live counts.
Create a batch
curl https://bulksmsapi.cc/v1/batches \
  -H "Authorization: Bearer $BULKSMSAPI_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: spring-sale-0412" \
  -d '{
    "name": "Spring sale",
    "text": "Spring sale at Northwind: 20% off until Sunday. Opt out: northwind.example/sms",
    "to": [
      "+14155550123",
      "+447400123456",
      "+4915123456789"
    ]
  }'

Pricing

Bulk SMS prices by country

Every country has one price per message segment, in US dollars, the same through the API and the console. A plain text of up to 160 characters is one segment; longer or Unicode texts use more, and the price list shows the cost before you send.
Country
Per segment
$0.00507
10,000 messages
$50.70
SMS API to United States

How the price of a send is worked out

  • Price per segment of the number's country, times the segments of the text, times the number of recipients. Nothing else is added.
  • The cost is taken from your balance when the request is accepted, so a batch never stops halfway for lack of funds.
  • Messages that fail are refunded to the balance automatically, and a scheduled batch you cancel is refunded in full.
  • Prices are read live from GET /v1/pricing, so your own product can show the same numbers.
Full price list

227 of 227 countries

CountryPer SMS
Afghanistan$0.03117
Albania$0.01357
Algeria$0.02267
American Samoa$0.02177
Andorra$0.00987
Angola$0.00987
Anguilla$0.01297
Antigua and Barbuda$0.01327
Argentina$0.01417
Armenia$0.01417
Aruba$0.01387
Australia$0.00507

Pay as you go from a prepaid balance

Top up any amount from $40 to $5,000 and spend it on any country at any pace. The balance has no expiry date and no monthly charge, and the first top-up adds a bonus.
$40+10% first top-up

Balance $44 on the first top-up

About 8,678 one-segment messages to the United States

$100+20% first top-up

Balance $120 on the first top-up

About 23,668 one-segment messages to the United States

$200+25% first top-up

Balance $250 on the first top-up

About 49,309 one-segment messages to the United States

$300+30% first top-up

Balance $390 on the first top-up

About 76,923 one-segment messages to the United States

$500+35% first top-up

Balance $675 on the first top-up

About 133,136 one-segment messages to the United States

$1,000+40% first top-up

Balance $1,400 on the first top-up

About 276,134 one-segment messages to the United States

Create account

Message counts are for the United States at $0.00507 per segment. How payments work

Limits written for high volume

The numbers below are the limits in the code that runs the API, and the docs list each one with the header or error that shows it.

10,000

numbers per batch request

Send a list in one call, split by country and priced per recipient.

600

requests per minute per key

Rate limit headers on every answer show what is left in the window.

1,200

messages per minute per account

The queue hands messages to the route in order, every two seconds.

From account to delivery report in four steps

No sales call and no contract: the account is a key made in your browser, and the API opens after the first top-up.
  1. Step 1

    Create an account

    Your browser makes an account key. Save it once; it is the only login, with no email or password to manage.

  2. Step 2

    Top up the balance

    Add from $40 through the hosted checkout. The balance shows in the console and through GET /v1/balance.

  3. Step 3

    Create an API key

    Name a key per app or environment, copy it once, and revoke it any time without touching the others.

  4. Step 4

    Send and listen

    Call /v1/messages or /v1/batches and add a webhook URL: delivered and failed events arrive signed.

Send your first batch today

Create an account in seconds, top up from $40 and call the API from any language that speaks HTTPS. Prices start at $0.00247 per message.

Bulk SMS API for Developers: REST, Webhooks, 227 Countries | BulkSMSAPI