Pierwsze wywołanie
Wyświetl połączenia, do których ma dostęp Państwa klucz, i sprawdź dostępną pojemność, zanim utworzą Państwo kolejne.
Bazowy adres URL: https://developers.wasync.app/api/v1.
Wyświetlanie połączeń, z których można korzystać
curl https://developers.wasync.app/api/v1/connections \
-H "Authorization: Bearer $WASYNC_API_KEY"Widoczne są tylko połączenia z aktywną licencją. Każde z nich ma pole provider o wartości
qr lub cloud_api, pole id (cuid — stały identyfikator, który należy zapisać
przy własnym rekordzie klienta) oraz pole status. Wymaga zakresu whatsapp.read.
Już korzystają Państwo z cloudapi.wasync.app/api/v1? Nic nie trzeba zmieniać.
Kanonicznym hostem jest developers.wasync.app, ale cloudapi.wasync.app to
stały alias dokładnie tego samego API — te same klucze, te same ścieżki, te same
odpowiedzi — i pozostanie ważny bezterminowo. Żadna istniejąca integracja nie
wymaga zmian. Punkty końcowe OAuth, dokumenty /.well-known/… i adres URL
serwera MCP to identyfikatory protokołów zarejestrowane przez klientów, dlatego
celowo pozostają na cloudapi.wasync.app.
Sprawdzanie pojemności, zanim złożą Państwo obietnicę
curl https://developers.wasync.app/api/v1/account \
-H "Authorization: Bearer $WASYNC_API_KEY"{
"slots": {
"total": 30,
"used": 28,
"available": 2,
"nextExpiry": "2027-08-08T09:00:00.000Z"
},
"connections": {
"total": 28,
"connected": 27,
"needsReconnect": 1
}
}Pole slots.available informuje, czy mogą Państwo od razu podłączyć kolejny numer,
a nextExpiry to data, przed którą należy wystawić fakturę własnemu klientowi —
dzięki temu miejsce nigdy nie wygaśnie w czasie, gdy ktoś już Państwu zapłacił.
Pole connections.needsReconnect zlicza numery, które czekają obecnie, aż ich
właściciel zeskanuje kod QR. Zamiast odpytywać o ten stan, subskrybują Państwo
zdarzenia połączeń, aby dowiedzieć się o zmianie
w chwili, gdy nastąpi. Wymaga zakresu whatsapp.read.
Miejsce (slot) to pojemność, a nie numer telefonu. Po usunięciu połączenia jego slot wraca do Państwa puli wraz z pozostałym czasem — kolejny podłączany numer automatycznie go przejmie. Dzięki temu mogą Państwo przenieść opłacony slot od odchodzącego klienta do nowego, nie płacąc dwa razy.
Podłączanie numeru
Jedno wywołanie tworzy połączenie i zwraca kod QR do zeskanowania. Działa w zupełnie nowej przestrzeni roboczej, bez żadnych połączeń — z kluczem nie trzeba wcześniej niczego klikać w portalu.
curl -X POST https://developers.wasync.app/api/v1/connections \
-H "Authorization: Bearer $WASYNC_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{"label":"Support line"}'{
"connection": {
"id": "conn_8f3a21",
"status": "connecting",
"qr": "data:image/png;base64,iVBORw0KGgo…"
}
}Otrzymany tutaj kod QR traci ważność
WhatsApp zmienia kod parowania mniej więcej co 20 sekund, więc pole qr
w odpowiedzi na utworzenie połączenia staje się nieaktualne w ciągu kilku sekund
od wyświetlenia. Ten błąd jest cichy: telefon się nie sparuje, a nic na ekranie
nie wyjaśni dlaczego. Odpytuj GET /connections/{id} co 3–5 s i za każdym razem
wyświetlaj ponownie qr z odpowiedzi. Nie zapisuj go w pamięci podręcznej i nie
ukrywaj odświeżania za przyciskiem, który użytkownik musiałby nacisnąć.
Kod parowania i QR opisuje alternatywę
dla jednego urządzenia.
Wymaga zakresu whatsapp.manage. Tak utworzone połączenia to numery qr;
numery cloud_api podłącza się natomiast przez Meta Embedded Signup. Ten punkt
końcowy jest dostępny wyłącznie w samodzielnej przestrzeni roboczej — portal
Bitrix24 otrzyma odpowiedź 403 forbidden_portal_kind, ponieważ tam połączenia
tworzy administrator portalu w WASync. Należy wysyłać nagłówek Idempotency-Key
— utworzenie połączenia zużywa opłacony slot, a ponowienie po przekroczeniu
czasu oczekiwania bez tego nagłówka oznacza zakup dwóch.
Błędy i idempotentność opisuje cztery
przypadki, które trzeba obsłużyć.