Skip to content

PH SMS API for developers

Send SMS in the Philippines with one API call.

OTPs, alerts and bulk SMS with webhooks for every delivery status. ₱0.50 per SMS, down to ₱0.35 at volume. Tax included.

10 free SMS credits when you verify your mobile · PHP SDK · Postman

Live request · POST /api/sms

$ curl -X POST https://unismsapi.com/api/sms \

-u $UNISMS_SECRET_KEY: \

-H "Content-Type: application/json" \

-d '{"recipient": "+639171234567", "content": "Your code is 482913", "sender_id": "YOUR_SENDER_ID"}'

{  "message": {    "reference_id": "msg_7f3c2a91-…",    "status": "pending",    "recipient": "+639171234567",    "sender_id": "YOUR_SENDER_ID"  }}

Price per SMS

₱0.50

▼ down to ₱0.35 at volume

Delivered

✓ webhook: message.sent

UniSMS · now

Your code is 482913

Delivers to Globe Smart DITO Sun TNT

Trusted by government agencies, schools, ISPs and clinics across the Philippines

  • Civil Service Commission
  • Investa Phil. Funds
  • Easinet Fiber
  • Academe Portal
  • Fix My Mac
  • Washhouse Washhouse Laundry Hub
  • Prime Medical Prime Medical Laboratory
  • STCJ STCJ MIS
  • Galaura Galaura Eye Clinic
Messages sent
10M+
PH networks
5
Credits expire
Never
Failed messages
Refunded

The life of a message

From POST to pocket in seconds.

Scroll to follow a single SMS from your code to your customer's phone, and back to you as a webhook.

  1. 01 · Your app

    One HTTP call

    POST /api/sms with your secret key over Basic auth. Any language that speaks HTTP.

  2. 02 · UniSMS API

    Accepted instantly

    Validated and answered instantly with a reference_id you can track.

  3. 03 · Routing

    Credits & routing

    Credits are reserved and the message is routed. Failed sends are refunded automatically.

  4. 04 · Carrier

    Direct to the network

    Routed straight to Globe, Smart, DITO, Sun and TNT. No batching delays.

  5. 05 · Handset

    Delivered with your name

    It lands on the phone under your registered Sender ID, no matter which network the recipient is on.

  6. 06 · Webhook

    You hear back

    message.sent, message.failed or message.retrying is POSTed to your server, with your metadata.

Paste & ship

Your first SMS is five lines away.

A plain JSON REST API with Basic auth. No SDK required, but there's one for PHP and a ready-made Postman collection.

No API key yet? Create a free account or see more samples.

Send an SMS · 7 languages

curl -X POST https://unismsapi.com/api/sms \
  -u YOUR_SECRET_KEY: \
  -H "Content-Type: application/json" \
  -d '{"recipient": "+639123456789", "content": "Hello from UniSMS!", "sender_id": "YOUR_SENDER_ID"}'

Bulk SMS, blast & OTP API

Bulk SMS, blasts and OTPs. Five endpoints.

A small surface you can learn in an afternoon. Unlimited API keys, your own metadata, webhooks for every status.

OTP ready POST

/api/sms

Send a message

One recipient, one call. Use it for alerts, notifications and OTPs.

POST /api/sms

{"recipient": "+639…", "content": "…",

"sender_id": "YOUR_SENDER_ID",

"metadata": {"order_id": "1042"}}

201 → reference_id, status

Announcements POST

/api/blast

Blast

The same message to many recipients in a single request. Needs your own Sender ID.

Personalised POST

/api/bulk

Bulk

A personalised message per recipient, sent in one batch. Needs your own Sender ID.

Status GET

/api/sms/:reference_id

Track

Look up the status of any message by its reference_id.

Balance GET

/api/account

Account

Check your credit balance before a big send.

More than SMS

Two-way conversations. AI agents that text.

Give your app a real Philippine mobile number, or let Claude, Cursor and n8n send SMS through our MCP server.

Virtual numbers

2-way SMS

Your own PH mobile number.

Replies arrive on your webhook, grouped into conversation threads with full history.

+63 917 ••• 4567

Hi! Is my order ready for pickup?
Yes! It's ready at the counter until 6PM.
Salamat! 🙏
// POST → your webhook
{
  "event": "txt.received",
  "id": "tmsg_3b1e…",
  "message": {
    "from": "+639171234567",
    "content": "Salamat! 🙏",
    "txt_conversation_id":
      "tcon_9a4f…"
  }
}

MCP server

AI-ready

Let your AI assistant send it.

Connect any Model Context Protocol client. Send SMS, check delivery and read your credits from a chat.

Text the on-call engineer at +639171234567: "API latency alert, please check."
unisms · send_sms(recipient: "+639171234567", …)
✓ Sent. Reference msg_c81d…. I'll check the status if you'd like.
Claude Cursor OpenCode n8n Setup guides →

Built for

Wherever people need to hear from you.

From local governments to online stores, teams across the Philippines rely on UniSMS to reach citizens, customers and communities.

LGUs

Local government units keeping constituents informed.

  • Emergency & disaster alerts
  • Public advisories & barangay announcements
  • Event, meeting & vaccination reminders
SMS for LGUs →

Schools & universities

Stay connected with students, parents, and faculty.

  • Grade & attendance notices
  • Class schedules & event reminders
  • Tuition reminders & closure alerts
SMS for schools →

ISPs & telecom

Keep subscribers updated and cut support calls.

  • Outage & maintenance notices
  • Billing & payment reminders
  • Technician dispatch updates
SMS for ISPs →

Clinics & medical labs

