Own Messenger API-Doku

Server v0.2.40 · Status: läuft · Ausgewählter Account: main · Provider: wwebjs

Base URL
https://DEINE-DOMAIN
WebSocket
wss://DEINE-DOMAIN/ws
App-Key Schutz
5 Key(s) aktiv
WhatsApp Status ausgewaehlt
CONNECTED

WhatsApp 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
Sicherheit: Von außen nur HTTPS/WSS benutzen. Port 3000 soll nicht direkt öffentlich erreichbar sein. Öffentlich sollten nur Port 80 und 443 offen sein.

Endpunkte

MethodePfadKeyBeschreibung
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.