SMS API for SaaS Platforms

    Embed SMS in your product and give every customer their own isolated account. Create sub-accounts, provision their API keys, allocate credits, assign numbers and pull per-tenant reporting — all over the Texto REST API, at 3¢ per message to Australia.

    See the API reference

    Multi-tenant by design · One invoice · Australian infrastructure

    A multi-tenant SMS API lets a software platform send messages on behalf of each of its own customers, keeping every customer's contacts, opt-outs, sender ID and billing separate. Texto provides this natively: a SaaS platform creates a sub-account per customer over the REST API, provisions that customer's API key, allocates credits to them, assigns dedicated Australian or New Zealand numbers, and pulls usage reporting per account or across the whole group — at a flat 3¢ per SMS to Australia.

    The whole account layer in three calls

    Create a customer's account, fund it, and send their first message. No tenant isolation, credit ledger or key management to build yourself.

    REST · base URL https://api.texto.com.auHeader: X-API-Key: txt_xxxxxxxxxxxxxxxxxxxx
    # 1. Create the customer's sub-account
    POST /accounts
    { "business_name": "Coastal Physio", "email": "admin@coastalphysio.com.au" }
    # → { "account_id": "acc_8f2k..." }
    
    # 2. Allocate credits to that account
    POST /account/acc_8f2k.../credits/allocate
    { "credits": 500 }
    
    # 3. Send their first message
    POST /send
    { "account_id": "acc_8f2k...", "to": "+61400000000",
      "message": "Hi Sarah, your appointment is confirmed for 2pm tomorrow." }

    Every call is documented in the REST API reference, with official SDKs for Node.js, TypeScript, Python, PHP and .NET in the developer hub. For pricing context, compare Texto with Twilio for Australian SaaS SMS.

    The multi-tenancy layer you would otherwise build

    Most SMS providers hand a platform one account and one API key. Everything that makes SMS safe to resell is then yours to build: tenant isolation, a credit ledger per customer, per-customer API keys, a separate opt-out list per tenant, delivery status you can show each customer, and reporting that rolls up across all of them. That is weeks of work and a permanent maintenance burden.

    Texto already is that layer. Each of your customers gets a fully isolated account, created through the API the moment they sign up in your product, with its own credits, contacts, conversations, opt-out list, sender ID and numbers. You call it instead of maintaining it.

    It is completely self service. Sign up, switch account hierarchy on in your settings, and start creating and managing sub-accounts straight away. No sales call, no waiting, no approval step.

    How account hierarchy works

    What the account management API gives you

    Everything you'd otherwise build yourself to run SMS for thousands of customers.

    A sub-account per customer

    POST /accounts creates a fully isolated account with its own credit balance, opt-out list, sender ID, contacts and message history. Onboard a customer the moment they sign up in your product.

    Provision their API keys

    Create and revoke API keys on behalf of any sub-account. Give each customer their own credentials without them ever touching a Texto login.

    Fund and meter usage

    Allocate credits into a customer's account and recall what they don't use. Or let sub-accounts draw from the parent balance and bill them however your pricing works.

    Set volume limits

    Cap the daily send limit on any sub-account so a runaway loop in someone else's integration never becomes your invoice.

    Assign dedicated numbers

    Buy Australian or New Zealand numbers at the parent level and assign or recall them per customer as their plan changes.

    Report per tenant and across the group

    Pull message totals, parts, delivery and failure counts, credits consumed, inbound volume and opt-outs for one account or the whole hierarchy in a single call.

    How a customer gets onboarded

    Four calls from signup in your product to a delivered message, with no support ticket and nobody touching a spreadsheet.

    1

    Customer signs up in your product

    Your backend calls POST /accounts with their business name and email. Texto returns an account_id.

    2

    Provision their credentials

    Call POST /account/:id/key to mint an API key for that tenant, or keep sending through the parent key and scope by account.

    3

    Fund the account

    Allocate credits with POST /account/:id/credits/allocate, or leave the sub-account drawing from your parent balance and bill it inside your own plan.

    4

    Send and report

    Messages send through the same /send endpoint. Pull GET /account/:id/report for one tenant or GET /report/group for a whole-of-platform view.

    Every endpoint is documented in the REST API reference, and the account model behind it is explained on account hierarchy. Official SDKs for Node.js, TypeScript, Python, PHP and .NET, plus the public Postman workspace, are in the developer hub.

    Why platforms build on Texto

    Tenancy you don't have to build

    Most SMS providers hand you one account and one API key, so you end up writing your own tenant isolation, credit ledger and per-customer reporting. Texto's account model is the multi-tenancy layer — you call it instead of maintaining it.

    Margin that works at 3¢

    Every message costs a flat 3¢ to Australian numbers, dropping with volume packages as your platform grows. Resell at whatever price fits your plans.

    Signed webhooks per message

    Delivery receipts and inbound replies arrive as HMAC-SHA256 signed, retried, idempotent callbacks, so you can surface real status to your customers rather than 'sent'.

    Australian infrastructure

    Hosted in AWS Sydney and delivered through licensed Australian carriers. Message content is purged after 90 days, which is a straightforward answer when your own customers ask where their data lives.

    Your customers inherit the whole platform

    A sub-account isn't a cut-down API endpoint — it's a full Texto account. Anything your customers can do in your product, they can also do directly if you give them a login.

    • Bulk campaigns up to 50,000 recipients
    • Two-way inbox on a dedicated number
    • Keyword automations on inbound SMS
    • Automatic STOP handling and one-tap {{OptOutLink}} opt-out links, kept in each sub-account's own list
    • Link shortening and click tracking
    • Unlimited team members at no extra cost
    • Two-factor authentication per user
    • Sending to Australian and New Zealand mobiles

    Common questions platform teams ask

    Multi-tenant SMS API

    Every customer of your platform becomes an isolated Texto account created over REST, with its own credit balance, contacts, conversations, opt-out list, sender ID and numbers. Nothing crosses between tenants.

    SMS sub-accounts

    Sub-accounts are free to create and free to hold. Create them in bulk as customers onboard, provision an API key for each one, and suspend or close an account when a customer leaves.

    Per-customer SMS billing

    Buy credits at the parent level and either allocate them to each customer account or let those accounts draw from your balance. Unused allocated credits can be recalled at any time. Texto sends you one invoice at 3¢ per SMS to Australia from your first message, with lower rates on volume, and you price SMS however you like inside your own plans.

    Reseller and client accounts

    The same structure covers agencies running client accounts and franchise or multi-location groups where each site needs its own account under one head office balance. See white-label SMS for agencies.

    Frequently Asked Questions

    Put SMS in your product this sprint

    Sign up free with 5 credits, switch account hierarchy on in your settings, and start creating customer accounts over the API straight away.