Changelog

What changed. Every release, newest first.

New endpoints, SDK releases, console features and behavior changes, each on its own page. Follow along with the Atom feed, read it all as markdown, or get product updates by email below.

  1. Prepaid credits

    Billing is now prepaid. See Credits. Add credits in Console to Billing: $10, $20, $50, $100, or any amount from $5 to $1,000. Your first purchase lifts the free-tier caps. 402 insufficientcredits: a billable live call your balance cannot cover is refused...

  2. What the rate includes, stated once

    We said two different things about fees in two places. This is the policy, and the pricing page, the docs and the Terms (section 4.3) now all say it the same way. Carrier fees are included. The per-message fees carriers charge are inside the published...

  3. Recurring schedules, and a sandbox that says what it did

    Recurring schedules: POST /v1/schedules sends a message every day, week or month at a local time in an IANA time zone, correct across daylight saving. List, retrieve, change, pause and resume (PATCH with active), delete. Each occurrence is a normal send...

  4. Log in and test webhooks from the terminal

    npx joinsimplesms login opens the console for you to approve and stores a new test key for the machine, then prints your sandbox number. No key to copy. Test keys only; login --key still stores one you have. See CLI. npx joinsimplesms listen --forward-to...

  5. Opt-outs you can see

    recipientoptedout: a send to an opted-out number now answers 403 with its own code (it was the generic forbidden) and says when and how the person opted out, in the message and as optedoutat, optedoutvia and optedoutmethod. failure.code is still optedout....

  6. Delivered is now SimpleSMS

    The product has a new name and a new home, joinsimplesms.com. It is the same service, the same account, the same prices and the same terms; nothing you built has to change. Apart from the API host, everything issued under the Delivered name keeps working...

  7. Sender status

    Numbers show where they stand. Every number carries sender (testonly, pending, active, actionneeded with a plain reason). New GET /v1/numbers/{number}, and the number.senderupdated event. See Numbers. Test only until registered. A live US number that is...

  8. Automations

    Event-driven flows: POST /v1/track (events.track in the SDKs) records what a person did; a flow listening for that event sends, waits, waits for another event with a timeout, and branches. See Automations. /v1/automations: create, edit, activate, pause...

  9. Contacts API

    /v1/contacts: create-or-update by phone number, retrieve, update, delete, and list with tag and phonenumber filters. The same address book the console uses. See Contacts. POST /v1/contacts/import: bulk upsert, up to 500 per request, with skipped rows...

  10. Message observability

    Message timeline: every message records each step with a timestamp (accepted to validated to queued to senttocarrier to carrieraccepted to delivered/failed; inbound: received) as timeline on GET /v1/messages/{id}. segments, encoding, price...

  11. Reliability

    Automatic carrier retries: temporary carrier failures no longer fail a send. POST /v1/messages answers 202 with the message queued and we retry it after 30s, 2m and 10m. New message fields: attempts, nextattemptat. A message is never submitted twice....

  12. Customers and the Python SDK

    Customers (/v1/customers): for platforms sending on behalf of other businesses. Assign numbers to a customer and its messages, verifications, events and webhooks carry customerid; GET /v1/customers/{id}/usage reports per-customer usage by day. See...

  13. Compliance autopilot (registration)

    Website disclosure check: POST /v1/registrations checks your website, privacy policy, terms and opt-in page against what carrier reviewers look for, with evidence and copy-paste fixes for every finding. Generated copy: opt-in disclosure, privacy clause...

  14. Account controls

    Deliverability: GET /v1/deliverability and Console to Deliverability report delivery rates by day, carrier, and sending number, with failure reasons. Sharp drops raise a deliverability.degraded webhook event. Spend limits: a monthly USD cap on live...

  15. Spam scores retired

    GET /v1/lookup/{phone}/spam now answers 410 Gone (endpointretired). Its scores came from data SimpleSMS no longer uses. GET /v1/lookup/{phone} (line type and carrier) is unchanged. The MCP lookupspam tool and the CLI's --spam flag are gone; the SDK's...

  16. Pricing

    Outbound SMS is $0.009 per message, all-in. Carrier fees are still included and A2P 10DLC registration is still free; the rate simply now covers what a US text costs to deliver. Verification, numbers, lookups, and the free tier are unchanged.

  17. Consent autopilot (TCPA)

    Revocation in plain English: "please stop texting me" now opts a number out, not just the STOP keyword. Three detection tiers (keyword, phrase, AI with confidence scores), per the FCC's April 2025 reasonable-means rule. Consent ledger: every opt-out...

  18. Early access launch

    Sandbox-first API surface: /v1/messages (send, get, list, Idempotency-Key support), /v1/numbers (search, purchase, release), /v1/lookup (+/spam), /v1/events, and POST /v1/test/inbound for simulating inbound SMS. Self-serve console at /console: instant free...

Get product updates

New features and API changes, by email. Or follow the Atom feed.