BroadNet
Das JournalEngineering
Engineering

So senden Sie SMS per Code: Python, PHP, Node.js, Java, Go und C# mit einem einzigen REST-Aufruf

Das Senden eines SMS per Code erfolgt über einen authentifizierten HTTPS POST: ein Bearer-Token, ein JSON-Body mit Absenderkennung, Zielnummer, Nachricht und Nachrichtentyp sowie eine zurückgegebene Nachrichten-ID. Hier finden Sie dieselbe Anfrage in Python, PHP, Node.js, Java, Go und C#, ergänzt um Fehlerbehandlung und Tipps für den Produktivbetrieb.

9 Min. Lesezeit
Engineering · Ausgabe 28
9 Min. Lesezeit

m einen SMS per Code zu senden, führen Sie einen HTTPS POST an https://api.broadnet.me/sms/sendSms mit einem Authorization: Bearer-Header und einem JSON-Body aus, der senderId, destinationNumber, die Nachricht und messageType enthält. Ein erfolgreicher Aufruf liefert HTTP 200 mit der Nachrichten-ID als Response-Body zurück; das Zustellergebnis trifft später als Zustellungsbericht (DLR) in Ihrem Webhook ein. Jede unten aufgeführte Sprache verwendet ausschließlich ihre Standard-HTTP-Bibliothek; die einzige offizielle SDK ist für TypeScript und Node.js vorgesehen.

Wichtigste Erkenntnisse

  • Endpunkt: POST https://api.broadnet.me/sms/sendSms, JSON Body, Bearer-Token.
  • Pflichtfelder: senderId, destinationNumber (internationales Format ohne Pluszeichen), Nachricht, messageType (TEXT).
  • Response: 200 mit der Nachrichten-ID; bewahren Sie diese auf, um sie mit den Zustellungsberichten abzugleichen.
  • Fehler: Ein fehlendes oder ungültiges Token führt zu einem 401 vom Gateway; API-Fehler liefern Status, Error, Message, errorCode und requestUri zurück.
  • Eine offizielle SDK: @broadnet/cpaas-sdk für TypeScript/Node.js; generieren Sie Clients für andere Sprachen aus der OpenAPI-Spezifikation.

Was benötigen Sie vor dem Versand?

  • Ein Zugriffstoken aus Ihrem BroadNet-Konto, das in einer Umgebungsvariablen (unten BROADNET_TOKEN) gespeichert wird, niemals im Quellcode oder in einer mobilen App.
  • Eine Absenderkennung, die für das Zielland zugelassen ist; einige Länder erfordern vorab eine Registrierung.
  • Eine Zielnummer im internationalen Format, zum Beispiel 447700900123 (eine fiktive britische Nummer).

Testzugänge erhalten Sie von unseren Ingenieuren: Fordern Sie diese an und Sie erhalten die Test-Zugangsdaten innerhalb eines Werktages; die erste Testnachricht wird in der Regel etwa fünf Minuten später versendet. Der Quickstart führt Sie durch den Prozess.

Wie sieht die Anfrage aus?

Hier ist die Anfrage mit cURL. Jedes untenstehende Beispiel sendet denselben JSON-Body.

snippet
curl -X POST https://api.broadnet.me/sms/sendSms \
-H "Authorization: Bearer $BROADNET_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"senderId": "BroadNet",
"destinationNumber": "447700900123",
"message": "Your verification code is 482913",
"messageType": "TEXT"
}'
# 200 OK → response body is the message ID, e.g. 2603121407537573731

Wie sendet man eine SMS mit Python?

Mit der requests-Library setzt das json=-Argument den Content-Type-Header automatisch für Sie.

snippet
import os, requests
r = requests.post(
"https://api.broadnet.me/sms/sendSms",
headers={"Authorization": f"Bearer {os.environ['BROADNET_TOKEN']}"},
json={
"senderId": "BroadNet",
"destinationNumber": "447700900123",
"message": "Your verification code is 482913",
"messageType": "TEXT",
},
)
print(r.status_code, r.text) # message ID

Wie sendet man eine SMS mit PHP?

Die curl-Erweiterung von PHP ist ausreichend; ein zusätzliches Paket ist nicht erforderlich.

snippet
<?php
$ch = curl_init("https://api.broadnet.me/sms/sendSms");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("BROADNET_TOKEN"),
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode([
"senderId" => "BroadNet",
"destinationNumber" => "447700900123",
"message" => "Your verification code is 482913",
"messageType" => "TEXT",
]),
]);
$messageId = curl_exec($ch);
echo $messageId;

Wie sendet man eine SMS mit Node.js?

Node.js 18 und neuere Versionen haben fetch integriert:

snippet
// Node.js 18+ (fetch)
const res = await fetch("https://api.broadnet.me/sms/sendSms", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.BROADNET_TOKEN}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
senderId: "BroadNet",
destinationNumber: "447700900123",
message: "Your verification code is 482913",
messageType: "TEXT",
}),
});
console.log(await res.text()); // message ID

