Transactional SMS via API, priced per part.
Transactional and promotional from a single synchronous REST API: one POST and you get status, parts and price right away. Fixed per-part EUR pricing, prepaid balance, VAT excluded.
One API, every use case
The API
One endpoint per message type.
Bearer auth, JSON in, verdict out: the response tells you right away what went out, in how many parts, and what it cost.
curl -X POST https://sms-jet.com/api/v1/sms/transactional \
-H "Authorization: Bearer gsms_…" \
-H "Idempotency-Key: order-4711-confirmation" \
-H "Content-Type: application/json" \
-d '{
"to": "+393331234567",
"text": "Your verification code is 123456",
"sender_type": "system"
}'{
"id": "0198f3c1-6b2a-7c41-9f0e-2d4a8b5c1e73",
"status": "accepted",
"encoding": "gsm7",
"parts": 1,
"price_eur": "0.0298"
}- Synchronous verdict — the HTTP response is the outcome: accepted or rejected, with id, parts and price. No polling to find out whether the send went through.
- Idempotency-Key — same key on the retry, same response: the message is never sent twice, even if the network dies mid-call.
- Per-part billing, in the response — each part is one billed SMS and the response says so: parts and price_eur on every message, no end-of-month surprises.
- Machine-readable errors — stable codes like INSUFFICIENT_BALANCE or RATE_LIMITED, with structured details you can branch on. Zero prose parsing.
Built for production
Everything around the send, already handled.
Clear pricing, clear outcomes and safe retries: the SMS infrastructure you expect from a developer tool.
Fixed prices per part
EUR rates per message part, VAT excluded. No credits to convert — the price you see is the price you pay.
Transparent prepaid balance
Top-ups by invoice, no credit card required. Every charge and top-up lands in a movement ledger you can audit from the dashboard.
System or alphanumeric sender
The system sender is active immediately, no approval needed. The alphanumeric one (max 11 chars) shows your brand, once approved.
Clear outcomes, automatic refunds
Every send returns a per-recipient verdict in the response; messages that are not accepted are automatically refunded to your balance.
Idempotency-Key support
Pass an Idempotency-Key and retry the request as many times as you need: the same message never goes out twice.
Bilingual IT/EN dashboard
The full interface in Italian and English, with a log of every send: recipient, parts, cost and delivery status.
How it works
Three steps, then it's just a POST.
No endless onboarding: we create the credentials, one token for your app, one call per SMS.
Request your account
No self-signup: we create your credentials for you. Write to us and we provision your account with a prepaid balance — top-ups by invoice, no credit card.
Create an app
Sign in to the dashboard, create an app and grab its API token. Bearer auth: one header and you're in.
Authorization: Bearer sk_live_…
Send
One POST with text and recipient, synchronous response: the verdict comes right back. Safe retries with Idempotency-Key, delivery tracked via DLR.
POST /api/v1/sms/transactional
Pricing
Fixed prices per part. No plans, no monthly fee.
Italy at launch: EUR rates per message part, deducted from your prepaid balance. You pay only for what you send.
| Sender | Transactional | Promotional |
|---|---|---|
| System senderShared number, active immediately | €0.0298 | €0.0391 |
| Alphanumeric senderCustom name, requires approval | €0.0391 | €0.0391 |
160 GSM-7 characters, 153 when concatenated — each part is billed as one SMS.
FAQ
Frequently asked
The practical details, no runaround.
