Skip to content

The API is a clean REST + JSON interface, so it works from any language with an HTTP client — no SDK required. Every endpoint page in these docs includes ready-to-paste examples in eight languages:

LanguageHTTP client used in examples
cURL
Node.jsBuilt-in fetch (Node 18+)
Pythonrequests
PHPcurl extension
Rubynet/http (stdlib)
Javajava.net.http.HttpClient (Java 11+)
Gonet/http (stdlib)
.NETHttpClient (C#)

Pick your language once in any code block — the choice follows you across the entire site.

Send a message:

Terminal window
curl -X POST https://restlink23telecom.com/api/v1/sms/send \
-H "X-API-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"to": [
"+14155551234"
],
"message": "Your verification code is 847291",
"sender_id": "MyApp"
}'

Check its status:

Terminal window
curl https://restlink23telecom.com/api/v1/sms/status/api_42_1743667200123456789_a3f8b2c1d9e45f67 \
-H "X-API-Key: $API_KEY"

For webhook receivers in Python, Node.js and PHP, see the delivery webhook examples.

Official clients for the three most-requested languages, with automatic 429/5xx retries, stable error_code errors and webhook signature verification built in:

LanguagePackageInstall
TypeScript / Node 18+@23telecom/smsnpm install @23telecom/sms
Python 3.9+telecom23pip install telecom23
PHP 8.0+23telecom/smscomposer require 23telecom/sms
TypeScript
import { TelecomClient } from '@23telecom/sms';
const client = new TelecomClient({ apiKey: process.env.API_KEY! });
await client.sms.send({ to: ['+447911123456'], message: 'Hi!', sender_id: 'MyApp' });
Python
from telecom23 import Client
client = Client(api_key=os.environ["API_KEY"])
client.sms.send(to=["+447911123456"], message="Hi!", sender_id="MyApp")
PHP
$client = new \Telecom23\Client(getenv('API_KEY'));
$client->sendSms(['+447911123456'], 'Hi!', 'MyApp');

All three work with sandbox keys (sk_test_…) for free, simulated testing. Ruby, Java, Go and .NET packages are next — until then use the examples above or generate a client from the spec.

Integration tips that save support tickets

Section titled “Integration tips that save support tickets”
  • Store the key in API_KEY env var like the examples do — rotating keys then never touches code.
  • Treat messages[].message_id as your join key between send responses, status polls and webhook events.
  • Handle 429 with backoff (rate limits) and 402 with an alert (balance).
  • Make webhook handlers idempotent — retries deliver duplicates by design.