SMS API für Entwickler – REST API, 2FA, OTP und Captcha
Ob Anbindung einzelner Systeme oder Aufbau einer skalierbaren Infrastruktur für Ihr Messaging: Nutzen Sie die API von BerlinSMS für eine optimale Kommunikation von Ihrer Anwendung aus. Unsere schlanke, gut dokumentierte und einfach zu integrierende REST-Schnittstelle eignet sich sowohl für den SMS-Versand als auch für die Integration von Captchas und der Zwei-Faktor-Authentifizierung (2FA). Mit Server-Standorten in Deutschland steht Ihnen unsere REST API zuverlässig und konform zur DSGVO zur Verfügung. Unsere Code-Beispiele und API-Referenzen für PHP, Python, C# und JavaScript helfen Ihnen beim schnellen Einstieg.
Integrieren Sie SMS-Versand, Zwei-Faktor-Authentifizierung und Captcha in wenigen Minuten in Ihre Anwendungsumgebung: mit Hilfe der DSGVO-konformen REST API, inklusive Dokumentation, Code-Beispielen für PHP, Python, C# und weiteren Sprachen.
DSGVO und Datenschutz bei der Verwendung unserer API
Die Verarbeitung aller API-Anfragen, Nachrichten und Protokolldaten erfolgt ausschließlich auf Servern in Deutschland. Es findet weder ein Datentransfer über Drittländer statt noch greifen wir auf Cloudanbieter in den USA zurück. Zudem ist BerlinSMS ein deutsches Unternehmen mit Sitz in Berlin. Auf Anfrage stellen wir Ihnen gerne Auftragsverarbeitungsverträge (AVV) zur Verfügung.
Tipp für Entwickler: Bei der Integration der API für 2FA erhalten Sie automatisch ein AVV-fähiges Setup. Eine manuelle Einstellung von Datenschutzoptionen entfällt damit.
SMS VERSAND MIT BERLINSMS
CAPTCHA VON BERLINSMS
2FA – ZWEI-FAKTOR-AUTHENTIFIZIERUNG
So schnell geht die Integration unserer Rest SMS API
Hier finden Sie Code-Beispiele für verschiedene Sprachen: Wählen Sie das passende Script für Ihre Anwendung. Alle Beispiele verwenden denselben REST-Endpoint und dieselbe Header-Authentifizierung.
curl
curl -X 'POST' \
'https://api.berlinsms.de/send/sms/4917012345/Hallo%20world' \
-H 'apiKey: [apiKey]'
OpenAPI
paths:
/send/sms/{phonenumber}/{text}:
post:
tags:
- send
summary: send one single message to a number
operationId: sendSingleSMS
security:
- apikeyAuth: []
parameters:
- name: phonenumber
in: path
description: destination telephone number
schema:
type: integer
format: int64
required: true
- name: text
in: path
description: text to send
schema:
type: string
example: Hallo World
required: true
responses:
'200':
description: successful operation
content: {}
components:
securitySchemes:
apikeyAuth:
type: apiKey
in: header
name: apiKey
servers:
- url: 'https://api.berlinsms.de'
PHP
<?php
$context = stream_context_create(array(
'http'=>array(
'method'=>"POST",
'header'=>"apiKey: $apiKey"
)
));
$url = 'https://api.berlinsms.de/send/sms/'.$phonenumber.'/'.rawurlencode($message);
$file = file_get_contents( $url, false, $context );
?>
C#
using System.Web;
HttpClient httpClient = new HttpClient();
httpClient.DefaultRequestHeaders.Add( "apiKey", apiKey );
string url = "https://api.berlinsms.de/send/sms/"+ phonenumber +"/" + Uri.EscapeDataString(message);
HttpResponseMessage response = await httpClient.PostAsync(url, null);
Javascript
const options = { method: 'POST', headers: { apiKey: apiKey } };
const url = 'https://api.berlinsms.de/send/sms/' + phonenumber + '/' + encodeURIComponent(message);
const response = await fetch(url, options);
Perl
use LWP::UserAgent;
use URI::Encode qw(uri_encode);
my $url = 'https://api.berlinsms.de/send/sms/' . $phonenumber . '/' . uri_encode($message);
my $ua = LWP::UserAgent->new();
$ua->default_header('apiKey' => $apiKey);
my $response = $ua->post($url);
Python
import requests
import urllib.parse
headers = {'apiKey': apiKey}
url = "https://api.berlinsms.de/send/sms/"+ str(phonenumber) +"/" + urllib.parse.quote(message, safe='');
requests.post(url, headers=headers)
Häufige Fragen & Antworten
Hier finden Sie Antworten auf die wichtigsten Fragen.
Wie erhalte ich einen API-Key?
Nach der kostenlosen Registrierung auf berlinsms.de können Sie im Dashboard unter „Für Entwickler“ sofort einen API-Key generieren. Der Prozess dauert unter zwei Minuten – keine manuelle Freischaltung, kein Wartezeitraum. Mit dem Key können Sie direkt die REST API ansprechen oder eines unserer Code-Beispiele für PHP, Python, C# oder JavaScript verwenden.
Welche Programmiersprachen werden unterstützt?
Die BerlinSMS API ist eine standardkonforme REST API mit JSON – sie funktioniert mit jeder Sprache, die HTTP-Requests stellen kann. Offizielle Code-Beispiele und Tutorials gibt es für Curl, OpenAPI, PHP, Python, JavaScript und C#. Da die API vollständig dokumentiert ist, lässt sie sich auch in andere Sprachen problemlos integrieren.
Was ist der Unterschied zwischen SMS-API, 2FA API und Captcha API?
Alle drei Produkte nutzen REST-Infrastruktur und Authentifizierung via API-Key bzw. Sitekey/Secretkey. Die SMS API ist für den allgemeinen Nachrichtenversand (Kampagnen, Benachrichtigungen, Transaktions-SMS). Die 2FA API ist speziell für Einmalpasswörter (OTP) bei der Benutzeranmeldung optimiert – mit kürzeren Zustellzeiten und Opt-in-Flows. Die Captcha API ersetzt Google reCAPTCHA durch eine DSGVO-konforme Alternative ohne Drittanbieter-Tracking.
Wie schnell werden OTP-Nachrichten über die 2FA API zugestellt?
Die durchschnittliche Zustellzeit für OTP-Nachrichten über die BerlinSMS 2FA API liegt unter 2 Sekunden. Unsere Server befinden sich in Berlin und Frankfurt am Main – mit redundanten Verbindungen zu den deutschen Mobilfunknetzen. Bei zeitkritischen Anwendungsfällen wie Login-Verifikation oder Zahlungsbestätigung ist das ein entscheidender Faktor.
Ist die BerlinSMS API DSGVO-konform?
Ja, vollständig. Alle Daten – inklusive Telefonnummern, Nachrichteninhalte und API-Logs – werden ausschließlich auf Servern in Deutschland verarbeitet. Es gibt keinen Transfer in Drittländer, keine Einbindung von US-Cloud-Diensten. Für Ihre Datenschutzdokumentation stellen wir auf Anfrage einen Auftragsverarbeitungsvertrag (AVV) nach Art. 28 DSGVO aus.
Gibt es eine Sandbox oder Testumgebung?
Ja. Nach der Registrierung erhalten Sie Testkredits, mit denen Sie die API ohne Kosten ausprobieren können. So können Sie Ihre Integration vollständig testen, bevor Sie in den Live-Betrieb gehen. Die API-Endpunkte für Test und Produktion sind identisch aufgebaut – kein Umkonfigurieren beim Go-Live.
Kann ich Delivery Reports per Webhook empfangen?
Ja. Sie können bei der API-Anfrage eine Callback-URL angeben. Sobald eine SMS zugestellt oder abgelehnt wurde, sendet BerlinSMS einen HTTP-POST mit dem Zustellstatus, Zeitstempel und Nachrichtendetails an Ihre URL. Das ermöglicht vollständige Echtzeit-Transparenz ohne Polling. Details finden Sie in der SMS REST API Referenz.