https://DEINE-DOMAINwss://DEINE-DOMAIN/ws5 Key(s) aktivCONNECTEDWhatsApp QR & App-Key
Geschützt: QR-Code und App-Keys werden öffentlich nicht angezeigt. Öffne /qr.php?setup=DEIN_SETUP_CODE oder nutze lokal http://127.0.0.1:3000/.
App-Key
Geschützt: Der App-Key wird auf der öffentlichen Seite nicht angezeigt.
Android-App
In der App bei Link / Server-URL diese Adresse eintragen:
https://DEINE-DOMAIN
Den App-Key findest du auf dem Server in APP_KEY.txt. Diese Datei wie ein Passwort behandeln.
Authentifizierung
Alle /api-, /uploads- und /ws-Routen brauchen den App-Key.
Authorization: Bearer DEIN_APP_KEY x-app-key: DEIN_APP_KEY Uploads/Medien alternativ: https://DEINE-DOMAIN/uploads/safe/datei.jpg?key=DEIN_APP_KEY WebSocket: wss://DEINE-DOMAIN/ws?key=DEIN_APP_KEY
Endpunkte
| Methode | Pfad | Key | Beschreibung |
|---|---|---|---|
| GET | /health |
Nein | Serverstatus, Version, Provider-Status und Datenbankpfad. |
| GET | /api/bootstrap |
Ja | Initialdaten für die App: Chats, Nachrichten, Anrufe und Einstellungen. |
| GET | /api/chats |
Ja | Chatliste abrufen. |
| GET | /api/chats/:chatId/messages |
Ja | Nachrichten eines Chats abrufen. |
| GET | /api/messages |
Ja | Alle bekannten Nachrichten abrufen. |
| GET | /api/calls |
Ja | WhatsApp-Anrufversuche / verpasste Anrufe abrufen. |
| GET | /api/sync/status |
Ja | Status vom WhatsApp-Sync anzeigen. |
| POST | /api/sync/now |
Ja | WhatsApp-Sync manuell starten. |
| POST | /api/send |
Ja | Textnachricht senden. |
| POST | /api/media/send |
Ja | Bild, Datei oder Sprachnachricht sicher prüfen und senden. |
| GET | /api/security/status |
Ja | 1-Gerät-Schutz, Lockdown und Sicherheitsstatus anzeigen. |
| GET | /api/wwebjs/info |
Ja | WhatsApp-Web-Provider-Info anzeigen. |
| GET | /api/wwebjs/chats |
Ja | Direkte WhatsApp-Chatliste vom Provider abrufen. |
| GET | /api/wwebjs/chats/:chatId/messages |
Ja | Direkte WhatsApp-Nachrichten vom Provider abrufen. |
| GET | /uploads/safe/:file |
Ja | Geprüfte Medien abrufen. App-Key per Query oder Header nötig. |
| WS | /ws |
Ja | Live-Verbindung für neue Nachrichten, ACK-Status, Anrufe und Sync-Events. |
| POST | /provider/message |
Bridge | Provider-Bridge: eingehende Nachricht importieren. |
| POST | /provider/call |
Bridge | Provider-Bridge: Anrufereignis importieren. |
Beispiele
Status ohne Key:
curl https://DEINE-DOMAIN/health
Bootstrap mit Key:
curl -H "Authorization: Bearer DEIN_APP_KEY" https://DEINE-DOMAIN/api/bootstrap
Textnachricht senden:
curl -X POST https://DEINE-DOMAIN/api/send -H "Authorization: Bearer DEIN_APP_KEY" -H "Content-Type: application/json" -d "{"chatId":"491701234567@c.us","text":"Hallo"}"
Manueller Sync:
curl -X POST -H "Authorization: Bearer DEIN_APP_KEY" https://DEINE-DOMAIN/api/sync/now
PHP-Beispiele
Textnachricht mit PHP/cURL senden:
<?php
$baseUrl = 'https://DEINE-DOMAIN';
$appKey = 'DEIN_APP_KEY';
$payload = [
'chatId' => '491701234567@c.us',
'text' => 'Hallo von PHP'
];
$ch = curl_init($baseUrl . '/api/send');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $appKey,
'Content-Type: application/json'
],
CURLOPT_POSTFIELDS => json_encode($payload, JSON_UNESCAPED_UNICODE)
]);
$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
$error = curl_error($ch);
curl_close($ch);
if ($response === false) {
die('Fehler: ' . $error);
}
echo 'HTTP ' . $httpCode . PHP_EOL;
echo $response;
?>
Bootstrap/Chats mit PHP abrufen:
<?php
$baseUrl = 'https://DEINE-DOMAIN';
$appKey = 'DEIN_APP_KEY';
$ch = curl_init($baseUrl . '/api/bootstrap');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $appKey
]
]);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
print_r($data);
?>
Bild/Datei mit PHP senden:
<?php
$baseUrl = 'https://DEINE-DOMAIN';
$appKey = 'DEIN_APP_KEY';
$filePath = __DIR__ . '/bild.jpg';
$payload = [
'chatId' => '491701234567@c.us',
'caption' => 'Bild von PHP',
'file' => new CURLFile($filePath)
];
$ch = curl_init($baseUrl . '/api/media/send');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'Authorization: Bearer ' . $appKey
],
CURLOPT_POSTFIELDS => $payload
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
Hinweise
Medien werden vor dem Bereitstellen geprüft, neu encodiert und in uploads/safe gespeichert. Blockierte Dateien landen in uploads/quarantine.