Docs

Ship your first message in an afternoon

A plain REST API for sending, tracking and receiving SMS — token auth, real-time webhooks and SDKs, with nothing exotic to learn.

Quickstart

Three moves, start to delivered

Every integration is the same short arc — authenticate, send, then track.

01 · AuthenticateToken: sk_live_9f2a7c10Content-Type: application/json ✓

Send your access key as a Token header, with Content-Type: application/json, on every request.

02 · SendPOST /external/sms{ msgid: "9f2a7c10", errorcode: 0 }

POST a from, to and content. The response comes back with a msgid and an errorcode immediately.

03 · TrackGET /report?status=Delivrd200 OK

We POST or GET a status report to your callback URL the moment a message reaches its final state.

Send

One request, in the language you already use

POST your sender, recipient and content with a Token header. The response comes back the moment we accept it.

01curl -X POST https://secure.smslocal.com/api/service/enterprise-service/external/sms \02  -H "Token: $SMSLOCAL_TOKEN" \03  -H "Content-Type: application/json" \04  -d '{05    "from": "SMSLOCAL",06    "to": "14155550123",07    "content": "Your code is 481920."08  }'
201 · Accepted

msgid "9f2a7c10-4b2e-…"

direction "mt"

errorcode 0

Save the msgid — it is how you track this message from here.

The message object

Read a message top to bottom

Send, status and inbound events all return the same shape — learn it once.

01Message ID

Message ID

msgid — minted the moment a message is created. This is the handle you use to check its status later.

02Sender

Sender

from — a phone number, or an alphanumeric ID up to 11 characters, whichever identity your recipients see.

03Recipient

Recipient

to — the number the message is going to, including country code.

04Encoding

Encoding

datacoding — GSM7 fits 160 characters per part; switch to Unicode and that drops to 70. Go over, and it concatenates into extra billed parts.

05Direction

Direction

direction — every message is mt (you sent it) or mo (you received it), the same shape either way.

06Error Code

Error Code

errorcode — returned on the send response and every status report. 0 means accepted; anything else tells you exactly what went wrong.

Reference

One endpoint, two verbs

POST to send, GET to check status — the same URL and the same Token header either way.

POST

Send

Send a message and get back a msgid and an errorcode immediately.

Returns msgid + errorcode
GET

Track

Look up a message you already sent to check its current status.

Returns message + status
Webhooks

Status reports, the moment they happen

Set a callback URL and every delivery, failure and inbound reply lands there as a GET or POST — no polling required.

deliveredmsgid 9f2a7c10 · status Delivrd
inboundreply received · direction mo
failedmsgid 4c81e2 · status Failed
Your endpoint200 OK
Get Started

Get your API key

Start integrating in minutes with our REST API.

Answers To Your Questions

Developer docs — frequently asked questions

Pass your access key in a Token header on every request — Token: {accessKey} — along with Content-Type: application/json.

Every send returns a msgid. Point us at a callback URL and we POST or GET a status report to it the moment the message reaches its final state — subdate, donedate and the resulting status code included.

mt (mobile terminated) is a message you sent; mo (mobile originated) is a reply you received. Both use the same message object shape.

Delivery is retried according to the retry policy — nothing is silently dropped, but an endpoint that never acknowledges will keep receiving retries.

160 characters on GSM7 encoding, or 70 on Unicode. Go past the limit and the message concatenates into multiple parts, each billed separately.