Best SMS API providers in Australia
Of the providers we review, 19 publish an SMS API with an Australian-dollar rate at 15,000 messages a month. The cheapest of the 19 are Mobile Message, SMSFlow and Texto, each at 3.00c per SMS. Mobile Message scores highest of the 20 providers here that carry a score, at 9.0 out of 10. ClickSend, Telstra, Vonage, Kudosity and MessageWorks also publish SMPP for high-volume senders. Rates verified 28 September 2026.
Reader-supported. We earn a commission when you sign up with a provider through this site. Commission never affects a score or a position. How we make money.
Mobile Message
9.0out of 1099.9% gateway SLA with a published remedy
Showing 21 of 21 providers at 15,000 messages a month, sorted by overall score descending. Providers with no published figure sort last.
21 of 21 providers shown.
Matches require published evidence for every selected feature. A hidden row may have missing evidence, which does not mean the feature is unavailable.
| # | Provider | Entry rate | Replies | Authentication | Webhooks to your URL | Published testing options | Rate limit | Provider site | ||
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Mobile Message REST (JSON), plus a query-string 'Simple API' GET endpoint documentation | 9.0 | 3.00c | 4.00c | Free | HTTP Basic with an API username and password created in the dashboard | Receipts yes, replies yes | Sandbox account on request, no handset delivery, read 3 October 2026. Sandbox (test) account on request by email: API behaves as live, nothing is delivered, no credits used, simulated delivery receipts; plus 50 free SMS credits on every new account | Up to 5 simultaneous requests per account (HTTP 429 beyond that), no per-second cap; up to 10,000 messages per request | Visit |
| 2 | ClickSend REST, libraries for PHP, Node.js, Ruby, Swift, Objective-C, Python, C#, Java, Go, Perl documentation | 8.3 | 6.70c | 7.20c | Free | HTTP Basic with API username and API key (from 'API Credentials' in the dashboard) | Receipts yes, replies yes | Test numbers, no handset delivery, read 3 October 2026. Published test credentials (no-credit, inactive and banned accounts) and test numbers, including +61411111111 to +61444444444, that return success without sending or charging | · | Visit |
| 3 | Guni SMS REST documentation | 8.3 | 4.30c | 4.50c | not published | Bearer app token in the Authorization header (token generated in the Integrations portal) | Receipts yes, replies yes | Free sandbox account for developing and validating an integration | · | |
| 4 | SMS Broadcast HTTP GET/POST, libraries for PHP documentation | 8.3 | 6.00c | 7.00c | Free | Account username and password passed as request parameters | Receipts yes, replies yes | · | · | Visit |
| 5 | MessageWorks REST (JSON over HTTPS), plus an SMPP gateway documentation | 8.3 | 5.00c | 6.90c | not published | API key in the X-API-Key HTTP header, generated in the account's Developer Settings | Receipts yes, replies yes | Sandbox API key, no handset delivery, read 19 September 2026. Sandbox environment: requests made with a sandbox API key are simulated end to end, with no real SMS sent and no credits spent | A default rate limit applies to all accounts (figure not published); higher enterprise-tier limits on request | |
| 6 | Cellcast REST documentation | 8.2 | 3.10c | 4.70c | Free | Bearer token (API key created in the dashboard API menu) in the Authorization header | Receipts yes, replies yes | · | Up to 10 messages per second per sending connection by default on the Australian REST API (about 36,000 an hour); can be raised on request | Visit |
| 7 | Chatti REST | 8.0 | 5.90c | 6.90c | Free | · | · | Free trial with 100 SMS credits, no credit card required | · | |
| 8 | SMSFlow REST and JSON, base URL https://api.smsflow.com.au/v2 documentation | 8.0 | 3.00c | 4.00c | Free | API key as a bearer token in the Authorization header | Receipts yes, replies not published | · | Soft limit of 10 requests a second | Visit |
| 9 | Notifyre REST, libraries for .NET, Node.js documentation | 7.8 | 5.00c | 5.00c | Free | API token sent in an x-api-token header (token generated under Settings > Developer) | Receipts yes, replies yes | · | · | Visit |
| 10 | touchSMS REST (JSON), base URL https://app.touchsms.com.au/api/v2, libraries for PHP, Node.js documentation | 7.8 | 5.00c | 5.00c | Free | HTTP Basic, with the API key's Access Token as username and Token ID as password; HTTPS only | Receipts yes, replies yes | Test numbers, no handset delivery, read 3 October 2026. Listed test numbers simulate valid, invalid or opted-out results without sending. These test messages are not visible in the account. | Up to 1,000 messages per send call (10 for MMS); the inbound polling endpoint is limited to 120 requests an hour | Visit |
| 11 | Texto REST and JSON: POST /send, and /send-batch for up to 1,000 recipients; OpenAPI 3.1 specification documentation | 7.8 | 3.00c | 3.00c | not published | Bearer API key in the Authorization header | Receipts yes, replies yes | · | 50 requests a second per API key | Visit |
| 12 | Kudosity REST documentation | 7.7 | 7.90c | 8.00c | not published | V2 (TransmitMessage): API key in an x-api-key header; V1 (TransmitSMS): HTTP Basic with API key and secret | Receipts yes, replies yes | Free developer trial with test credits that send real messages | 15 API calls per second per account; higher on request | Visit |
| 13 | 160.com.au REST documentation | 7.5 | 5.41c | 7.95c | not published | HTTP Basic with account username and SMS secret (from the profile page) | Receipts yes, replies yes | Staging test numbers, no handset delivery, read 3 October 2026. Free staging sandbox: nine test numbers simulate each delivery outcome, not sent on air and not charged | Up to 1,600 messages a minute by default, raised on request; over-limit requests return HTTP 429 | Visit |
| 14 | SMS Express REST over HTTPS (GET or POST, URL-encoded), JSON or XML responses: the TransmitSMS API documentation | 7.2 | 7.70c | 7.70c | Free | HTTP Basic: API key as username, API secret as password | Receipts yes, replies yes | · | 15 calls a second by default, raised on request | Visit |
| 15 | Telstra SMS Access Manager (SMPP) rates; the API columns describe Messaging API v3 (REST), whose price is not verified here documentation | 7.0 | 13.00c | 14.00c | not published | OAuth 2.0 bearer token from a client ID and secret; the token expires after one hour | Receipts yes, replies yes | Free Trial: up to 100 messages to up to 10 registered Australian numbers, no time limit, no billing details | · | Visit |
| 16 | Vonage Two published currencies, neither of them AUD Billed in USD | 6.8 | ≈ 8.57c AUD landed billed as 5.814 US cents | 5.81 US cents | 0.691 US cents each | · | · | · | · | |
| 17 | Bulk SMS Australia REST documentation | 6.6 | 12.33c | 15.00c | Charged per reply | Bearer API key in the Authorization header (long-lived key created in SMS Manager); short-lived JWT also accepted | Receipts yes, replies yes | · | · | Visit |
| 18 | SMS Fusion REST over HTTPS, with query-string GET endpoints (such as /sms/) and form POST endpoints; Swagger/OpenAPI 2.0 reference documentation | 6.5 | 6.90c | 7.90c | not published | API key as a key query-string parameter, or as the username in HTTP Basic auth (password ignored); optional per-key IP allow-list | Receipts yes, replies yes | 14-day full-access trial with the full API included and no credit card required | · | Visit |
| 19 | Bird US dollar headline rate, no AUD view Billed in USD | 6.4 | ≈ 4.79c AUD landed billed as 3.25 US cents | 3.25 US cents | not published | · | · | · | · | |
| 20 | Vision6 REST documentation | 5.8 | 8.90c | 9.70c | not published | Bearer API key in the Authorization header (REST-compatible key created in the platform) | Receipts yes, replies yes | · | 120 requests a minute and 2,000 an hour, per account; HTTP 429 when reached | |
| 21 | BE Messaging REST (/api/v1), plus MCP for hosted assistants documentation | not scored | 5.00c | 6.00c | Included in a monthly allowance | Scoped API keys minted by a company admin, shown once and stored hashed, optionally limited to named numbers; MCP also accepts an OAuth token | Receipts yes, replies yes | · | · | Visit |
Not ranked here: Textit (publishes no API) ; Klaviyo (publishes no API) ; Swift Digital (publishes no API) ; eNudge (publishes no API) .
19 more of the providers we review publish no Australian rate that maps onto a monthly volume, so no table ranks them. BulkSMS.com, Clickatell, Plivo, Textmagic, Trumpia and Twilio have no Australian entity, so this site reviews them but does not rank them: this site compares Australian SMS providers only. Every provider the site reviews is on the reviews index.
Entry rate and Replies come from each provider's pricing page as read on or before 23 October 2026; what earns each entry rate is set out under the bulk SMS table, and the quote sits on the review.
Rows billed in USD show their landed cost in Australian dollars: the US-cent price converted at the RBA rate on 27 October 2026 plus a 3.5% card FX fee (median of the four major banks). That cost moves with the exchange rate and with your own card's fee. Any line naming the cheapest provider is worked out on providers that bill in Australian dollars.
API columns: from each provider's own documentation, read 19 September 2026; a testing entry carries the date it was rechecked. Of the 19 providers with documentation read, 18 push delivery receipts to a URL you give them and 17 push replies the same way. Each entry links to its source once per row. A dot means not published in the sources read, never "No".
More documented APIs outside the monthly rate comparison
Of the 6 providers compared here, 3 publish how to push delivery receipts to a URL you give them and 3 push replies the same way. 0 publish official code libraries.
6 of 6 providers shown.
Matches require published evidence for every selected feature. A hidden row may have missing evidence, which does not mean the feature is unavailable.
| Provider | Authentication | Delivery receipts to your URL | Replies to your URL | Official libraries | Published testing options | Rate limit |
|---|---|---|---|---|---|---|
| CompleteSMS documentation Maximum 500 recipients per request in SMSAPI v1.1 is a batch limit, not messages per second. Receipt and reply callbacks fall back to email when the callback URL is null or fails. No throughput limit verified. Sources read 23 October 2026 | Sender.AccountId, Sender.Username (registered email) and Sender.Password in the JSON request body over HTTPS. | Yes | Yes | · | 15-day trial restricted to whitelisted numbers under the service agreement. Handset-free testing was not verified. | · |
| Edgility documentation Sources read 23 October 2026 | HTTP Basic with the API credentials issued in Settings, API Keys. Confirm field order because the Postman instructions use inconsistent labels. | · | · | · | Published test numbers , no handset delivery, read 23 October 2026 Separate test numbers simulate valid, invalid or opted-out results. Messages to them do not appear in the account. No test send performed. | · |
| GoFax documentation Sources read 23 October 2026 | API token created from the master account | · | · | · | · | · |
| IntelliSMS documentation Interfaces and callbacks are advertised on the API service page. Authentication and callback security details were not verified. Sources read 23 October 2026 | · | Yes | Yes | · | · | Five gateway calls per second per account by default, including sends, inbound retrieval and status queries. Higher limits require prior written approval and additional fees. |
| OneWaySMS documentation The public feature page advertises code samples. Authentication and callback details were not verified. Sources read 23 October 2026 | · | · | · | · | · | · |
| SMS Papa documentation Sources read 23 October 2026 | HTTP Basic with account username and SMS secret | Yes | Yes | · | · | 2 requests per second and up to 100 SMS per request |
Send your first SMS from Australia with any of these APIs
Below is one working first request for each of the 5 authentication patterns the 21 Australian API providers use, copied from each provider's own documentation as read on 22 October 2026. The credentials and message text in every example are placeholders, so a developer can see the shape of each pattern before picking a provider.
HTTP Basic with an API username and key: ClickSend
curl --request POST 'https://rest.clicksend.com/v3/sms/send' \
--header "Authorization: Basic <base64 of api-username:api-key>" \
--header "Content-Type: application/json" \
--data-binary '{"messages":[{"to":"+61411111111","body":"Your message"}]}' From ClickSend's documentation, read 22 October 2026. Numbers: the documented example sends to +61411111111, the international form. ClickSend review.
Bearer API key in the Authorization header: Texto
curl -X POST https://api.texto.com.au/send \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"to": "+61412345678", "message": "Your message", "sender": "MyBrand"}' From Texto's documentation, read 22 October 2026. Numbers: Australian mobiles in local 04 form or E.164 +614 form; sender is a registered sender ID or a dedicated number. Texto review.
API key in a named header: MessageWorks
POST https://api.messageworks.com.au/v1/messages
X-API-Key: YOUR_API_KEY
Content-Type: application/json
{"to": "+61412345678", "message": "Your message"} From MessageWorks's documentation, read 22 October 2026. Numbers: the documented example sends to +61412345678. MessageWorks review.
OAuth 2.0 client credentials, then a bearer token: Telstra
POST https://tapi.telstra.com/v2/oauth/token
client_id=YOUR_CLIENT_ID&client_secret=YOUR_CLIENT_SECRET&grant_type=client_credentials&scope=NSMS
POST https://tapi.telstra.com/v2/messages/sms
Authorization: Bearer ACCESS_TOKEN
Content-Type: application/json
{"to": "+61412345678", "body": "Your message"} From Telstra's documentation, read 22 October 2026. Numbers: to is E.164 (+61412345678) or national (04xxxxxxxx); from is an alphanumeric sender ID of up to 11 characters, for Australian destinations only. Telstra review.
API key as a query-string parameter: SMS Fusion
GET https://api.smsfusion.com.au/sms/?key=YOUR_API_KEY&num=61412345678&from=BOOKINGS&msg=Your+message From SMS Fusion's documentation, read 22 October 2026. Numbers: num is the international form without the plus (61412345678); the format-number endpoint turns 0412345678 into it. SMS Fusion review.
The examples accept an Australian mobile as the 04 form or the +61 form, so pass the form the provider documents. A branded alphanumeric sender ID on a message to an Australian number must be registered on the SMS Sender ID Register, which ACMA runs. The provider registers it for you, and an unregistered sender ID is replaced with the word "Unverified" on the recipient's phone.
SMPP
5 of the 21 providers here publish an SMPP bind as well as an HTTP API: ClickSend, Kudosity, MessageWorks, Telstra and Vonage. Choose the SMPP bind when you send sustained high volume over one persistent connection, or when your software already speaks SMPP, and otherwise the HTTP request above is the faster build.
Webhook security and retries
This section compares webhook signing and failure handling across three selected Australian providers. Each entry draws on that provider's public documentation, read 23 October 2026. It is a selected comparison, not a market-wide ranking, and nothing here is a tested reliability measure. A webhook retry resends an event to your server. It does not resend an SMS to the customer. Compare the delivery support described above with this operational detail. Where a detail is missing, treat it as unverified rather than a confirmed lack of support.
| Provider and source | Signature validation | Successful response | Failed requests | Event handling |
|---|---|---|---|---|
| Texto Provider documentation Read 23 October 2026 | HMAC-SHA256 over raw body. X-Texto-Signature header sent only when signing is enabled. | Any 2xx status within 15 seconds acknowledges the event. The X-Texto-Delivery UUID is stable across retries and supports deduplication. | 3 total attempts. First immediate, next about 1 minute after failure, then 5 minutes after second failure. About 30 further minutes before giving up. | Stable X-Texto-Delivery retries. Inbound message_id stays stable. is_optout flag means optout already recorded. Recent deliveries log shows failure. |
| touchSMS Provider documentation Read 23 October 2026 | HMAC-SHA256 over raw JSON body using the account webhook secret from API settings. | A 2xx response stops retries immediately. | Up to 15 retries with exponentially increasing delays. The 12 hour figure is the maximum interval between retries, not a total window. | Repeated failures may disable the subscription as Disabled Failing. Re-enable the subscription to resume receiving events. |
| Vision6 Provider documentation Read 23 October 2026 | JWT with Vision6-Signature header. Multiple keys may be present; one valid signature is sufficient. | Respond 2xx immediately. Redirects are not followed and count as failed requests. | Retries continue for up to 1 day for failed requests. A 410 response deletes the subscription immediately. | JSON POST batches up to 1000 events at 10 second intervals. Order is not guaranteed. This is a general webhook event limit, not an SMS send limit. |
SMS API shortlist
- Mobile Message , 9.0 out of 10. 99.9% gateway SLA with a published remedy. 3.00c per SMS at 15K.
- ClickSend , 8.3 out of 10. Cheapest rate needs a $10,000 single top-up. 6.70c per SMS at 15K.
- Guni SMS , 8.3 out of 10. A real, complete AUD rate ladder, 1,000 to 500,000+ a month. 4.30c per SMS at 15K.
- SMS Broadcast , 8.3 out of 10. Onshore connections with Telstra, Optus and Vodafone. 6.00c per SMS at 15K.
- MessageWorks , 8.3 out of 10. Rebranded from SMS Solutions Australia in 2025. 5.00c per SMS at 15K.
What an SMS API call does
An SMS API may accept a send request and return a message ID for it. A failed request is not guaranteed to return an ID at all. Acceptance by an API is not proof that the message reached a handset. Later delivery receipts and replies depend on the webhook or polling support documented or configured for the account.
An SMS gateway is the machinery behind the API, and the site has a page that explains what a gateway is in full. Every provider in the table above except Chatti documents pushing receipts and replies to a URL you supply. Chatti publishes no API documentation of its own and says it is the exclusive APAC partner of Vonage. How you actually reach each gateway is the next question.
REST, simple GET endpoints and SMPP
Most providers publish a REST API. Mobile Message also publishes a query-string "Simple API" GET endpoint beside its REST API, which suits a quick test or a script. SMS Fusion publishes query-string GET endpoints and form POST endpoints. SMS Broadcast documents an HTTP GET and POST interface rather than REST.
MessageWorks offers an SMPP gateway beside its REST API. SMPP is an open, industry standard protocol for exchanging SMS between an application and a provider's message centre. It carries traffic over one persistent connection rather than one request per message, which suits very high volume sending. 12 of the providers this site reviews say on their own pages that they offer an SMPP connection: ClickSend, Esendex, Infobip, IntelliSMS, Kudosity, MessageWorks, Sinch Engage, SMSGlobal, Soprano Design, Telstra, TNZ Group and Vonage. SMPP makes sense when you send at high volume and want one persistent connection to the provider rather than a request per message. For almost every integration, REST is the pattern your developer will expect, and the next difference is how each provider checks who you are.
How providers authenticate your requests
Four patterns appear across the providers in the table above. HTTP Basic with an API username and key is used by ClickSend, Mobile Message and touchSMS. A key or token in a request header is used by Notifyre, MessageWorks, Cellcast, Guni SMS, Vision6 and Bulk SMS Australia. Telstra issues an OAuth token that expires after one hour, so your code must fetch a fresh one. Credentials in the request itself appear at SMS Broadcast, which passes the account username and password as request parameters, and at SMS Fusion, which accepts the API key as a query-string parameter or as the HTTP Basic username.
A credential placed in a URL can be written to server and proxy logs, so prefer a header where the provider offers one. That one choice shapes how safely your integration runs in production, and the next concern is how to test it before it touches a real customer.
Testing an SMS API before live messages
Each provider in the comparison handles test traffic differently, and the differences matter when you are integrating. ClickSend documents test SMS numbers that return a success result, send no messages and do not charge the account. This applies to the listed test numbers, not to every request you make. touchSMS takes a similar approach with listed test numbers that do not send SMS, and it returns the corresponding result for valid, invalid and opted-out numbers. Test messages are not visible in the account.
Mobile Message offers a sandbox account on request by email. Sending is disconnected, so no handset delivery occurs and no credits are consumed. The sandbox includes simulated delivery receipt webhooks and a documented failure case for certain test numbers. New-account trial credits are separate and send real messages. 160.com.au provides a free staging sandbox with nine test numbers that simulate delivery outcomes including failures, without sending on air or spending credit.
Simulated responses help exercise your request and status-handling code, but they do not confirm that the entire integration works. They also do not measure carrier or handset delivery. Run controlled live tests on agreed test numbers before you send customer traffic.
SMS API rate limits and volume
The published limits vary a great deal, so check the table above for the provider you choose. Mobile Message allows up to 5 simultaneous requests per account and up to 10,000 messages in a single request. Cellcast allows up to 10 messages a second per sending connection by default, raised on request. Kudosity allows 15 API calls a second per account, and requests over the limit are dropped, not retried. 160.com.au allows up to 1,600 messages a minute by default, and Vision6 caps accounts at 120 requests a minute.
Kudosity documents that requests rejected with HTTP 429 and an OVER_LIMIT code are dropped and not retried by the provider. That is Kudosity's documented behaviour, not a rule for every vendor. Slow your sending or queue work so requests stay under the provider's documented limit.
A timeout that returns no usable result can leave acceptance unknown. The request may have been rejected before processing, or it may have been accepted with the response lost. Partial batches and differing vendor error semantics mean you should not assume every rejected request never reached a queue.
Ask the provider which errors mean rejected work, which are retryable, and whether it publishes deduplication, idempotency or accepted-message lookup. Keep the source event and message IDs so you can reconcile outcomes later.
What to verify before you build
Providers distinguish acceptance, sent and delivered statuses in their own ways, and a delivered SMS is not a read receipt. Status callbacks can arrive out of order, and providers differ on whether they sign callbacks and on the statuses and payloads they send, so read the callback documentation of the provider you choose before you build on it.
Before committing to a build, check:
- Event and message correlation across callbacks, receipts and replies.
- Documented status and error handling, plus a polling fallback where offered.
- A reply-capable numeric sender and supported routing when replies matter.
- Controlled handset tests for text, parts and results before volume, using an SMS character counter and your SMS automation flow.
Ask vendors for their actual callback acknowledgement and retry semantics rather than assuming retries exist.
What an SMS API costs
For Telstra, the verified rate row covers SMS Access Manager, Telstra's SMPP service for your own application, priced under Our Customer Terms Part J. The registered message and delivery receipt tariff belongs to that product. The REST feature documentation is a separate product, Telstra Messaging API v3, and no verified matching v3 price is held. Do not apply the SMS Access Manager notification tariff to v3. Match the product documentation and tariff before budgeting.
MessageWorks charges a monthly account fee plus a separate API access fee. Check whether number, report or access fees apply to your chosen product, and confirm the billing currency and how SMS parts are counted. A per-message estimate may differ from the whole invoice.
Before committing, review our cheapest bulk SMS rates comparison and budget for any applicable account fees as well as API access fees.
Scores and comparison method
Where a score is shown, it is the mean of the criterion values computed by the published rubric, each criterion weighted equally. Missing criteria are excluded from that mean, not counted as zero. Unscored providers have no published score rather than a low one. Read the method.
SMS API questions
Which SMS API in Australia is cheapest?
Of the 19 API providers here that publish an Australian-dollar rate, the cheapest at 15,000 messages a month are Mobile Message, SMSFlow and Texto, each at 3.00c per SMS, and the lowest entry rate is Texto at 3.00c. Every figure is the provider's published rate excluding GST; the cheapest bulk SMS page ranks them at four volumes.
Is there a free SMS API in Australia?
No provider here publishes a free API tier: every rate is pay-as-you-go or prepaid. 17 of the 21 publish free credits or a free trial on signup, 160.com.au, Bulk SMS Australia, Cellcast, Chatti, ClickSend, Guni SMS, Kudosity, MessageWorks, Mobile Message, SMS Broadcast, SMS Express, SMSFlow, Telstra, Texto, touchSMS, Vision6 and Vonage, and the testing row of the feature table above says which ones document test numbers or a sandbox that sends nothing and costs nothing.
How do I send an SMS through an API?
Authenticate as the provider documents (7 of these 21 use HTTP Basic with an API username and key, 8 a key or token in a request header, and Telstra and BE Messaging an OAuth token), send a POST with the recipient number and the message text, keep the message ID the response returns, and read delivery receipts from the webhook or by polling. The feature table above names each provider's style, libraries, limits and test mode.
Which SMS APIs in Australia support SMPP?
5 of the 21 providers here say on their own pages that they offer an SMPP connection: ClickSend, Kudosity, MessageWorks, Telstra and Vonage. SMPP is the protocol that SMS centres and carriers use. Your client opens a persistent connection, called a bind, and keeps it open, so messages and delivery receipts share one connection instead of a new web request per message. That suits sustained high-volume traffic such as bulk one-time-passcode sends, and software that already speaks SMPP, a common standard across providers. Otherwise a REST API with webhooks is faster to build, and SMPP also needs a bind account, often a fixed IP address, and client software that handles reconnects.