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
β–Ά POST /auth/login Anmelden und Token erhalten

Gibt ein JWT-Token zurΓΌck das fΓΌr weitere Anfragen genutzt wird.

Request Body

ParameterTypPflichtBeschreibung
usernamestringJaBenutzername
passwordstringJaPasswort

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..."
  }
}
β–Ά POST /auth/register Neuen Account erstellen
ParameterTypPflichtBeschreibung
usernamestringJaMin. 3 Zeichen
passwordstringJaMin. 6 Zeichen
emailstringNeinE-Mail-Adresse
phonestringNeinTelefonnummer

Antwort

{
  "success": true,
  "token": "eyJhbGciOiJIUzI...",
  "user": { ... }
}
β–Ά GET /auth/me Eigene Kontodaten abrufen

Gibt alle Informationen zum aktuellen Benutzer zurΓΌck inkl. Guthaben.

πŸ”’ Auth erforderlich

Antwort

{
  "id": 2,
  "username": "meinuser",
  "email": "[email protected]",
  "sms_balance": 50,
  "wa_balance": 25,
  "sub_sms_remaining": 1000,
  "sub_wa_remaining": 500,
  "api_key": "bc9f5db8..."
}
β–Ά POST /auth/change-password Passwort Γ€ndern
πŸ”’ Auth erforderlich
ParameterTypPflichtBeschreibung
old_passwordstringJaAktuelles Passwort
new_passwordstringJaNeues Passwort (min. 6 Zeichen)
β–Ά POST /auth/regenerate-key Neuen API-Key generieren
πŸ”’ Auth erforderlich

Generiert einen neuen API-Key. Der alte Key wird sofort ungΓΌltig.

Antwort

{ "api_key": "neuer_api_key..." }

πŸ“€ Nachrichten senden

β–Ά POST /sms/send SMS versenden
πŸ”’ Auth erforderlich

Stellt eine SMS in die Warteschlange. Das Android-Gateway sendet sie automatisch.

ParameterTypPflichtBeschreibung
phonestringJaTelefonnummer (z.B. +491621234567)
messagestringJaNachrichtentext
namestringNeinEmpfΓ€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 }
β–Ά POST /whatsapp/send WhatsApp Nachricht versenden
πŸ”’ Auth erforderlich

Stellt eine WhatsApp-Nachricht in die Warteschlange. Optional mit Datei-Anhang (vorher hochladen via /file/upload).

ParameterTypPflichtBeschreibung
phonestringJaTelefonnummer
messagestringNeinNachrichtentext
namestringNeinEmpfΓ€ngername
has_filebooleanNeintrue 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
  }'
β–Ά POST /whatsapp/send-document WhatsApp + Dokument in einem Call
πŸ”’ Auth erforderlich

Sendet eine WhatsApp-Nachricht mit Datei-Anhang in einem einzigen API-Call. Kein separater Upload nΓΆtig.

Content-Type: multipart/form-data

ParameterTypBeschreibung
phonestringEmpfΓ€nger-Nummer (erforderlich)
filefileDatei (PDF, JPG, PNG, DOC, etc.) (erforderlich)
messagestringNachricht als Beschriftung zur Datei (optional)
namestringKundenname (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);
β–Ά POST /file/upload Datei hochladen (fΓΌr WhatsApp-Anhang)
πŸ”’ Auth erforderlich

LΓ€dt eine Datei hoch die beim nΓ€chsten WhatsApp-Versand angehΓ€ngt wird. Vorherige Dateien werden ΓΌberschrieben.

Content-Type: multipart/form-data

ParameterTypPflichtBeschreibung
filefileJaPDF, 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
}
β–Ά DEL /file/delete Hochgeladene Datei lΓΆschen
πŸ”’ Auth erforderlich

LΓΆscht die aktuell hochgeladene Datei. Wird automatisch nach WhatsApp-Versand aufgerufen.

πŸ“¨ Posteingang

β–Ά GET /inbox Alle empfangenen SMS abrufen
πŸ”’ Auth erforderlich

Antwort

{
  "messages": [
    {
      "id": 1,
      "phone": "+491621234567",
      "message": "Antwort des EmpfΓ€ngers",
      "read": false,
      "created_at": "2026-02-16 15:30:00"
    }
  ]
}
β–Ά POST /inbox/add SMS-Empfang melden (vom Android-Gateway)
πŸ”’ Auth erforderlich
ParameterTypPflichtBeschreibung
phonestringJaAbsender-Nummer
messagestringJaSMS-Text
β–Ά POST /inbox/:id/read Nachricht als gelesen markieren
πŸ”’ Auth erforderlich
β–Ά DEL /inbox/:id Einzelne Nachricht lΓΆschen
πŸ”’ Auth erforderlich
β–Ά DEL /inbox/clear Gesamten Posteingang leeren
πŸ”’ Auth erforderlich
β–Ά POST /whatsapp/inbox/add Eingehende WhatsApp-Nachricht melden
πŸ”’ Auth erforderlich

