Inbound SMS
Wire2Air forwards each text sent to your short code to your server as a GET request with the sender, the message, the time and the short code.
When someone texts your short code, Wire2Air receives the message from the carrier, works out which customer it belongs to from the short code and keyword, and calls your URL.
https://your-server.example/wire2air/inbound-smsParameters
| Parameter | In | Description |
|---|---|---|
| MobileNumber stringrequired in query | query | The sender's mobile number. |
| Message stringrequired in query | query | The text the sender wrote. |
| Rcvd stringrequired in query | query | When Wire2Air received the message. |
| shortcode stringrequired in query | query | Your number the message was sent to. |
An example request, URL-encoded:
GET /wire2air/inbound-sms?MobileNumber=12125551234&Message=Hello&Rcvd=1-2-2015%2002%3A18%3A30&shortcode=27126 HTTP/1.1
Host: your-server.example
Examples
<?php
// Read the values Wire2Air sends; validate them before you use them.
$sender = $_GET['MobileNumber'] ?? '';
$content = $_GET['Message'] ?? '';
$shortCode = $_GET['shortcode'] ?? '';
$received = $_GET['Rcvd'] ?? '';
// Store the message, then answer quickly.
error_log(sprintf('SMS from %s to %s at %s: %s', $sender, $shortCode, $received, $content));
http_response_code(200);
from http.server import BaseHTTPRequestHandler, HTTPServer
from urllib.parse import parse_qs, urlparse
class InboundSms(BaseHTTPRequestHandler):
def do_GET(self):
params = parse_qs(urlparse(self.path).query)
sender = params.get("MobileNumber", [""])[0]
content = params.get("Message", [""])[0]
short_code = params.get("shortcode", [""])[0]
received = params.get("Rcvd", [""])[0]
print(f"SMS from {sender} to {short_code} at {received}: {content}")
self.send_response(200)
self.end_headers()
HTTPServer(("", 8080), InboundSms).serve_forever()
import { createServer } from "node:http";
createServer((req, res) => {
const params = new URL(req.url, "http://localhost").searchParams;
const sender = params.get("MobileNumber");
const content = params.get("Message");
const shortCode = params.get("shortcode");
const received = params.get("Rcvd");
console.log(`SMS from ${sender} to ${shortCode} at ${received}: ${content}`);
res.writeHead(200).end();
}).listen(8080);
// ASP.NET Core minimal API (.NET 6+, project SDK Microsoft.NET.Sdk.Web).
var app = WebApplication.CreateBuilder(args).Build();
app.MapGet("/wire2air/inbound-sms", (HttpRequest request) =>
{
var sender = request.Query["MobileNumber"].ToString();
var content = request.Query["Message"].ToString();
var shortCode = request.Query["shortcode"].ToString();
var received = request.Query["Rcvd"].ToString();
app.Logger.LogInformation("SMS from {Sender} to {ShortCode} at {Received}: {Content}", sender, shortCode, received, content);
return Results.Ok();
});
app.Run();
Replying
To answer the sender, send a message back to MobileNumber from the same shortcode.

