Quick Start

HTTP SMS 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.


API requests to HTTP SMS are authenticated using API keys in the x-api-key header. Any request that doesn't include an API key will return a 401 (Unauthorized) response.
You can get your API key from the dashboard at

Install the Android App

To send and receive SMS messages using your android phone, you will need to download and install our android app on your phone so it can be triggered to send an SMS message when you make a request to the HTTP SMS API.

Send an SMS

To send an SMS message using an android phone, send an authenticated POST request to the endpoint.
Send a new SMS message
// initialize guzzle client
$client = new GuzzleHttp\Client();
$apiKey = "Get API Key from";
$res = $client->request('POST', '', [
'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";
fetch('', {
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"
url = ''
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 =, headers=headers, data=json.dumps(payload))
curl --location --request POST '' \
--header 'x-api-key: Get API Key from' \
--header 'Content-Type: application/json' \
--data-raw '{
"from": "+18005550199",
"to": "+18005550100",
"content": "This is a sample text message"
import ""
client := htpsms.New(htpsms.WithAPIKey(/* API Key from */))
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 */);
var response = await client.PostAsync(
new StringContent(
JsonSerializer.Serialize(new {
from = "+18005550199",
To = "+18005550100",
Content = "This is a sample text message",
Console.WriteLine(await response.Content.ReadAsStringAsync());
var client = HttpClient.newHttpClient();
var apiKey = "Get API Key from";
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()
.header("accept", "application/json")
.header("x-api-key", apiKey)
.setEntity(new StringEntity(request.toString()))
// use the client to send the request
var response = client.send(request, new JsonBodyHandler<>(APOD.class));
// the response:

Install the library

The best way to interact with our API is to use one of our official libraries:
# install the go package using the "go get" command
go get
Last modified 1mo ago