Reference
Service status
The state of the platform is public at status.getsms.tech. The same data can be read through the API, without a key: to show a banner in your application, pause your sends during an outage or feed your own monitoring.
Current status
Section titled “Current status”/v1/statusno key · cached 30 sReturns the state of each service, 90 days of history, the metrics of the last 24 hours and the incidents. Every service is checked each minute.
statusstringoperational, maintenance, degraded, partial_outage or major_outage.checked_atISO 8601 datecomponentsarrayid (api, sending, receiving, webhooks, dashboard, payments, docs), status, uptime_90d (availability over 90 days, as a percentage) and days, the day-by-day history (date, status, downtime_minutes). A day without measurements is no_data.metricsobjectapi_p95_ms (API response time, 95th percentile), send_delay_median_s (median delay between acceptance and sending), delivery_rate_24h (delivery rate as a percentage), and series: the same values hour by hour over 24 hours, oldest first. null when there is no data.incidentsobjectactive (ongoing), scheduled (planned maintenance) and recent (last 90 days). Each incident has a French and an English title (title, title_en), a kind (incident or maintenance), an impact (minor, major, critical or maintenance), the affected services and its updates (updates).curl https://api.getsms.tech/v1/statusconst res = await fetch("https://api.getsms.tech/v1/status");const { data } = await res.json();if (data.status !== "operational") console.warn("GetSMS:", data.status);import requests
data = requests.get("https://api.getsms.tech/v1/status").json()["data"]if data["status"] != "operational": print("GetSMS:", data["status"])<?php$data = json_decode(file_get_contents("https://api.getsms.tech/v1/status"), true)["data"];if ($data["status"] !== "operational") { error_log("GetSMS: " . $data["status"]);}{ "status": "success", "message": "état des services", "data": { "status": "operational", "checked_at": "2026-11-11T09:42:00Z", "components": [ { "id": "sending", "status": "operational", "uptime_90d": 99.98, "days": [{ "date": "2026-11-11", "status": "operational", "downtime_minutes": 0 }] } ], "metrics": { "api_p95_ms": 84, "send_delay_median_s": 3.2, "delivery_rate_24h": 98.7, "series": { "api_p95_ms": [], "send_delay_median_s": [], "delivery_rate": [] } }, "incidents": { "active": [], "scheduled": [], "recent": [] } }}The states, from best to worst:
| State | Meaning |
|---|---|
operational |
The service works normally. |
maintenance |
A planned maintenance is in progress. |
degraded |
The service works, but more slowly. |
partial_outage |
Part of the requests fail. |
major_outage |
The service is unavailable. |
RSS feed
Section titled “RSS feed”/v1/status/feed.xmlno key · RSS 2.0The incidents and maintenance of the last 90 days, with their updates. Add ?lang=en for the English feed. The feed plugs into an RSS reader or a Slack or Teams channel.
E-mail alerts
Section titled “E-mail alerts”/v1/status/subscribeno key · double opt-inSubscribes an address to incident and maintenance e-mails. A confirmation link, valid for 48 hours, is sent to the address: nothing is sent until it is opened. The form of status.getsms.tech calls this route.
emailstringrequiredlangstringfr (default) or en: language of the e-mails.The answer is the same whether the address is new, pending or already subscribed: it never reveals who is subscribed. API messages are in French. One IP address can make 5 subscriptions per hour.
The links of the e-mails lead to two routes, which then send the person back to the status page:
GET /v1/status/subscriptions/confirm?token=…confirms the subscription (?subscribed=1, or?subscribed=0if the link has expired).GET /v1/status/subscriptions/unsubscribe?token=…unsubscribes the address (?unsubscribed=1). Every e-mail contains this link.