# Sparetext > Sparetext is an SMS gateway that runs on a phone you already own. It gives that phone a REST API, HMAC-signed webhooks and a remote MCP server, so scripts and AI agents (Claude, ChatGPT, Cursor, OpenClaw, n8n) can send and read real text messages from the owner's own number, with no per-message fees. It works with Android, and with iPhone through a Mac relay or Shortcuts. Key facts: - Android: fully automatic. The app sends with SmsManager in the background, receives texts, and reports `sent` and `delivered` from carrier delivery reports. - iPhone: iOS lets no app send or read SMS silently, so Sparetext offers the paths Apple allows. Sparetext for Mac, a menu-bar app, sends through Messages with Text Message Forwarding (fully automatic, reads replies; a `sparetext` CLI relay does the same on the command line), a "Sparetext Send" Shortcut sends automatically while the app is open, and tap-to-send opens each text in the system composer. - Texts go out from the phone's SIM. Concatenated SMS follow GSM-7 (160 characters, 153 per part) and UCS-2 (70, 67 per part) limits. It suits person-to-person and transactional texts, not bulk A2P marketing. - Pricing: Free is 1 phone and 300 texts a month with every feature. Pro is up to 5 phones and 10,000 texts a month for $12.74 a month or $84.99 a year in the US, UK and most of Europe, and less in many countries (down to $5 a month or $60 a year), by card subscription (Stripe) or paid ahead in USDT on TRON. No per-message fees: texts go out on the phone's own carrier plan. Limits are counted but not applied while Sparetext is in testing. Details: https://sparetext.dev/pricing - Hosted at https://sparetext.dev on Cloudflare. Contact: hello@sparetext.dev. ## For AI agents - [MCP server](https://sparetext.dev/mcp): Streamable HTTP (protocol 2026-07-28, and 2025-11-25 back to 2025-03-26), OAuth 2.1 with Client ID Metadata Documents or dynamic client registration (or `Authorization: Bearer `). Tools: send_sms, wait_for_reply, get_conversation, list_conversations, mark_read, list_messages, get_message, cancel_text, list_devices, get_stats. - [MCP server card](https://sparetext.dev/.well-known/mcp.json): name, URL, transport, auth and tools as JSON. - [OpenAPI 3.1 spec](https://sparetext.dev/openapi.json): for n8n, Make and other workflow tools, with `x-api-key` or bearer auth and the signed webhooks. - [OpenClaw skill](https://sparetext.dev/integrations/openclaw-sparetext.zip): SKILL.md that uses the `sparetext` CLI or curl, with `SPARETEXT_API_KEY`. OpenClaw can also connect to the MCP server with `openclaw mcp set`. ## API - `POST /api/v1/messages` with `{"to": "+15551234567", "text": "..."}` and header `x-api-key`: queue a text. Returns message ids. - `GET /api/v1/messages/{id}`: status `queued`, `dispatched`, `sent`, `delivered` or `failed` (with `error`). - `DELETE /api/v1/messages/{id}`: cancel a text that is still scheduled or queued. - `GET /api/v1/messages?direction=inbound&contact=+15551234567&since=`: read replies. - `GET /api/v1/devices`: phones, online state, battery, queue. - `POST /api/v1/gateway/send-sms` with `{"recipients": [...], "message": "..."}`: textbee-compatible send. - Webhook events: message.received, message.sent, message.delivered, message.failed, device.paired, device.offline, device.online; header `X-Sparetext-Signature: t=,v1=.">`. ## Pages - [Home](https://sparetext.dev/): what it is, how each phone sends, FAQ. - [API reference](https://sparetext.dev/docs): every endpoint with curl, Node and Python examples, webhooks and their signature check, errors. - [AI agents](https://sparetext.dev/agents): connect Claude, ChatGPT, Claude Code, Cursor, OpenClaw or n8n to the MCP server, step by step. - [Pricing](https://sparetext.dev/pricing): Free and Pro, prices by country, how to pay, limits and refunds. - [Changelog](https://sparetext.dev/changelog): every release of the dashboard, API and apps. - [Everything in one file](https://sparetext.dev/llms-full.txt): the text of every public page. - [Download](https://sparetext.dev/download): Android APK, iPhone IPA and Shortcut, Sparetext for Mac, and the command-line relay. - [Privacy policy](https://sparetext.dev/privacy) - [Terms of use](https://sparetext.dev/terms) --- # Sparetext: SMS gateway and MCP server for iPhone and Android (https://sparetext.dev/) See it in 40 seconds. An agent texts a customer from your phone, the reply comes back, and every text shows its status. No numbers to rent, no per-message fees. Sparetext in 40 seconds: an AI agent texts a customer from your own phone and reads the reply. One phone, three ways in. Send from a script with one request. Hand the phone to an agent with one URL. React to every reply with a signed webhook. send_sms Text one person or a hundred, now or later wait_for_reply Hold for the answer, or a verification code get_conversation Read the whole thread with someone list_conversations See who wrote back and what's unread get_message Check whether a text went out, and why not list_devices Know which phone is online before sending REST MCP Webhooks TERMINAL curl -X POST https://sparetext.dev/api/v1/messages \ -H "x-api-key: $SPARETEXT_API_KEY" \ -H "content-type: application/json" \ -d '{"to": "+15551234567", "text": "Your code is 481920"}' Copy Already on textbee? The /gateway/send-sms endpoint takes the same body, so you change the URL and the key. Works with the phone you have. Even an iPhone. Apple doesn't let any app send texts in the background. Instead of pretending, Sparetext gives you every path Apple does allow, and says what each one can do. Feature Android The app on its own iPhone + Mac Mac relay iPhone Shortcut auto-send iPhone Tap to send Sends on its own Yes Yes While the app is open One tap per text Reads replies Yes Yes Through a Shortcuts automation Through a Shortcuts automation Delivery status Sent and delivered Sent or failed Sent Sent or canceled Extra hardware None A Mac that stays on None None Setup About 2 minutes About 10 minutes About 10 minutes About 2 minutes Mix them: one account can hold several phones of different kinds, and you choose which one sends each text. See every text's journey. Queued, sending, sent, delivered, or failed with the reason the phone gave, in plain words. Replies land in the same thread, and your agents read the same statuses you do. The Overview, with sample data. Questions people ask. Can I use my iPhone as an SMS gateway? Yes, three ways. With a Mac, Sparetext's relay sends and reads texts through Messages from your iPhone's own number with Text Message Forwarding, fully automatically. On the iPhone alone, the app sends through a Shortcut while it is open, or opens each text for you to tap Send. Apple does not let any app send texts silently in the background, so those are the paths that work. Can Claude or ChatGPT send a text message? Yes. Add the Sparetext MCP server as a custom connector in Claude or as an app in ChatGPT developer mode, sign in, and the assistant can send SMS, wait for a reply and read conversations from your own phone. It works with Claude Code, Cursor, OpenClaw, n8n and other MCP clients too. Is Sparetext a Twilio alternative? For texts from your own number, yes. You don't rent a number or pay per message: texts go out from your phone's SIM at your carrier plan's price. It is not built for high-volume marketing; carriers limit how many texts a phone may send. How do I send SMS from an Android phone with an API? Install the Sparetext Android app, scan the pairing code from the dashboard, and send a POST to /api/v1/messages with your API key. The phone sends the text in the background and reports when the carrier delivers it. Is it compatible with textbee? Yes. The /api/v1/gateway/send-sms endpoint accepts the same body as textbee, so existing code can switch by changing the base URL and the key. What does it cost? Free has 1 phone and 300 texts a month. Pro has 5 phones and 10,000 texts a month for $12.74 a month or $84.99 a year, less in many countries, by card or in USDT. While Sparetext is in testing the limits aren't applied, and we'll email you before they are. Each text also costs whatever your carrier plan charges, which is nothing on most unlimited plans. Pair a phone in two minutes. Free for 1 phone and 300 texts a month. Your carrier plan pays for the texts. Create your account --- # Download the apps · Sparetext (https://sparetext.dev/download) Get the apps These are test builds you install yourself, not store listings. After installing, pair the phone from Phones › Add phone in the dashboard. Android Automatic Android 8 or newer with a SIM. Sends and receives in the background and reports delivery from the carrier. Version 1.2.0 · Oct 28, 2026 What's new in 1.2.0 • Drops a text that passed its expiry time instead of sending it late. Set up Sparetext on Android in one minute: download, allow, scan, send. Download for Android 1 Open this page on the phone and download the APK. 2 Open it. If Android asks, allow your browser to install unknown apps. 3 Open Sparetext, allow SMS and notifications, and turn off battery optimization when it asks, so Android doesn't pause it. 4 Scan the code from the dashboard. The phone shows Online within seconds. iPhone Semi-automatic Apple doesn't let any app send or read texts on its own, so the iPhone app uses the paths Apple allows. For fully automatic sending from an iPhone, add Sparetext for Mac below. Version 1.1.0 · Oct 28, 2026 What's new in 1.1.0 • Send while locked can start from a notification instead of an email (iOS 27). • Texts are never sent twice when a locked-phone run stops partway. • Says when a newer version is out. Shortcut auto-send The app hands each batch to the “Sparetext Send” shortcut, which sends with the Messages action and returns. Automatic while the app is open, so it suits a spare iPhone on a charger. Tap to send The app opens each text ready to go in the Messages sheet and you tap Send. Works on any iPhone with no setup. Set up Sparetext on iPhone: install, trust, add the shortcut, pair, and send. Download the iPhone app 1. Install the app (about 5 minutes, once) 1 On a Mac or PC, install Sideloadly or AltStore. The app isn't on the App Store yet. 2 Connect the iPhone with a cable, drop the IPA in, and sign in with your Apple ID when it asks. It signs the app for your phone only. 3 On the iPhone, open Settings › General › VPN & Device Management, tap your Apple ID and Trust. If iOS asks, turn on Settings › Privacy & Security › Developer Mode and restart. 4 With a free Apple ID the app has to be refreshed every 7 days; AltStore does it for you over Wi-Fi. A paid developer account lasts a year. 2. Pair it (1 minute) 1 In the dashboard, open Phones › Add phone › iPhone. A QR code appears. 2 Open Sparetext on the iPhone, allow notifications, and tap Scan QR code. The dashboard shows the phone as Online. 3. Add the shortcut, so texts send by themselves while the app is open (2 minutes) 1 On the iPhone, tap Get the shortcut in the app (or the button below, in Safari). Safari asks to download it: tap Download. 2 Tap the downloads arrow in Safari's address bar, then the file. Shortcuts opens: tap Add Shortcut. Keep its name, Sparetext Send. 3 Back in Sparetext, tap Run the check, then Turn on Auto-send. If Shortcuts says it can't open the file, the app has Build it by hand: four actions, about three minutes. 4 The first time it sends, iOS asks whether Sparetext Send may send messages. Choose Always Allow, or every batch waits for you. Get the Sparetext Send shortcut 4. Optional: send while the iPhone is locked A Shortcuts automation can run even on a locked iPhone when a particular email arrives, or on iOS 27 when an app's notification does. Sparetext sends one of those when texts are waiting, so a spare iPhone on a charger can send with nobody touching it. 1 Add the second shortcut, Sparetext Auto Send, the same way as step 3. 2 In Sparetext, open Settings › Send while locked, pick how it wakes the phone, and follow its steps: a Shortcuts automation on that email or notification that runs Sparetext Auto Send, with Run Immediately on. 3 In Shortcuts, open Sparetext Auto Send, tap ⓘ and turn on Allow Running When Locked. The app's Send a test button checks it. Get the Sparetext Auto Send shortcut Receive texts on iPhone 1 In Shortcuts, open Automation › New Automation › Message. 2 Pick a Sender, or a word under Message Contains; iOS has no "anyone" option. Choose Run Immediately. 3 Add the action Forward Text to Sparetext, then Done. The app's Receive texts screen walks you through it. To get every reply with no setup per sender, use Sparetext for Mac below. Sparetext for Mac Automatic A menu-bar app for macOS 14 or newer. With Text Message Forwarding on, your Mac sends texts through Messages from your iPhone's number and reads every reply, with no taps. Version 1.1.0 · Oct 28, 2026 What's new in 1.1.0 • Says when a newer version is out. Download for Mac 1 On the iPhone, turn on Settings › Apps › Messages › Text Message Forwarding for your Mac. 2 Unzip the download, move Sparetext to Applications and open it. It isn't notarized yet, so the first time macOS stops it: open System Settings › Privacy & Security and click Open Anyway. 3 In the dashboard, open Phones › Add phone › iPhone + Mac relay and click Open in Sparetext, or type the code in the app. 4 The app's setup list takes you to Full Disk Access, so it can read replies, and asks once to use Messages. It starts at login and shows its status in the menu bar. Command line instead (for servers and scripts) --- # Pricing · Sparetext (https://sparetext.dev/pricing) Pricing Start free. Get Pro when you need more phones or texts, by the month or the year. Your carrier plan pays for the texts themselves, so there are no per-message fees. Free $0 For trying it, and for small jobs. 1 phone 300 texts a month REST API, OpenAPI spec and a textbee-compatible send endpoint Signed webhooks, keyword auto-replies and scheduled texts MCP server for Claude, ChatGPT, Cursor and other AI agents Apps for Android, iPhone and Mac, and a command-line relay Create your account Pro Yearly saves 44% $84.99 a year Or $12.74 a month. Less in many countries, see below. Up to 5 phones 10,000 texts a month Everything in Free Pay by card, or in USDT for 1 or 12 months ahead Get Pro Prices by country Prices are in US dollars and follow purchasing power, so the country you buy from sets your price. It's shown before you pay. By card, sales tax or VAT is added at checkout where it applies. Where you buy from Monthly Yearly United States, United Kingdom, Germany, Canada, Australia, Japan and every country not listed below $12.74 $84.99 Spain, Italy, Portugal, Poland, Czechia, South Korea, Taiwan, Saudi Arabia, Chile $9.99 $67.99 Brazil, Mexico, Argentina, Colombia, Türkiye, South Africa, Romania, Malaysia, Thailand $6.49 $60 India, Indonesia, Philippines, Vietnam, Nigeria, Kenya, Ghana, Egypt, Morocco, Ukraine $5 $60 Ethiopia, Bangladesh, Nepal, Pakistan, Uganda, Tanzania, Rwanda, Cambodia, Myanmar $5 $60 Questions What counts as a text? Each text you ask Sparetext to send counts once, whether it comes from the API, an AI agent, an automation or the dashboard. Retries don't count again, a text you cancel before it leaves gives its count back, and received texts never count. The count starts again on the 1st of each month (UTC). Are the limits on now? Not yet. While Sparetext is in testing the limits are counted but not applied, and every account will get an email at least 14 days before they are. What happens at the limit? New sends get a clear error saying how many texts are left and when the count starts again, so nothing is dropped silently. Texts you receive keep arriving, and the phones you already paired keep working. How does Pro renew? By card, Pro renews every month or every year until you cancel it from Settings › Plan › Manage billing, and stays Pro to the end of the period you paid for. In USDT you pay 1 or 12 months ahead and nothing renews by itself; paying again adds to the time you have left. How do I pay? By card, processed by Stripe, which emails your receipt. Or in USDT on TRON (TRC-20) from any wallet or exchange: you get an exact amount and an address, and Pro turns on by itself once the transfer is confirmed. Can I get a refund? Yes. Write to hello@sparetext.dev within 14 days of paying, no reason needed. A card refund goes back to the card; a crypto refund goes to the address it came from, less the network fee. Do I pay for each text? Not to Sparetext. Texts go out from your phone's own SIM, so your carrier plan pays for them, which is nothing on most unlimited plans. The full rules are in the terms. --- # SMS API reference · Sparetext (https://sparetext.dev/docs) Authentication Send a text Check a text List texts Cancel a text List phones textbee-compatible send Webhooks Errors Authentication Create a free account, pair a phone, and make a key on the API keys page and send it as the x-api-key header, or as Authorization: Bearer. Base URL: https://sparetext.dev/api/v1 Copy Endpoints curl Node.js Python POST /messages Send a text Queues the text on your default phone (or the one you name) and wakes it. Up to 100 recipients and 1,600 characters. One SMS holds 160 GSM-7 characters, or 153 per segment when it's longer; an emoji or any character outside GSM-7 makes it UCS-2, with 70 (or 67 per segment). Carriers bill each segment. to string or string[], up to 100. E.164 numbers, like +447700900124. A number without a country code is read in your account's country (Settings › Phone numbers) and refused if none is set. Numbers that replied STOP are skipped and listed in skipped. text string. The message. deviceId optional. Which phone sends it. scheduledAt optional ISO time, up to 30 days ahead. ttl optional whole seconds, 10 to 30 days. If the text hasn't gone out this long after it may (scheduledAt, or now), it is dropped unsent and fails with error expired. For one-time codes. Or give expiresAt, an ISO time, instead. Idempotency-Key optional header. Any unique string; a retry with the same key within 24 hours gets the first answer back instead of texting again. REQUEST curl -X POST https://sparetext.dev/api/v1/messages \ -H "x-api-key: $SPARETEXT_API_KEY" \ -H "content-type: application/json" \ -d '{"to": "+15551234567", "text": "Your code is 481920", "ttl": 300}' Copy RESPONSE { "batchId": "b_x1…", "messages": [{ "id": "msg_20261027_k3j9x2ab", "contact": "+15551234567", "status": "queued", … }] } GET /messages/{id} Check a text Status moves queued → dispatched (shown as Sending: the phone has it) → sent → delivered, or failed with the phone's reason in error. Only Android phones get delivery reports, so on iPhone sent is final. REQUEST curl https://sparetext.dev/api/v1/messages/msg_20261027_k3j9x2ab \ -H "x-api-key: $SPARETEXT_API_KEY" Copy RESPONSE { "message": { "id": "msg_…", "status": "delivered", "sentAt": "…", "deliveredAt": "…" } } GET /messages List texts Newest first. Page with nextCursor. direction inbound or outbound contact only texts with this number status queued, sent, delivered, failed, received… q search the text since ISO time; only newer texts limit 1 to 100, default 50 before the nextCursor from the last page REQUEST curl "https://sparetext.dev/api/v1/messages?direction=inbound&limit=20" \ -H "x-api-key: $SPARETEXT_API_KEY" Copy RESPONSE { "messages": [ … ], "nextCursor": "MjAyNi0xMC0y…" } DELETE /messages/{id} Cancel a text Stops a text that is still scheduled or waiting for the phone. Once the phone has taken it, it can't be called back (409). REQUEST curl -X DELETE https://sparetext.dev/api/v1/messages/msg_20261027_k3j9x2ab \ -H "x-api-key: $SPARETEXT_API_KEY" Copy RESPONSE 204 No Content GET /devices List phones Each phone with online, battery, queue and mode. REQUEST curl https://sparetext.dev/api/v1/devices -H "x-api-key: $SPARETEXT_API_KEY" Copy RESPONSE { "devices": [{ "id": "dev_…", "name": "Pixel 8", "platform": "android", "online": true, "queued": 0 }] } POST /gateway/send-sms textbee-compatible send Same body as textbee's send-sms, so existing code can switch by changing the base URL and key. REQUEST curl -X POST https://sparetext.dev/api/v1/gateway/send-sms \ -H "x-api-key: $SPARETEXT_API_KEY" -H "content-type: application/json" \ -d '{"recipients": ["+15551234567"], "message": "Hello"}' Copy RESPONSE { "data": { "batchId": "b_…", "messages": [ … ] } } Webhooks We POST JSON to your URL for message.received, message.sent, message.delivered, message.failed, device.paired, and device.offline and device.online (an Android phone or Mac relay that stops checking in, and its return; the phone's last status says why). Each request carries X-Sparetext-Signature: t=,v1=, an HMAC-SHA256 of t.body with the webhook's secret. Check it over the raw body, and refuse a t older than 5 minutes. Answer with any 2xx within 5 seconds, then do the work. Anything else is tried again: after 5 seconds, then 5 and 30 minutes, then 2, 5, 10 and 10 hours, 8 tries in all. Every try sends the same body with the same id, signed afresh, and X-Sparetext-Attempt counts them, so skip an id you have already handled. Events can arrive out of order. NODE.JS import { createHmac, timingSafeEqual } from "node:crypto"; // rawBody: the request body exactly as it arrived (a string or Buffer). export function fromSparetext(rawBody, header, secret) { const sig = Object.fromEntries(String(header ?? "").split(",").map((p) => p.split("="))); const expected = createHmac("sha256", secret).update(`${sig.t}.${rawBody}`).digest("hex"); const fresh = Math.abs(Date.now() / 1000 - Number(sig.t)) < 300; return fresh && String(sig.v1).length === expected.length && timingSafeEqual(Buffer.from(String(sig.v1)), Buffer.from(expected)); } Copy Android's sending limit Android lets an app send 30 SMS parts a minute (a long text counts each part). Over that it stops to ask the person holding the phone, so Sparetext paces under it and texts beyond it wait, queued, for the next minute. To send faster from a phone you own, raise the limit over USB with adb, then restart the phone: SHELL adb shell settings put global sms_outgoing_check_max_count 1000 Copy Carriers watch volume too: hundreds of texts an hour from one SIM can get it filtered or blocked, whatever Android allows. Errors Every error has a status, a stable code and a sentence you can show to people. 409 {"error": {"code": "no_device", "message": "Connect a phone first: Phones > Add phone."}} 400 bad_request Something in the body is wrong; the message says what. 401 unauthorized Missing, wrong or revoked key. 404 not_found No such text, phone or endpoint. 409 no_device No phone is on to send it. 429 rate_limited Slow down and retry. 500 internal Our side. Retry with backoff. --- # AI agents: text from Claude, ChatGPT and Cursor · Sparetext (https://sparetext.dev/agents) What this does When you ask Claude or ChatGPT to text someone, it sends the text from your phone, and it can read the texts you get back. It can text any number you ask it to, and it asks you before each text goes out. You add Sparetext once, as a "custom connector" in Claude or ChatGPT: copy the address below, then follow the steps for your app. You need a plan that allows custom connectors. On Claude, every plan does (the free plan allows one). On ChatGPT, it depends on your plan and workspace. Your connection address Live https://sparetext.dev/mcp Copy You sign in with your Sparetext account, or use a key An MCP server: works with Claude, ChatGPT and Cursor For apps that can't sign in, make a key and we'll put it into the setup steps. Create a free account TOOLS YOUR AGENT GETS send_sms Send a text to one or more numbers wait_for_reply Wait a few seconds for a reply or a code get_conversation Read the thread with one number list_conversations Who texted, with unread counts mark_read Clear the unread count for a number list_messages Search sent and received texts get_message Check one text's status cancel_text Stop a text that hasn't gone out yet list_devices Which phones are online, and how they send get_stats Totals for the last N days Claude OAuth ChatGPT OAuth Cursor and others OpenClaw n8n, Zapier, Make claude.ai, Claude Desktop and the Claude apps 1 Open Customize › Connectors and choose Add custom connector. 2 Paste the server URL. Leave the OAuth client fields empty. https://sparetext.dev/mcp Copy 3 Click Add, then Connect. A Sparetext page opens: sign in and choose Allow. If Claude asks how to sign in, pick Sign in now and Use Claude's published identity. 4 In a chat, open + › Connectors, turn on Sparetext, and ask: “Text +44 7700 900124 that I'm running 10 minutes late.” Claude asks before each send. The Free plan allows one custom connector. On Team and Enterprise plans an Owner adds it first, under Organization settings › Connectors. Claude Code TERMINAL claude mcp add --transport http --scope user \ sparetext https://sparetext.dev/mcp claude mcp login sparetext Copy The login opens a Sparetext page: choose Allow. Inside Claude Code, /mcp does the same. Or skip the browser and pass a key: TERMINAL claude mcp add --transport http --scope user \ sparetext https://sparetext.dev/mcp \ --header "Authorization: Bearer YOUR_API_KEY" Copy Agents send texts to real people from your number. Each connection gets its own key, listed on API keys, where you can cut it off at any time. --- # Changelog · Sparetext (https://sparetext.dev/changelog) Changelog What changed, and when. The apps say when a newer version is out; get it from Download. New releases are also posted to t.me/sparetext. OCTOBER 28, 2026 Android 1.2.0 • Drops a text that passed its expiry time instead of sending it late. Dashboard and API 1.2.0 • Texts can expire: give a ttl, and one that hasn't gone out in time is dropped, never sent late. • Webhooks are tried again when your server doesn't answer: 8 tries over about a day. Android 1.1.0 • Wakes within seconds through Google's push service, even with the screen off. • Paces texts under Android's sending limit and holds refused ones instead of failing them. • Reports battery, signal and background limits to the dashboard. • Says when a newer version is out. Dashboard and API 1.1.0 • The dashboard shows its numbers sooner on slow phone networks. • Phones and the site say when a newer app is out. • Conversations, tables and menus fit and behave on a phone. iPhone 1.1.0 • Send while locked can start from a notification instead of an email (iOS 27). • Texts are never sent twice when a locked-phone run stops partway. • Says when a newer version is out. Mac 1.1.0 • Says when a newer version is out. OCTOBER 27, 2026 Android 1.0.0 • First release. Dashboard and API 1.0.0 • First release on Cloudflare. iPhone 1.0.0 • First release. Mac 1.0.0 • First release. --- # Privacy policy · Sparetext (https://sparetext.dev/privacy) Privacy policy Last updated 29 October 2026 Sparetext is a test service that turns your own phone into an SMS gateway. This page says what we store, why, and how to remove it. We don't sell data, we don't show ads, and we don't use your texts to train any model. What we store Your account: name, email, and a scrypt hash of your password (never the password itself). Your texts: the phone numbers and content of texts you send and receive through Sparetext, their statuses and times, and which phone handled them. They are kept so you, your scripts and your agents can read them, until you delete your account. Which incoming texts are saved: an Android phone saves every SMS it receives, from anyone, while Forward received texts is on in the app and Save received texts is on for that phone under Phones. The Mac app reads Messages and saves one-to-one texts and iMessages; a newly paired Mac saves only texts from people you have texted through Sparetext, and you can change that per phone. Group chats are never read. Neither app uploads texts that arrived before you paired it, and neither reads your contacts. To save only replies on any phone, choose Save texts only from people you've texted in that phone's menu. Your phones: the name, model, OS and app version each phone reports, its battery and network state, and when it last checked in. Keys and integrations: hashes of your API keys, the webhook URLs and automations you set up, and a log of the last 50 deliveries to each webhook. If you turn on Send while locked for an iPhone: the email address you give for it, or its Apple push token, and when the last wake went out. Feedback you send (bug reports, feature requests and help requests): your words, your account email, and the page or the app version, phone model and OS it came from, kept so we can answer and fix things. If you buy Pro: your plan, how you paid, and when. For a card payment, the payment's id at Stripe; for a crypto payment, the transaction id and the address it came from. How many texts you send each month, to apply your plan's limit. Who else sees anything Our servers run on Cloudflare (Workers, with the data above stored in Cloudflare D1 in Western Europe). Cloudflare Web Analytics counts page views and load times on the site, without cookies. Our fonts are served from our own domain, so pages make no requests to Google. To wake a phone instantly we send the single word “sync” to a random private channel on ntfy.sh; no number or text content is ever sent there. An Android phone with Google Play services is also woken through Google's Firebase Cloud Messaging: Google sees that the phone is woken and its push token, never a number or a text. If you turn on Send while locked, Cloudflare Email Sending delivers a short wake email from wake@sparetext.dev to the address you gave, or Apple's push service delivers a wake notification to the iPhone; neither holds a number or a text. Feedback you send reaches the Sparetext team through Telegram, with your account email. If you write to the Sparetext bot on Telegram, Telegram sees those messages as it does any chat. If you pay by card, Stripe (stripe.com), our payment processor, gets your email, your card and your billing details, and keeps its own records of the payment; we never see the card. A crypto payment is public on its blockchain, as every transfer there is. Webhooks and automations send your texts only to the URLs you enter. AI apps you connect (such as Claude or ChatGPT) can read and send texts only after you allow them on our consent screen, and you can disconnect them on the API keys page. Not for health or other sensitive data Don't use Sparetext for health information, or for other sensitive categories of personal data. Sparetext is not HIPAA compliant and we don't sign business associate agreements. The people you text You are responsible for having the right to text the people you message. When someone replies STOP (or STOPALL, UNSUBSCRIBE, CANCEL, END or QUIT), Sparetext stops texting that number until they reply START. Texts leave from your own phone and number and are billed by your carrier. Deleting your data Settings › Download my data gives you everything we store for you, as JSON. Settings › Delete account removes your account, phones, keys, webhooks, automations and every stored text straight away. Removing a phone revokes its access immediately; its texts stay until you delete the account. Two copies outlast a deletion for a short time: the database's point-in-time recovery (Cloudflare D1 Time Travel) keeps earlier states for 30 days, and server logs, which can include a phone number in a web address, are kept for up to 7 days. Neither is used for anything but recovering from faults. Contact Sparetext is run by Elias Ayele, who decides how the data above is used (the data controller). Sparetext is in testing. For questions about your data, write to hello@sparetext.dev. --- # Terms of use · Sparetext (https://sparetext.dev/terms) Terms of use Last updated 29 October 2026 These terms are between you and Elias Ayele, who runs Sparetext. Sparetext is offered as a free test service, as is, with no warranty and no promise of uptime. It may change or stop at any time. Plans and price Free has 1 phone and 300 sent texts a month. Pro has up to 5 phones and 10,000 sent texts a month. Each text you ask Sparetext to send counts once; received texts don't count, and a text you cancel before it leaves gives its count back. While Sparetext is in testing the limits are counted but not applied, and we'll email you at least 14 days before they are. Pro is paid monthly or yearly. Prices are in US dollars, depend on the country you buy from, and are shown before you pay. For card payments, sales tax or VAT is added at checkout where it applies, and a business can enter its tax ID instead. By card, Pro renews every month or year until you cancel it under Settings › Plan › Manage billing, and stays Pro to the end of the period you paid for. In USDT or USDC you pay 1 or 12 months ahead; nothing renews by itself, and paying again adds to the time left. Pro given by the Sparetext team lasts as long as it says. Pro is sold by Elias Ayele, who runs Sparetext. Card payments are processed by Stripe, which emails the receipt. Crypto payments (USDT or USDC) go straight to Sparetext's own wallet, and the receipt comes by email. Send the exact amount on the network shown; a transfer of another amount, coin or network can't be matched and may be lost. Refunds: write to hello@sparetext.dev within 14 days of paying, no reason needed. A card refund goes back to the card; a crypto refund goes to the address it came from, less the network fee. You can download your data and delete your account at any time. Acceptable use Only text people who expect to hear from you. No spam, bulk unsolicited marketing, phishing, harassment, or anything illegal where you or the recipient are. Follow your carrier's rules; many limit how many texts a phone may send. We may suspend accounts that are used for abuse. Your phone, your number Texts go out from your own phone and SIM. Carrier charges are yours. Keep your API keys secret: anyone holding one can send texts from your phones. AI agents When you connect an AI agent, you are responsible for what it sends on your behalf. Review what it plans to send, and disconnect it if you no longer want it to have access. Security Found a security problem? Email hello@sparetext.dev with the steps to reproduce it. Test only against your own account and data, and give us a reasonable time to fix it before telling others.