Kopplungscode & QR
Der QR-Code wechselt alle 20 Sekunden. Bieten Sie beide Wege an, denn ein Onboarding auf nur einem Gerät kann den eigenen Bildschirm nicht fotografieren.
Die Kopplung gilt für qr-Verbindungen. Eine cloud_api-Nummer scannt nie etwas
und antwortet mit 409 not_supported_for_provider.
Der QR-Weg
POST /connections liefert einen ersten QR-Code als PNG im Data-URI-Format.
QR-Code bei jeder Abfrage neu rendern
WhatsApp wechselt den Kopplungscode etwa alle 20 Sekunden. Der qr in der
Antwort auf die Erstellung ist wenige Sekunden nach der Anzeige veraltet. Das
schlägt stillschweigend fehl: Das Telefon koppelt nie, und nichts auf dem
Bildschirm erklärt, warum.
Fragen Sie GET /connections/{id} alle 3–5 s ab und rendern Sie den qr aus
jeder Antwort neu, bis status den Wert "connected" hat. Speichern Sie ihn
nicht zwischen, und verstecken Sie die Aktualisierung nicht hinter einer
Schaltfläche, die der Nutzer erst drücken muss.
Dieselbe Regel gilt für eine idempotente Wiederholung: Wenn POST /connections
mit 200 und Idempotency-Replayed: true antwortet, wurde der qr in dieser
Antwort frisch abgerufen und nicht aus dem Speicher wiedergegeben – eben weil ein
gespeicherter Code nicht mehr scannbar wäre.
Der Weg über den Kopplungscode
Ein QR-Code braucht zwei Geräte: einen Bildschirm, der ihn anzeigt, und ein Telefon, das ihn fotografiert. Ein großer Teil der echten Onboardings findet auf einem Gerät statt – der Kunde schließt Ihren Ablauf auf dem Telefon ab, auf dem auch WhatsApp läuft, und kann den eigenen Bildschirm nicht fotografieren. Für diese Kunden ist der QR-Weg nicht umständlich, sondern unmöglich.
curl -X POST https://developers.wasync.app/api/v1/connections/conn_8f3a21/pairing-code \
-H "Authorization: Bearer $WASYNC_API_KEY" \
-H "Content-Type: application/json" \
-d '{"phoneNumber":"40740267964"}'{
"code": "7S59-1KZP"
}Der Kunde öffnet WhatsApp → Einstellungen → Verknüpfte Geräte → Mit Telefonnummer verknüpfen und gibt den Code ein.
phoneNumber steht im E.164-Format ohne führendes + – nur Ziffern.
Alles andere wird mit 400 { "error": "invalid_phone_number" } abgelehnt, statt
für Sie bereinigt zu werden: Wer die gesendete Nummer stillschweigend umschreibt,
koppelt am Ende ein Konto, das niemand angefordert hat. Verwendet
whatsapp.manage, genau wie das Erstellen der Verbindung.
Ein Kopplungscode ist nicht immer verfügbar – behalten Sie den QR-Code als Alternative
Die Engine kann es ablehnen, einen Code auszustellen. Das ist ein normales
Ergebnis und kein Ausfall. Sie antwortet mit
502 { "error": "pairing_code_unavailable" } statt mit einem generischen 500,
damit Sie die beiden Fälle unterscheiden und den Nutzer zurück zum QR-Code
schicken können. Eine Integration, die nur den Weg über den Kopplungscode
anbietet, zeigt früher oder später einem Kunden einen Bildschirm ohne
Weiterkommen. Zeigen Sie beide nebeneinander an.
Einen weiteren Code anfordern
Sie können für dieselbe Verbindung einen weiteren Code anfordern: Es wird ein neuer Code zurückgegeben, und die Sitzung wird nicht neu aufgebaut. Eine Schaltfläche „Neuen Code senden“ ist deshalb unbedenklich.
Die Anzahl ist auf 5 pro Verbindung und 15 Minuten begrenzt. Darüber hinaus
erhalten Sie 429 { "error": "rate_limited" } mit einem Retry-After-Header, den
Sie beachten sollten. Die Begrenzung ist keine Bürokratie – wiederholte
Code-Anfragen für eine Nummer sind genau das, worauf die Missbrauchserkennung von
WhatsApp reagiert, und gefährdet ist die Nummer Ihres Kunden.
Es wird nichts zusätzlich verbraucht
Die Kopplung per Code belegt denselben bezahlten Platz und startet dieselbe 7-tägige kostenlose Testphase wie das Scannen eines QR-Codes: Die Lizenz wird beansprucht, wenn die Nummer tatsächlich gekoppelt wird – auf welchem Weg auch immer.
Auch die Erfolgskontrolle bleibt unverändert. Es gibt kein Ereignis „Code
akzeptiert“. Fragen Sie daher GET /connections/{id} ab, bis status den Wert
"connected" hat, und/oder lauschen Sie auf den webhook connection.connected.
Zwei Ablehnungen sollten Sie im Code berücksichtigen:
409 already_connected– die Sitzung ist aktiv, es gibt nichts zu koppeln.409 not_supported_for_provider– einecloud_api-Nummer. Kopplungscodes gibt es nur beiqr, sie gelten hier nie. Versuchen Sie es also nicht erneut.
Später erneut koppeln
Eine qr-Sitzung kann von selbst abbrechen. connection.disconnected teilt es
Ihnen mit, und needs_reconnect ist das Feld, an dem Sie Ihre Oberfläche
ausrichten sollten. Der QR-Code ist bewusst nicht in dieser Payload enthalten –
er ist eine Anmeldedaten-Information zum Scannen. Rufen Sie ihn deshalb über
GET /connections/{id} ab und zeigen Sie ihn dem Inhaber der Nummer genau wie bei
der Ersteinrichtung an. Siehe Webhooks.
Webhooks
Ein signierter Endpunkt pro Konto. Signaturprüfung, Ereigniskatalog, Wiederholungsrichtlinie und Rotation des Secrets.
Eine Nummer von einem anderen Anbieter übernehmen
Übertragen Sie eine WhatsApp Business API-Nummer, die Sie bei einem anderen Anbieter betreiben, mit dem Assistenten in der App zu WASync und behalten Sie Ihre Reputation bei Meta.