Reduce no-shows and tell patients when results are ready.

  • Appointment confirmations
  • Test result notifications
  • Follow-up care reminders
SMS for clinics →

E-commerce

Secure accounts and close more sales.

  • OTPs for logins, signups & checkout
  • Order & shipping alerts
  • Abandoned cart recovery
SMS for e-commerce →

Retail & branches

Turn one-time shoppers into regulars.

  • Promo & flash sale alerts
  • Pickup & reservation notices
  • Loyalty notifications
SMS for retail →

Automations & IoT

Machines, systems, and workflows that message on their own.

  • Automated alerts & monitoring
  • Device & sensor notifications
  • Workflow triggers from n8n, cron & scripts
SMS for automations →

And many more

If you message people at scale, UniSMS fits.

  • Banks, fintech & payments
  • Logistics & couriers
  • Hotels, restaurants, real estate & non-profits
Talk to sales →

SMS pricing in the Philippines

Pay less as you grow.

₱0.50 per SMS, tax included, dropping to ₱0.35 for top-ups of ₱180,000 and up. Top up from ₱500 with GCash, Maya, QR Ph or card. Credits never expire, and failed messages are refunded.

Price per SMS as your top-up grows ▼ ₱0.50 → ₱0.35

₱0.50 / SMS

top-ups up to ₱5,000

₱0.35 / SMS

₱180,000 and up

Estimate your costs

drag or pick a top up
₱500 ₱200,000
Top up
₱5,000
Credits
10,000
Per SMS
₱0.50

Prepaid · default

Pay as you go

  • ₱0.50 per SMS, down to ₱0.35 at volume
  • ₱500 minimum top up
  • Credits never expire
  • Full control of spend
Get your free API key

Postpaid · by application

Billed monthly

  • Fixed rate per SMS
  • Pay at the end of the month
  • No upfront top ups
  • Ideal for businesses, LGUs and schools
Talk to sales
Top up with GCash Maya QR Ph Visa Mastercard
  1. Step 01

    Sign up and test

    Get an API key and integrate right away on our default Sender ID while your own is approved. It reaches Globe and DITO, but can't send to Smart, TNT or Sun numbers until you have your own. Messages use your SMS credits.

  2. Step 02

    Top up

    Load from ₱500 with GCash, Maya, QR Ph or card. Credits never expire. Every ₱2,500 you top up also earns a SID token, which you need to apply for a Sender ID.

  3. Step 03

    Apply for your Sender ID

    Submit your business documents from the dashboard. Sender IDs have no fees, and telcos approve them in 7 to 14 business days. Then you're live on every network.

What's included

Everything in every plan.

No setup fees, no monthly minimums, no features behind an upsell.

Price per SMS
₱0.50, tax included
Volume rate
₱0.35 at ₱180,000+ top-up
Minimum top up
₱500
Credits
Never expire
Failed messages
Credits refunded
Sender IDs
No fees, unlimited, ₱2,500 top-up to apply
OTP messages
1 credit, same as any SMS
API keys
Unlimited
Delivery webhooks
sent, failed, retrying
Custom metadata
Echoed back on webhooks
Two-way SMS
Virtual numbers
Support
Email the team that built it

FAQ

Questions, answered.

Can't find what you need? Talk to a human.

What is the maximum length of a message?
Between 10 and 670 characters, billed as 1 to 5 credits by length (1 credit covers 160). Use standard text: emoji and most accented characters aren't supported. ñ is allowed but counts as two characters.
What phone number format should I use?
Use +639XXXXXXXXX or 09XXXXXXXXX. Both are accepted.
Is there a limit on recipients per request?
There's no per-request recipient limit, but requests are rate limited. To send to many numbers at once, use the /api/blast (same message) or /api/bulk (personalised messages) endpoints. Both work with any of your Sender IDs, including the default one.
Do my credits expire?
No. Credits never expire.
How do I top up?
From the dashboard, with GCash, Maya, QR Ph, Visa or Mastercard. The minimum top up is ₱500, and the more you load, the lower your rate per SMS.
Can I send before my Sender ID is approved?
Yes. New accounts get a default Sender ID so you can integrate and test while your own application is processed, and verifying your mobile number gives you 10 free SMS credits to try it. Messages on it use your SMS credits and reach Globe and DITO numbers. It can't send to Smart, TNT or Sun numbers (those are refused without using credits), so test with a Globe or DITO phone. For production, apply for your own Sender ID so messages reach every network under your name.
Am I charged for failed messages?
No. Credits for failed messages are returned to your account automatically.
Which networks do you support?
All Philippine networks: Globe, Smart, DITO, Sun, TNT and more.
Can I send OTPs?
Yes. Send your one-time passwords through the regular /api/sms endpoint at 1 credit, the same as any SMS. Generate and verify the code in your app.
What is a Sender ID?
A Sender ID is the name recipients see instead of a phone number, like your brand or organization name.
How do I get a Sender ID?
Top up at least ₱2,500 to earn a SID token, then apply from the dashboard with your business documents. Sender IDs are for registered businesses and organizations, and telco approval takes 7 to 14 business days.
How much is a Sender ID?
The Sender ID itself is free, with no monthly or maintenance fees, and you can have as many as you need. Each application uses one SID token, which you earn with every ₱2,500 you top up. The top-up stays in your account as SMS credits.
I'm a student. Can I get a Sender ID?
Students can use our restricted Sender ID for projects and capstones. It reaches Globe and DITO, but can't send to Smart, TNT or Sun numbers. A custom Sender ID needs a sponsoring business or organization to apply for it.

Ship your first message today.

Create an account, grab an API key, and integrate on our default Sender ID. Verify your mobile number for 10 free SMS credits.