SMS APIs
Authentication Requirements (As Implemented)
- Every
/api/sms/*endpoint requires cookie session or API key auth. POSTJSON routes below also enforceContent-Type: application/jsonviarequireJson.- Global secondary-session middleware allowlists
/api/sms, so secondary sessions and API-key sessions can call SMS endpoints.
| Endpoint | Auth Required (as implemented) |
|---|---|
GET /api/sms/phones/search |
Cookie session or API key auth |
GET /api/sms/phones |
Cookie session or API key auth |
GET /api/sms/my-phones |
Cookie session or API key auth |
POST /api/sms/reserve |
Cookie session or API key auth + application/json |
POST /api/sms/unreserve |
Cookie session or API key auth + application/json |
GET /api/sms/topranges |
Cookie session or API key auth |
POST /api/sms/add-countries |
Cookie session or API key auth + application/json |
GET /api/sms/feed |
Cookie session or API key auth |
GET /api/sms/history/:number |
Cookie session or API key auth |
GET /api/sms/full-history |
Cookie session or API key auth |
POST /api/sms/free-all |
Cookie session or API key auth + application/json |
Request and Response Examples
GET /api/sms/phones/search
Query parameters:
q(substring)country
Success response (200):
{
"phones": [
{
"number": "447700900123",
"country": "GB",
"range": "mobile",
"countryInfo": {
"iso": "GB",
"flag": "\ud83c\uddec\ud83c\udde7",
"callingCode": "+44",
"formatted": "+44 7700 900123"
}
}
],
"total": 1
}
GET /api/sms/phones
Success response (200):
{
"phones": [
{
"number": "12025550123",
"country": "US",
"range": "mobile",
"countryInfo": {
"iso": "US",
"flag": "\ud83c\uddfa\ud83c\uddf8",
"callingCode": "+1",
"formatted": "+1 202 555 0123"
}
}
],
"totalAvailable": 200,
"showing": 20,
"countries": 15
}
GET /api/sms/my-phones
Success response (200):
[
{
"number": "12025550123",
"country": "US",
"range": "mobile",
"reservedAt": "2026-03-10T00:00:00.000Z",
"countryInfo": {
"iso": "US",
"flag": "\ud83c\uddfa\ud83c\uddf8",
"callingCode": "+1",
"formatted": "+1 202 555 0123"
}
}
]
POST /api/sms/reserve
Request headers:
Content-Type: application/json(required)
Request body:
{ "number": "12025550123" }
Success responses:
{ "ok": true, "message": "Reserved" }
{ "ok": true, "message": "Already yours" }
Common failures:
400:{ "error": "Phone number required" }409:{ "ok": false, "error": "Phone not available" }429: max phones reached
POST /api/sms/unreserve
Request headers:
Content-Type: application/json(required)
Request body:
{ "number": "12025550123" }
Success response (200):
{ "ok": true }
GET /api/sms/topranges
Success response (200):
[
{ "iso": "US", "flag": "\ud83c\uddfa\ud83c\uddf8" },
{ "iso": "GB", "flag": "\ud83c\uddec\ud83c\udde7" }
]
POST /api/sms/add-countries
Request headers:
Content-Type: application/json(required)
Request body:
{ "countries": ["US", "GB", "DE"] }
Success response (200):
{ "ok": true, "message": "Request sent" }
GET /api/sms/feed
Success response (200):
[
{
"number": "12025550123",
"text": "Your code is 1234",
"date": "2026-03-10T00:00:00.000Z"
}
]
GET /api/sms/history/:number
Success response (200):
[
{
"number": "12025550123",
"text": "Your code is 1234",
"date": "2026-03-10T00:00:00.000Z"
}
]
GET /api/sms/full-history
Success response (200):
[
{
"number": "12025550123",
"text": "Your code is 1234",
"date": "2026-03-10T00:00:00.000Z"
},
{
"number": "447700900123",
"text": "Verification: 4567",
"date": "2026-03-10T00:01:00.000Z"
}
]
POST /api/sms/free-all
Request headers:
Content-Type: application/json(required)
Request body:
{}
Success response (200):
{ "ok": true, "freedCount": 2 }