What's new, 21 October 2026: A customer who sends several messages before the bot's first reply no longer gets the opening sequence of a Chat Flow twice
WASync · Developers

Kod parowania i QR

Kod QR zmienia się co 20 sekund. Proszę udostępnić obie ścieżki, ponieważ klient korzystający z jednego urządzenia nie może sfotografować własnego ekranu.

Parowanie dotyczy połączeń qr. Numer cloud_api niczego nie skanuje i odpowiada 409 not_supported_for_provider.

Ścieżka QR

POST /connections zwraca początkowy kod QR jako obraz PNG w formacie data-URI.

Proszę odświeżać kod QR przy każdym odpytaniu

WhatsApp zmienia kod parowania mniej więcej co 20 sekund. Kod qr zawarty w odpowiedzi na utworzenie połączenia traci ważność w ciągu kilku sekund od wyświetlenia, a problem ten występuje po cichu: telefon się nie paruje, a nic na ekranie nie wyjaśnia dlaczego.

Proszę odpytywać GET /connections/{id} co 3–5 s i wyświetlać ponownie qr z każdej odpowiedzi, aż status przyjmie wartość "connected". Nie należy go buforować ani ukrywać odświeżania za przyciskiem, który użytkownik musi nacisnąć.

Ta sama zasada dotyczy idempotentnego powtórzenia: gdy POST /connections zwraca 200 z nagłówkiem Idempotency-Replayed: true, kod qr w tej odpowiedzi został pobrany ponownie, a nie odtworzony z pamięci — właśnie dlatego, że zapisany kod nie dałby się już zeskanować.

Ścieżka kodu parowania

Kod QR wymaga dwóch urządzeń: ekranu, który go pokazuje, i telefonu, który go fotografuje. Duża część rzeczywistych wdrożeń klientów odbywa się na jednym urządzeniu — klient kończy Państwa proces na tym samym telefonie, na którym działa WhatsApp, i nie może sfotografować własnego ekranu. Dla takich osób ścieżka QR nie jest niewygodna, tylko niemożliwa.

POST /connections/{id}/pairing-code
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"}'
200 response
{
  "code": "7S59-1KZP"
}

Klient otwiera WhatsApp → Ustawienia → Połączone urządzenia → Połącz za pomocą numeru telefonu i wpisuje kod.

phoneNumber ma format E.164 bez początkowego + — wyłącznie cyfry. Każda inna wartość zostaje odrzucona z odpowiedzią 400 { "error": "invalid_phone_number" }, zamiast być po cichu poprawiona: samowolna zmiana przesłanego numeru to prosta droga do sparowania konta, o które nikt nie prosił. Wymaga uprawnienia whatsapp.manage, tak samo jak utworzenie połączenia.

Kod parowania nie zawsze jest dostępny — proszę zachować QR jako rozwiązanie zapasowe

Silnik może odmówić wydania kodu. To zwykła sytuacja, a nie awaria, i dlatego odpowiada on 502 { "error": "pairing_code_unavailable" }, a nie ogólnym błędem 500 — aby można było odróżnić te dwa przypadki i odesłać użytkownika z powrotem do kodu QR. Integracja, która udostępnia tylko ścieżkę kodu parowania, prędzej czy później pokaże klientowi ekran bez dalszej drogi. Proszę wyświetlać obie opcje obok siebie.

Prośba o kolejny kod

Na tym samym połączeniu można zażądać kolejnego kodu: zwracany jest nowy kod, a sesja nie jest odbudowywana, więc przycisk „Wyślij mi kolejny kod” jest bezpieczny.

Limit wynosi 5 na połączenie na 15 minut; po jego przekroczeniu otrzymają Państwo 429 { "error": "rate_limited" } wraz z nagłówkiem Retry-After, którego należy przestrzegać. Limit nie jest biurokracją — wielokrotne żądanie kodów dla jednego numeru to dokładnie to, na co reagują mechanizmy antynadużyciowe WhatsApp, a zagrożony jest numer Państwa klienta.

Nic dodatkowego nie jest zużywane

Parowanie kodem zajmuje ten sam płatny slot i uruchamia ten sam 7-dniowy bezpłatny okres próbny co skanowanie kodu QR: licencja jest przypisywana, gdy numer faktycznie się sparuje, niezależnie od sposobu parowania.

Śledzenie powodzenia też się nie zmienia. Nie ma zdarzenia „kod zaakceptowany”, więc proszę odpytywać GET /connections/{id}, aż status przyjmie wartość "connected", i/lub nasłuchiwać webhooka connection.connected.

Warto obsłużyć dwie odmowy:

  • 409 already_connected — sesja jest aktywna, nie ma czego parować.
  • 409 not_supported_for_provider — numer cloud_api. Kody parowania dotyczą wyłącznie qr i nigdy się tu nie stosują, więc nie należy ponawiać próby.

Ponowne parowanie

Sesja qr może zerwać się sama. Informuje o tym connection.disconnected, a pole needs_reconnect jest tym, według którego należy sterować interfejsem. Kodu QR celowo nie ma w tym ładunku — to dane uwierzytelniające do logowania przez skanowanie — dlatego proszę pobrać go z GET /connections/{id} i pokazać właścicielowi numeru dokładnie tak jak podczas pierwszej konfiguracji. Zob. Webhooks.

Czy ta strona była pomocna?

On this page