Getting Started
httpSMS is an open-source service that converts your Android phone into an SMS Gateway so you can send and receive SMS messages using an intuitive HTTP API with support for end-to-end encryption.
Authentication
Install the Android App
Send an SMS
This is a sample text messageEncrypted is an optional parameter used to determine if the content is end-to-end encrypted. Make sure to set the encryption key on the httpSMS mobile app
+18005550199RequestID is an optional parameter used to track a request from the client's perspective
153554b5-ae44-44a0-8f4f-7bbac5657ad4SendAt is an optional parameter used to schedule a message to be sent in the future. The time is considered to be in your profile's local timezone and you can queue messages for up to 20 days (480 hours) in the future.
2025-12-19T16:39:57-08:00+18005550100OK
Bad Request
Unauthorized
Unprocessable Entity
Internal Server Error
POST /v1/messages/send HTTP/1.1
Host: api.httpsms.com
x-api-Key: YOUR_API_KEY
Content-Type: application/json
Accept: */*
Content-Length: 193
{
"content": "This is a sample text message",
"encrypted": false,
"from": "+18005550199",
"request_id": "153554b5-ae44-44a0-8f4f-7bbac5657ad4",
"send_at": "2025-12-19T16:39:57-08:00",
"to": "+18005550100"
}{
"data": {
"contact": "+18005550100",
"content": "This is a sample text message",
"created_at": "2022-06-05T14:26:02.302718+03:00",
"delivered_at": "2022-06-05T14:26:09.527976+03:00",
"encrypted": false,
"expired_at": "2022-06-05T14:26:09.527976+03:00",
"failed_at": "2022-06-05T14:26:09.527976+03:00",
"failure_reason": "UNKNOWN",
"id": "32343a19-da5e-4b1b-a767-3298a73703cb",
"last_attempted_at": "2022-06-05T14:26:09.527976+03:00",
"max_send_attempts": 1,
"order_timestamp": "2022-06-05T14:26:09.527976+03:00",
"owner": "+18005550199",
"received_at": "2022-06-05T14:26:09.527976+03:00",
"request_id": "153554b5-ae44-44a0-8f4f-7bbac5657ad4",
"request_received_at": "2022-06-05T14:26:01.520828+03:00",
"scheduled_at": "2022-06-05T14:26:09.527976+03:00",
"scheduled_send_time": "2022-06-05T14:26:09.527976+03:00",
"send_attempt_count": 0,
"send_time": 133414,
"sent_at": "2022-06-05T14:26:09.527976+03:00",
"sim": "DEFAULT",
"status": "pending",
"type": "mobile-terminated",
"updated_at": "2022-06-05T14:26:10.303278+03:00",
"user_id": "WB7DRDWrJZRGbYrv2CKGkqbzvqdC"
},
"message": "Request handled successfully",
"status": "success"
}// initialize guzzle client https://github.com/guzzle/guzzle
$client = new GuzzleHttp\Client();
$apiKey = "Get API Key from https://httpsms.com/settings";
$res = $client->request('POST', 'https://api.httpsms.com/v1/messages/send', [
'headers' => [
'x-api-key' => $apiKey,
],
'json' => [
'content' => 'This is a sample text message',
'from' => "+18005550199",
'to' => '+18005550100'
]
]);
echo $res->getBody(); let apiKey = "Get API Key from https://httpsms.com/settings";
fetch('https://api.httpsms.com/v1/messages/send', {
method: 'POST',
headers: {
'x-api-key': apiKey,
'Accept': 'application/json',
'Content-Type': 'application/json'
},
body: JSON.stringify({
"content": "This is a sample text message",
"from": "+18005550199",
"to": "+18005550100"
})
})
.then(res => res.json())
.then((data) => console.log(data));import requests
import json
api_key = "Get API Key from https://httpsms.com/settings"
url = 'https://api.httpsms.com/v1/messages/send'
headers = {
'x-api-key': api_key,
'Accept': 'application/json',
'Content-Type': 'application/json'
}
payload = {
"content": "This is a sample text message",
"from": "+18005550199",
"to": "+18005550100"
}
response = requests.post(url, headers=headers, data=json.dumps(payload))
print(response.json())curl --location --request POST 'https://api.httpsms.com/v1/messages/send' \
--header 'x-api-key: Get API Key from https://httpsms.com/settings' \
--header 'Content-Type: application/json' \
--data-raw '{
"from": "+18005550199",
"to": "+18005550100",
"content": "This is a sample text message"
}'import "github.com/NdoleStudio/httpsms-go"
client := htpsms.New(htpsms.WithAPIKey(/* API Key from https://httpsms.com/settings */))
client.Messages.Send(context.Background(), &httpsms.MessageSendParams{
Content: "This is a sample text message",
From: "+18005550199",
To: "+18005550100",
})var client = new HttpClient();
client.DefaultRequestHeaders.Add("x-api-key", ""/* Get API Key from https://httpsms.com/settings */);
var response = await client.PostAsync(
"https://api.httpsms.com/v1/messages/send",
new StringContent(
JsonSerializer.Serialize(new {
from = "+18005550199",
To = "+18005550100",
Content = "This is a sample text message",
}),
Encoding.UTF8,
"application/json"
)
);
Console.WriteLine(await response.Content.ReadAsStringAsync());var client = HttpClient.newHttpClient();
var apiKey = "Get API Key from https://httpsms.com/settings";
JSONObject request = new JSONObject();
request.put("content", "This is a sample text message");
request.put("from", "+18005550199")
request.put("to", "+18005550100")
// create a request
var request = HttpRequest.newBuilder()
.uri(URI.create("https://api.httpsms.com/v1/messages/send"))
.header("accept", "application/json")
.header("x-api-key", apiKey)
.setEntity(new StringEntity(request.toString()))
.POST()
.build();
// use the client to send the request
var response = client.send(request, new JsonBodyHandler<>(APOD.class));
// the response:
System.out.println(response.body().get());Install
npm install httpsms
# or
yarn install httpsms# install the go package using the "go get" command
go get github.com/NdoleStudio/httpsms-goLast updated