Oder nutzen Sie das offizielle TypeScript/Node.js SDK, @broadnet/cpaas-sdk:

snippet
// npm install @broadnet/cpaas-sdk axios
import { Configuration, SMSSMSApi } from "@broadnet/cpaas-sdk";
const sms = new SMSSMSApi(
new Configuration({
basePath: "https://api.broadnet.me",
accessToken: process.env.BROADNET_TOKEN!,
}),
);
const res = await sms.smsSendsmsPost({
sMSSmsRequest: {
senderId: "BroadNet",
destinationNumber: "447700900123",
message: "Your verification code is 482913",
messageType: "TEXT",
},
});
console.log(res.data); // message ID

Wie sendet man eine SMS mit Java?

Java 11 und neuere Versionen beinhalten java.net.http.HttpClient:

snippet
// Java 11+ — java.net.http is built in, nothing to install
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class SendSms {
public static void main(String[] args) throws Exception {
String json = "{"
+ "\"senderId\": \"BroadNet\", "
+ "\"destinationNumber\": \"447700900123\", "
+ "\"message\": \"Your verification code is 482913\", "
+ "\"messageType\": \"TEXT\""
+ "}";
HttpRequest req = HttpRequest.newBuilder(URI.create("https://api.broadnet.me/sms/sendSms"))
.header("Authorization", "Bearer " + System.getenv("BROADNET_TOKEN"))
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(json))
.build();
HttpResponse<String> res = HttpClient.newHttpClient()
.send(req, HttpResponse.BodyHandlers.ofString());
System.out.println(res.statusCode() + " " + res.body()); // 200 + message ID
}
}

Wie sendet man eine SMS mit Go?

snippet
package main
import (
"bytes"
"fmt"
"io"
"net/http"
"os"
)
func main() {
body := []byte(`{
"senderId": "BroadNet",
"destinationNumber": "447700900123",
"message": "Your verification code is 482913",
"messageType": "TEXT"
}`)
req, err := http.NewRequest(http.MethodPost, "https://api.broadnet.me/sms/sendSms", bytes.NewReader(body))
if err != nil {
panic(err)
}
req.Header.Set("Authorization", "Bearer "+os.Getenv("BROADNET_TOKEN"))
req.Header.Set("Content-Type", "application/json")
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
id, _ := io.ReadAll(res.Body)
fmt.Println(res.StatusCode, string(id)) // 200 + message ID
}

Wie sendet man eine SMS mit C# und .NET?

.NET 6 und neuere Versionen benötigen kein NuGet-Paket: HttpClient und System.Net.Http.Json sind integriert.

snippet
// .NET 6+ console app (Program.cs) — HttpClient is built in, no NuGet package
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Net.Http.Json;
using var http = new HttpClient();
http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue(
"Bearer", Environment.GetEnvironmentVariable("BROADNET_TOKEN"));
// PostAsJsonAsync sends Content-Type: application/json
var res = await http.PostAsJsonAsync("https://api.broadnet.me/sms/sendSms", new
{
senderId = "BroadNet",
destinationNumber = "447700900123",
message = "Your verification code is 482913",
messageType = "TEXT",
});
var id = await res.Content.ReadAsStringAsync();
Console.WriteLine($"{(int)res.StatusCode} {id}"); // 200 + message ID

Was ist die Rückmeldung und wie werden Fehler behandelt?

AntwortBedeutungVorgehensweise
200 + Nachrichten-IDFür die Zustellung akzeptiertSpeichern Sie die ID zusammen mit Ihrem eigenen Datensatz; warten Sie auf die DLR
400Validierungsfehler oder fehlendes FeldAnfrage korrigieren; keinen erneuten Versuch mit unveränderten Daten unternehmen
401Fehlendes oder ungültiges Bearer-TokenÜberprüfen Sie das Token und den Authorization-Header
500Unerwarteter ServerfehlerWiederholung mit Backoff versuchen; prüfen Sie den Nachrichtenstatus vor einem erneuten Senden

Ein 200-Status bedeutet, dass die Plattform die Nachricht angenommen hat, nicht dass sie das Endgerät erreicht hat. Die Zustellung wird durch den Delivery Receipt gemeldet; lesen Sie was ein DLR ist und SMS Delivery Receipts und Fehlercodes. Die API verfügt über keinen Idempotenz-Header; bewahren Sie daher die zurückgegebene Nachrichten-ID auf und prüfen Sie deren Status vor einem erneuten Senden, um Duplikate zu vermeiden. Die Seite Fehlercodes listet die weiteren Fehler auf.

