BIB SMS & WhatsApp Gateway API
Version 7.0 β VollstΓ€ndige REST-API Dokumentation
Base-URL: https://sms.eg24.eu/api/v1
Alle Endpunkte (auΓer Login/Register) erfordern Authentifizierung per Authorization Header oder api_key Query-Parameter.
π Authentifizierung
Zwei Methoden
1. Authorization Header (empfohlen fΓΌr Web-Apps)
Authorization: Bearer <token>
Token erhΓ€ltst du nach dem Login.
2. API-Key als Query-Parameter (fΓΌr GerΓ€te/Bots)
GET /api/v1/status?api_key=DEIN_API_KEY
Gibt ein JWT-Token zurΓΌck das fΓΌr weitere Anfragen genutzt wird.
Request Body
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| username | string | Ja | Benutzername |
| password | string | Ja | Passwort |
Beispiel
POST /api/v1/auth/login Content-Type: application/json { "username": "meinuser", "password": "meinPasswort" }
Antwort
{
"token": "eyJhbGciOiJIUzI...",
"user": {
"id": 1,
"username": "meinuser",
"role": "user",
"api_key": "bc9f5db8f8ebc..."
}
}
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| username | string | Ja | Min. 3 Zeichen |
| password | string | Ja | Min. 6 Zeichen |
| string | Nein | E-Mail-Adresse | |
| phone | string | Nein | Telefonnummer |
Antwort
{
"success": true,
"token": "eyJhbGciOiJIUzI...",
"user": { ... }
}
Gibt alle Informationen zum aktuellen Benutzer zurΓΌck inkl. Guthaben.
π Auth erforderlichAntwort
{
"id": 2,
"username": "meinuser",
"email": "[email protected]",
"sms_balance": 50,
"wa_balance": 25,
"sub_sms_remaining": 1000,
"sub_wa_remaining": 500,
"api_key": "bc9f5db8..."
}
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| old_password | string | Ja | Aktuelles Passwort |
| new_password | string | Ja | Neues Passwort (min. 6 Zeichen) |
Generiert einen neuen API-Key. Der alte Key wird sofort ungΓΌltig.
Antwort
{ "api_key": "neuer_api_key..." }
π€ Nachrichten senden
Stellt eine SMS in die Warteschlange. Das Android-Gateway sendet sie automatisch.
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| phone | string | Ja | Telefonnummer (z.B. +491621234567) |
| message | string | Ja | Nachrichtentext |
| name | string | Nein | EmpfΓ€ngername (fΓΌr Verlauf) |
Beispiel (cURL)
curl -X POST https://sms.eg24.eu/api/v1/sms/send \
-H "Authorization: Bearer DEIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"phone": "+491621234567",
"message": "Hallo, das ist ein Test!",
"name": "Max Mustermann"
}'
Antwort
{ "success": true }
Fehler (402)
{ "error": "Kein SMS-Guthaben", "need_payment": true }
Stellt eine WhatsApp-Nachricht in die Warteschlange. Optional mit Datei-Anhang (vorher hochladen via /file/upload).
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| phone | string | Ja | Telefonnummer |
| message | string | Nein | Nachrichtentext |
| name | string | Nein | EmpfΓ€ngername |
| has_file | boolean | Nein | true wenn eine Datei mitgesendet werden soll |
Ablauf mit Datei
1. POST /file/upload β Datei hochladen 2. POST /whatsapp/send β has_file: true 3. Android lΓ€dt Datei + sendet via WhatsApp
Beispiel (cURL)
curl -X POST https://sms.eg24.eu/api/v1/whatsapp/send \
-H "Authorization: Bearer DEIN_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"phone": "+491621234567",
"message": "Hier ist die Rechnung",
"name": "Max",
"has_file": true
}'
Sendet eine WhatsApp-Nachricht mit Datei-Anhang in einem einzigen API-Call. Kein separater Upload nΓΆtig.
Content-Type: multipart/form-data
| Parameter | Typ | Beschreibung |
|---|---|---|
phone | string | EmpfΓ€nger-Nummer (erforderlich) |
file | file | Datei (PDF, JPG, PNG, DOC, etc.) (erforderlich) |
message | string | Nachricht als Beschriftung zur Datei (optional) |
name | string | Kundenname (optional) |
Beispiele
curl -X POST https://sms.eg24.eu/api/v1/whatsapp/send-document \ -H "Authorization: Bearer DEIN_API_KEY" \ -F "phone=+491621234567" \ -F "message=Hier ist deine Rechnung" \ -F "name=Max Mustermann" \ -F "file=@rechnung.pdf"
import requests
r = requests.post('https://sms.eg24.eu/api/v1/whatsapp/send-document',
headers={'Authorization': 'Bearer DEIN_API_KEY'},
data={'phone': '+491621234567', 'message': 'Hier die Rechnung', 'name': 'Max'},
files={'file': open('rechnung.pdf', 'rb')})
print(r.json())
const form = new FormData();
form.append('phone', '+491621234567');
form.append('message', 'Hier die Rechnung');
form.append('name', 'Max');
form.append('file', fileBlob, 'rechnung.pdf');
const r = await fetch('https://sms.eg24.eu/api/v1/whatsapp/send-document', {
method: 'POST',
headers: {'Authorization': 'Bearer DEIN_API_KEY'},
body: form
});
console.log(await r.json());
$ch = curl_init('https://sms.eg24.eu/api/v1/whatsapp/send-document');
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Authorization: Bearer DEIN_API_KEY']);
curl_setopt($ch, CURLOPT_POSTFIELDS, [
'phone' => '+491621234567',
'message' => 'Hier die Rechnung',
'name' => 'Max',
'file' => new CURLFile('rechnung.pdf')
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
echo curl_exec($ch);
LΓ€dt eine Datei hoch die beim nΓ€chsten WhatsApp-Versand angehΓ€ngt wird. Vorherige Dateien werden ΓΌberschrieben.
Content-Type: multipart/form-data
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| file | file | Ja | PDF, JPG, PNG, GIF, MP4, DOC, DOCX |
Beispiel (cURL)
curl -X POST https://sms.eg24.eu/api/v1/file/upload \ -H "Authorization: Bearer DEIN_TOKEN" \ -F "[email protected]"
Antwort
{
"success": true,
"file_name": "rechnung.pdf",
"file_size": 123800
}
LΓΆscht die aktuell hochgeladene Datei. Wird automatisch nach WhatsApp-Versand aufgerufen.
π¨ Posteingang
Antwort
{
"messages": [
{
"id": 1,
"phone": "+491621234567",
"message": "Antwort des EmpfΓ€ngers",
"read": false,
"created_at": "2026-02-16 15:30:00"
}
]
}
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| phone | string | Ja | Absender-Nummer |
| message | string | Ja | SMS-Text |
Wird vom Gateway gesendet wenn eine eingehende WhatsApp-Nachricht erkannt wird. Erscheint im Posteingang mit WhatsApp-Badge.
| Parameter | Typ | Beschreibung |
|---|---|---|
sender | string | Absender (Name oder Nummer) |
message | string | Nachrichtentext |
curl -X POST https://sms.eg24.eu/api/v1/whatsapp/inbox/add?api_key=KEY \
-H "Content-Type: application/json" \
-d '{"sender": "Max", "message": "Hallo!"}'
π Anrufe
Eingehende Anrufe werden vom Gateway erkannt und gemeldet.
Gibt die letzten 200 Anrufe zurΓΌck.
Antwort
{
"calls": [
{
"id": 1,
"phone": "+491621234567",
"contact_name": "Max",
"call_type": "incoming",
"duration": 45,
"status": "answered",
"created_at": "2026-03-11 14:30:00"
}
]
}
| Parameter | Typ | Beschreibung |
|---|---|---|
phone | string | Rufnummer (erforderlich) |
contact_name | string | Kontaktname (optional) |
call_type | string | incoming / outgoing |
duration | int | Dauer in Sekunden |
status | string | answered / missed / rejected |
π Benachrichtigungen
WhatsApp-Benachrichtigungen bei eingehenden SMS und Anrufen.
Antwort
{
"notify_phone": "+491621234567",
"notify_sms": true,
"notify_calls": true
}
| Parameter | Typ | Beschreibung |
|---|---|---|
notify_phone | string | WhatsApp-Nummer fΓΌr Benachrichtigungen (z.B. +491621234567) |
notify_sms | bool | Benachrichtigung bei eingehender SMS |
notify_calls | bool | Benachrichtigung bei eingehenden Anrufen |
curl -X POST https://sms.eg24.eu/api/v1/auth/notify-settings \
-H "Authorization: Bearer DEIN_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"notify_phone": "+491621234567",
"notify_sms": true,
"notify_calls": true
}'
π± Gateway Polling
Diese Endpunkte werden vom Android-Gateway verwendet um ausstehende Nachrichten abzuholen.
Gibt die nΓ€chste ausstehende SMS zurΓΌck und markiert sie als gesendet.
Antwort (mit Nachricht)
{
"pending": true,
"data": {
"phone": "+491621234567",
"message": "Hallo Welt",
"name": "Max"
}
}
Antwort (keine Nachricht)
{ "pending": false }
Antwort (mit Nachricht + Datei)
{
"pending": true,
"data": {
"phone": "+491621234567",
"message": "Hier die Rechnung",
"name": "Max",
"has_file": true
}
}
Gibt die hochgeladene Datei als Binary zurΓΌck. Dateiname im Content-Disposition Header.
Gibt text/plain "none" zurΓΌck wenn keine Datei vorhanden.
π₯ Kontakte & Vorlagen
Antwort
{
"customers": [
{ "id": 1, "name": "Max", "phone": "+491621234567", "email": "[email protected]" }
]
}
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| name | string | Ja | Name des Kontakts |
| phone | string | Ja | Telefonnummer |
| string | Nein |
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| name | string | Ja | Vorlagenname |
| text | string | Ja | Vorlagentext (Platzhalter: {name}, {phone}) |
π Verlauf & Status
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| limit | int | Nein | Anzahl (Standard: 100, Max: 500) |
Antwort
{
"messages": [
{
"id": 1,
"direction": "out",
"channel": "whatsapp",
"phone": "+491621234567",
"customer_name": "Max",
"message": "Hallo!",
"file_name": "rechnung.pdf",
"status": "queued",
"cost": 0.50,
"created_at": "2026-02-16 15:30:00"
}
]
}
Antwort
{
"status": "online",
"sms_balance": 50,
"wa_balance": 25,
"sms_queue": 0,
"whatsapp_queue": 0,
"inbox_count": 5,
"inbox_unread": 2,
"has_file": false
}
π³ Bezahlung
Kein Auth erforderlich.
Antwort
{
"sms_price": 0.50,
"wa_price": 0.50,
"packages": [
{ "amount": 10, "price": 4.99 },
{ "amount": 50, "price": 19.99 }
],
"subscription": {
"price": 29.99,
"sms": 1000,
"wa": 1000
}
}
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| order_id | string | Ja | PayPal Order-ID (nach Client-Capture) |
| package_type | string | Ja | sms_10, sms_50, wa_10, wa_50, subscription |
Server verifiziert die PayPal-Zahlung vor der Gutschrift.
| Parameter | Typ | Pflicht | Beschreibung |
|---|---|---|---|
| code | string | Ja | Gutschein-Code |
πΎ Backup
Exportiert Kontakte, Vorlagen, Nachrichten und Posteingang als JSON.
Importiert zuvor exportierte Daten. Existierende Daten werden ergΓ€nzt, nicht ΓΌberschrieben.
π Integrations-Beispiele
Python
import requests API = "https://sms.eg24.eu/api/v1" KEY = "DEIN_API_KEY" # SMS senden r = requests.post(f"{API}/sms/send?api_key={KEY}", json={ "phone": "+491621234567", "message": "Hallo aus Python!" }) print(r.json()) # WhatsApp mit Datei senden requests.post(f"{API}/file/upload?api_key={KEY}", files={"file": open("rechnung.pdf","rb")}) requests.post(f"{API}/whatsapp/send?api_key={KEY}", json={ "phone": "+491621234567", "message": "Ihre Rechnung", "has_file": True })
JavaScript / Node.js
const API = "https://sms.eg24.eu/api/v1";
const KEY = "DEIN_API_KEY";
// SMS senden
const res = await fetch(`${API}/sms/send?api_key=${KEY}`, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
phone: "+491621234567",
message: "Hallo aus JavaScript!"
})
});
console.log(await res.json());
PHP
$api = "https://sms.eg24.eu/api/v1";
$key = "DEIN_API_KEY";
// SMS senden
$ch = curl_init("$api/sms/send?api_key=$key");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ["Content-Type: application/json"]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
"phone" => "+491621234567",
"message" => "Hallo aus PHP!"
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$result = json_decode(curl_exec($ch));
curl_close($ch);
cURL (Bash)
# Status prΓΌfen curl "https://sms.eg24.eu/api/v1/status?api_key=DEIN_KEY" # SMS senden curl -X POST "https://sms.eg24.eu/api/v1/sms/send?api_key=DEIN_KEY" \ -H "Content-Type: application/json" \ -d '{"phone":"+491621234567","message":"Test!"}' # Posteingang abrufen curl "https://sms.eg24.eu/api/v1/inbox?api_key=DEIN_KEY"
SMS & WhatsApp Gateway API v7.0 β Erstellt am 16.02.2026