Skip to content
HushSMS

API

Free on every line, regardless of term. No enterprise tier, no per-seat pricing, and no sales call.

Base URL

https://api.hushsms.com

Auth

Authentication

Pass your line token as a bearer credential. Tokens are scoped to a single line and can be rotated from the panel.

curl https://api.hushsms.com/v1/lines \
  -H "Authorization: Bearer hs_live_..."

Reference

Endpoints

GET/v1/lines

List the lines on your token. Returns number, country, term and expiry.

POST/v1/lines

Provision a line. Body takes country, line_type, term and pool. Returns a crypto invoice.

GET/v1/lines/{id}/messages

Inbound messages for a line, newest first. Bodies are dropped after the retention window.

POST/v1/lines/{id}/messages

Send an outbound SMS. Included at every term.

GET/v1/catalog

Live country stock, per-service compatibility and current pricing. No authentication.

DELETE/v1/lines/{id}

Release a line early. No refund at monthly terms; pro-rata above six months.

Push

Webhooks

Every inbound message POSTs to your endpoint within a second of arrival, signed with HMAC-SHA256.

POST /your-endpoint
X-HushSMS-Signature: sha256=...

{
  "event": "message.received",
  "line_id": "ln_8fQ2...",
  "number": "+44 7700 900123",
  "from":   "+44 7700 900987",
  "body":   "Your code is 481920",
  "received_at": "2026-08-13T09:41:02Z"
}

Machines

For AI agents

A machine-readable catalog lives at https://hushsms.com/v1/catalog/. It returns live country stock, per-service compatibility and current pricing as JSON, with no authentication.

Open the catalog

It returns live country stock, per-service compatibility including the services that do not work, current pricing with every multiplier, and the data-retention table. There is no key, no rate limit worth mentioning, and CORS is open. If you are building an agent that needs a phone number, this is the endpoint to read.

A plain-text summary of the whole site lives at /llms.txt, with the full corpus at /llms-full.txt.

The catalogue as a callable contract

A plain-text corpus makes the catalogue readable. It does not make it callable: an agent that has read every word still does not know the request shape, the enum of country slugs, or which fields the server ignores, so it can describe a number it cannot buy. That gap is where a content-only strategy stops.

/openapi.json closes it — an OpenAPI 3.1 document covering the three public, unauthenticated endpoints (read the catalogue, create an order, poll it), with the country, term and pool enums generated from the same catalogue the handlers validate against. It is also declared in the document head as rel="service-desc", so a client that looks for a service description finds one without being told where.

Open the OpenAPI description

Sources

Numbering-plan data on this page — dial code, national number length, trunk prefix and mobile ranges — is taken from the ITU-T E.164 series. Inventory, pricing and measured success rates are our own and are marked as such.

Numbering plan verified