Wie machen Sie die Lösung bereit für den Produktivbetrieb?

  • Speichern Sie das Token serverseitig. Rufen Sie die SMS API niemals von einem Browser oder einer mobilen App aus auf, da das Token dort extrahiert werden könnte; nutzen Sie stattdessen Ihr eigenes Backend.
  • Lange Nachrichten bewusst versenden: GSM-7 umfasst 160 Zeichen pro SMS, Unicode (UCS-2) 70 Zeichen, und längere Texte werden in kostenpflichtige Segmente aufgeteilt. Siehe das SMS Zeichenlimit.
  • Stellen Sie Massenversand in eine Warteschlange und beachten Sie den Durchsatz Ihres Kontos; lesen Sie die Rate Limits.
  • Empfangen Sie Delivery Receipts über einen Webhook und speichern Sie den finalen Status.
  • Validieren Sie Nummern zuerst im internationalen Format; siehe E.164 Telefonnummern-Validierung.

Bei sehr hohem Volumen oder einem bestehenden Telecom-Stack eignet sich SMPP unter Umständen besser als REST; siehe SMPP vs. REST. Die Plattform von BroadNet verarbeitet 30.000 SMS pro Sekunde pro Knoten.

Häufig gestellte Fragen

Was ist der einfachste Weg, eine SMS per Code zu versenden?

Ein HTTPS POST an ein SMS API mit einem Access-Token und einem JSON Body. Bei BroadNet ist dies ein POST https://api.broadnet.me/sms/sendSms mit senderId, destinationNumber, der Nachricht und messageType.

Gibt es einen BroadNet SDK für Python, PHP oder Java?

Nein. Es gibt einen offiziellen SDK, @broadnet/cpaas-sdk für TypeScript und Node.js. Andere Sprachen rufen die REST API direkt auf, wie hier gezeigt, oder generieren einen Client aus der OpenAPI-Spezifikation.

In welchem Format sollte die Telefonnummer vorliegen?

Internationales Format mit Ländercode, ohne Pluszeichen oder Leerzeichen, zum Beispiel 447700900123.

Bedeutet eine 200-Antwort, dass die SMS zugestellt wurde?

Nein. Es bedeutet, dass die Nachricht angenommen wurde. Der Zustellbericht (DLR) gibt an, ob sie das Endgerät erreicht hat.

Kann ich SMS direkt von einer Android- oder iOS-App aus senden?

Nicht sicher. Legen Sie den API-Aufruf auf Ihren Server, damit der Access-Token niemals innerhalb der App übertragen wird, und lassen Sie die App Ihren Server aufrufen.

Wo finde ich die vollständige API-Referenz?

In der API-Referenz und im OpenAPI-Spezifikationsdokument.

Code-Beispiele sind diejenigen auf unseren Entwicklerseiten, die gegen die veröffentlichte OpenAPI-Spezifikation geprüft wurden. Überprüft am 28. September 2026. Siehe unsere redaktionellen Standards.

War das hilfreich?

Wie wir Inhalte erstellen und prüfen

Verfasst von

BroadNet-Redaktionsteam

Das Redaktionsteam veröffentlicht den BroadNet-Blog. Die Artikel entstehen mit den BroadNet-Teams für regulatorische Angelegenheiten, Produkt, Engineering, Branchenforschung und Betreiberlösungen und werden nach unseren redaktionellen Standards geprüft.

Das Journal, per E-Mail

Ein Aufsatz pro Monat. Sonst nichts.

Abonnieren Sie unseren Newsletter und wir senden Ihnen den nächsten Beitrag – ob zu Technik, Regulierung oder Industrie – direkt am Erscheinungstag. Keine E-Mail-Kampagnen, keine Produktpräsentationen, keine Weitergabe an Dritte. Abmeldung mit einem Klick.

Wir senden eine E-Mail pro Monat. Abmeldung jederzeit möglich. Siehe unsere Datenschutzerklärung.

Was Sie erhalten
  • Ausführlicher Text, kein Linkköder
    Sechs bis elf Minuten konzentriertes Schreiben zu einem einzigen Thema.
  • Verfasst von Bedienern
    Ingenieure, Zulassungsbeauftragte und Produktentwickler sind im eigenen Haus tätig.
  • Regionsabhängig
    MENA-zentrierte Sicht auf Regulierungsbehörden, Betreiber und Vertriebskanalmix.
  • Einmal im Monat
    Keine tröpfchenweise Kampagne. Nur ein Essay, wenn es einen zu teilen gibt.
Hör auf zu lesen. Fang an zu versenden.

Das meiste von dem, was wir schreiben, haben wir in der Produktion gelernt.

Wenn Ihnen dieser Artikel zusagte, sollten wir uns unterhalten. Schildern Sie uns Ihren Anwendungsfall, die Volumina und die Märkte – wir melden uns dann mit Routing, Preisen und einem Referenzkunden, den Sie kontaktieren können.

$ curl -X POST https://api.broadnet.me/sms/sendSms