The SMS API that connects your applications to your customers.
Add business SMS to your website, CRM, ERP or business software. A simple HTTP SMS API, automated notifications and accurate tracking of every message.
<?php// Free test: recipient 999 (no real SMS sent)$data = [ 'user' => getenv('TH_USER'), 'pass' => getenv('TH_PASS'), 'cmd' => 'sendsms', 'to' => '999', 'txt' => 'TextingHouse SMS API test', 'iscom' => 'N'];$ch = curl_init('https://api.textinghouse.com/http/v1/do');curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_POSTFIELDS => http_build_query($data), CURLOPT_RETURNTRANSFER => true]);echo curl_exec($ch); // ID:... or ERR:...curl_close($ch);// Node.js 18+ (ES module) · free test to 999const params = new URLSearchParams({ user: process.env.TH_USER, pass: process.env.TH_PASS, cmd: 'sendsms', to: '999', txt: 'TextingHouse SMS API test', iscom: 'N'});const res = await fetch('https://api.textinghouse.com/http/v1/do', { method: 'POST', body: params});console.log(await res.text()); // ID:... or ERR:...# Free test: recipient 999curl -X POST 'https://api.textinghouse.com/http/v1/do' \ --data-urlencode 'user=YOUR_USERNAME' \ --data-urlencode 'pass=YOUR_PASSWORD' \ --data-urlencode 'cmd=sendsms' \ --data-urlencode 'to=999' \ --data-urlencode 'txt=TextingHouse SMS API test' \ --data-urlencode 'iscom=N'# Response: ID:... or ERR:...ID:5d726149a129c829e8c23f7b✓ AcceptedEvery SMS API feature your software needs.
From transactional SMS to customer communication, the TextingHouse SMS API gives you the features you need to automate your messaging without making your development more complex. Every platform feature is available through the API.
Automated SMS sending
Trigger confirmations, reminders, alerts or verification codes from your website, app or management software.
Delivery reports
Receive the final status of your SMS through a JSON callback (webhook) or query the API with getstatus.
Two-way SMS replies
Receive your recipients’ replies on a dedicated URL, where the destination and sender type allow it.
Custom sender ID
Show your company name (11 characters) instead of a number, subject to the rules of the destination country.
STOP opt-out management
Opt-outs from marketing SMS are collected automatically thanks to the STOP sms-s.top mention.
Credit balance check
Check your balance from your application with the getcredit command and keep track of usage.
Your own message ID
Attach your internal reference to every SMS with climsgid to match sends, statuses and replies.
Secure access
HTTPS connection on port 443, dedicated API credentials and sending locked to your server’s IP address.
Service continuity
A backup server, api2.textinghouse.com, takes over if the main endpoint does not respond.
Good to know: SMS replies (MO) are available depending on the country and the operator. A custom sender ID prevents recipients from replying directly. The precise technical conditions are in the SMS API documentation.
From sign-up to your first SMS sent by API.
A lightweight integration in your environment and documentation covering every SMS API parameter.
Create your account
Sign up for free and find your API credentials on the “Settings” page of your TextingHouse interface.
Connect your application
Call the HTTPS endpoint with your URL-encoded parameters, using POST or GET, from the language of your choice.
Test, then send
Use the 999 recipient to test the whole sending chain for free, then go live.
An HTTP SMS API. Clean code. SMS built into your tools.
No proprietary SDK to install: send an HTTPS request with the expected fields and get the message ID back. SMS API examples in PHP, Node.js, Python and cURL, ready to adapt.
- Endpoint:
https://api.textinghouse.com/http/v1/do - POST or GET, URL-encoded parameters, HTTPS connection
sendsms,getstatusandgetcreditcommands- Plain-text responses:
ID:…orERR: code | description - JSON callbacks for final statuses (DLR) and SMS replies (MO)
# Python 3 · requests libraryimport osimport requestsr = requests.post( "https://api.textinghouse.com/http/v1/do", data={ "user": os.environ["TH_USER"], "pass": os.environ["TH_PASS"], "cmd": "sendsms", "to": "999", # free test "txt": "TextingHouse SMS API test", "iscom": "N", "climsgid": "ORDER-2026-0412", # your own ID }, timeout=10,)print(r.text) # ID:... or ERR:...# Status of an SMS from its IDcurl 'https://api.textinghouse.com/http/v1/do' \ --get \ --data-urlencode 'user=YOUR_USERNAME' \ --data-urlencode 'pass=YOUR_PASSWORD' \ --data-urlencode 'cmd=getstatus' \ --data-urlencode 'api_id=5d726149a129c829e8c23f7b'# Response: 3 (3 = delivered)# DLR callback: TextingHouse calls your URLPOST https://www.your-domain.com/sms/dlrContent-Type: application/json{ "apimsgid": "5d726149a129c829e8c23f7b", "climsgid": "ORDER-2026-0412", "status": "3"}# Your script simply replies with an HTTP 2XX code# MO callback: a recipient's replyPOST https://www.your-domain.com/sms/repliesContent-Type: application/json{ "apimsgid": "5d726149a129c829e8c23f7b", "climsgid": "ORDER-2026-0412", "from": "447700900123", "txt": "Yes, confirmed", "date": "2026-10-29T13:09:16Z"}Key SMS API parameters
sendsms command. Parameters are case-sensitive; authentication uses user and pass.
| Parameter | Status | Purpose |
|---|---|---|
cmd | Required | Command: sendsms (send), getstatus (status) or getcredit (credit). |
to | Required | Recipient number in international format, without “+” (e.g. 447700900123). 999 for a free test. |
txt | Required | SMS text, URL-encoded. Up to 160 GSM 03.38 characters per SMS. |
iscom | Required | N: transactional SMS, sent at any time. Y: marketing SMS, with set sending hours and the STOP sms-s.top mention. |
from | Optional | Custom sender ID (11 characters a-z, A-Z, 0-9), from the names approved for your account. |
climsgid | Optional | Your internal ID (up to 32 characters), included in statuses and replies. |
The right SMS, at the right time, from your applications.
Build automated SMS into your processes to inform customers, users or teams at the moments that matter.
E-commerce
Order confirmations, dispatch notices, parcels ready to collect or items back in stock.
SMS marketingAppointments
Confirmations, reminders the day before and schedule changes sent automatically from your calendar.
SMS for healthcareCRM and ERP
Follow-ups, business notifications and messages triggered by your software workflows.
SMS in HubSpotAlerts and codes
Service alerts, verification codes and urgent information sent at any time.
SMS for logisticsA free SMS API.
You only pay for your SMS.
No API access fee, no subscription, no commitment. You buy credits as you need them: the price of an SMS depends on its destination, among more than 150 countries, and on the volume purchased. Tests to 999 are free.
Everything you need to know about our SMS API.
The key answers before integrating an HTTP SMS gateway into your application.
What is an SMS API and what is it used for?
An SMS API is an interface that lets a website, business software, CRM or ERP send SMS programmatically. With the TextingHouse HTTP SMS API, your applications automatically send confirmations, reminders, alerts or codes, and get the status of every message.
Is the TextingHouse SMS API free?
API access is free, with no subscription or commitment. Only the SMS actually sent are charged, at the price of their destination and depending on the volume of credits purchased. Test messages to the number 999 are free. See SMS pricing.
How can I test sending SMS by API for free?
Create your account, then send a message to the special recipient 999. The API handles it like a real SMS: it returns an ID, accepts your internal ID, answers status requests and sends back a “delivered” report, without any SMS being handed to an operator. You can also unlock 10 real SMS to validate your integration.
Which programming languages can I use?
Any language that can send an HTTP request: PHP, JavaScript and Node.js, Python, Java, C#, Go, Ruby, as well as no-code tools or a simple cURL command. No SDK is needed: the API receives URL-encoded parameters by POST or GET over HTTPS and replies in plain text.
How do I receive SMS delivery reports (DLR)?
Enter a callback URL in your API account settings. TextingHouse sends it an HTTP POST request in JSON as soon as an SMS reaches a final status (delivered, expired, undeliverable…). You can also query the API with the getstatus command using the message ID or your own climsgid.
Can recipients reply to SMS sent through the API?
Yes, depending on the country and the operator. Replies (MO SMS) are forwarded in JSON to the URL of your choice. Note that when a custom sender ID is used, recipients cannot reply.
Can I customise the SMS sender ID?
Yes. The from parameter shows your company name, up to 11 characters without accents, from the names approved for your account. Some countries or operators do not accept custom sender IDs: in that case it is replaced at the time of sending.
How do I send marketing and transactional SMS with the API?
The required iscom parameter states the type of message. A transactional SMS (iscom=N: confirmation, reminder, alert, code) goes out at any time. A marketing SMS (iscom=Y) is sent Monday to Friday from 8 am to 8 pm and on Saturday from 10 am to 3 pm, in the recipient’s local time, and must end with the STOP sms-s.top mention, which handles opt-outs automatically.
How many characters can an SMS sent by API contain?
An SMS holds up to 160 characters from the GSM 03.38 alphabet. Beyond that, the message is split into several SMS and each part is counted.
What happens if the API does not respond?
Plan an automatic failover: if a request to api.textinghouse.com gets no response, send it again immediately to the backup server api2.textinghouse.com. This redundancy keeps your sending running.
What is the difference between an HTTP SMS API and an SMPP connection?
The HTTP API suits the vast majority of integrations: websites, applications and business software. For aggregators and high-traffic software publishers, TextingHouse also provides dedicated connections (SMPP, XML, FTP) or a custom connection. Contact us to discuss it.
Ready to add SMS to your applications?
Create your account for free and run your first SMS API test to 999, with no commitment.