Wird vom Gateway gesendet wenn eine eingehende WhatsApp-Nachricht erkannt wird. Erscheint im Posteingang mit WhatsApp-Badge.

ParameterTypBeschreibung
senderstringAbsender (Name oder Nummer)
messagestringNachrichtentext
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.

β–Ά GET /calls Anrufe abrufen (200 neueste)
πŸ”’ Auth erforderlich

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"
    }
  ]
}
β–Ά POST /calls/add Anruf melden (vom Gateway)
πŸ”’ Auth erforderlich
ParameterTypBeschreibung
phonestringRufnummer (erforderlich)
contact_namestringKontaktname (optional)
call_typestringincoming / outgoing
durationintDauer in Sekunden
statusstringanswered / missed / rejected
β–Ά DEL /calls/:id Einzelnen Anruf lΓΆschen
πŸ”’ Auth erforderlich
β–Ά DEL /calls/clear Alle Anrufe lΓΆschen
πŸ”’ Auth erforderlich

πŸ”” Benachrichtigungen

WhatsApp-Benachrichtigungen bei eingehenden SMS und Anrufen.

β–Ά GET /auth/notify-settings Benachrichtigungs-Einstellungen abrufen
πŸ”’ Auth erforderlich

Antwort

{
  "notify_phone": "+491621234567",
  "notify_sms": true,
  "notify_calls": true
}
β–Ά POST /auth/notify-settings Benachrichtigungs-Einstellungen Γ€ndern
πŸ”’ Auth erforderlich
ParameterTypBeschreibung
notify_phonestringWhatsApp-Nummer fΓΌr Benachrichtigungen (z.B. +491621234567)
notify_smsboolBenachrichtigung bei eingehender SMS
notify_callsboolBenachrichtigung 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.

β–Ά GET /sms/poll NΓ€chste SMS zum Senden abholen
πŸ”’ Auth erforderlich (api_key)

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 }
β–Ά GET /whatsapp/poll/json NΓ€chste WhatsApp zum Senden abholen
πŸ”’ Auth erforderlich (api_key)

Antwort (mit Nachricht + Datei)

{
  "pending": true,
  "data": {
    "phone": "+491621234567",
    "message": "Hier die Rechnung",
    "name": "Max",
    "has_file": true
  }
}
β–Ά GET /file/download Anhang-Datei herunterladen (fΓΌr Gateway)
πŸ”’ Auth erforderlich (api_key)

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

β–Ά GET /customers Kontakte auflisten
πŸ”’ Auth erforderlich

Antwort

{
  "customers": [
    { "id": 1, "name": "Max", "phone": "+491621234567", "email": "[email protected]" }
  ]
}
β–Ά POST /customers Kontakt anlegen
πŸ”’ Auth erforderlich
ParameterTypPflichtBeschreibung
namestringJaName des Kontakts
phonestringJaTelefonnummer
emailstringNeinE-Mail
β–Ά GET /templates Nachrichtenvorlagen auflisten
πŸ”’ Auth erforderlich
β–Ά POST /templates Vorlage erstellen
πŸ”’ Auth erforderlich
ParameterTypPflichtBeschreibung
namestringJaVorlagenname
textstringJaVorlagentext (Platzhalter: {name}, {phone})

πŸ“Š Verlauf & Status

β–Ά GET /history Nachrichtenverlauf abrufen
πŸ”’ Auth erforderlich
ParameterTypPflichtBeschreibung
limitintNeinAnzahl (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"
    }
  ]
}
β–Ά GET /status Systemstatus und Guthaben
πŸ”’ Auth erforderlich

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

β–Ά GET /payment/prices Preise und Pakete abrufen

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
  }
}
β–Ά POST /payment/buy Guthaben kaufen (PayPal)
πŸ”’ Auth erforderlich
ParameterTypPflichtBeschreibung
order_idstringJaPayPal Order-ID (nach Client-Capture)
package_typestringJasms_10, sms_50, wa_10, wa_50, subscription

Server verifiziert die PayPal-Zahlung vor der Gutschrift.

β–Ά POST /voucher/redeem Gutschein einlΓΆsen
πŸ”’ Auth erforderlich
ParameterTypPflichtBeschreibung
codestringJaGutschein-Code

πŸ’Ύ Backup

β–Ά GET /backup/export Alle eigenen Daten exportieren (JSON)
πŸ”’ Auth erforderlich

Exportiert Kontakte, Vorlagen, Nachrichten und Posteingang als JSON.

β–Ά POST /backup/import Backup importieren
πŸ”’ Auth erforderlich

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