Endpoint session mengelola siklus hidup sesi WhatsApp — buat, ambil QR, logout, cek status.
http://localhost:5002/api/api/newcurl --request POST \
--url http://localhost:5002/api/api/newPOST /api/new — Inisialisasi sesi baru
Handler: SessionController.create (src/controller/SessionController.ts:11)
Inisialisasi socket Baileys untuk instance. Membuat folder session/auth/<instance>/ dan mulai proses login. QR dikirim lewat Socket.IO event qrcode.
Request
| Field | Wajib | Tipe | Catatan |
|---|---|---|---|
instance | ✅ | string | UUID sesi — dipakai sebagai nama folder, key Map, room Socket.IO, kolom id device |
{ "instance": "0c1a968c-7918-4c29-a524-0ad7c445ee7f" }Response
{
"success": true,
"message": "Sesi berhasil diinisialisasi. Silahkan cek QR Code",
"data": { "instance": "0c1a968c-..." }
}Jika sesi sudah CONNECTED, socket lama dipakai kembali (tidak buat baru).
Error
| Status | Kondisi | Pesan |
|---|---|---|
| 400 | instance kosong | “Instance ID (nama sesi) wajib diisi.” |
| 500 | Gagal start session | Gagal membuat sesi: ... |
GET /api/qrcode — Ambil QR (base64)
Handler: SessionController.getQR (src/controller/SessionController.ts:34)
Request
Query parameter:
| Field | Wajib | Tipe |
|---|---|---|
instance | ✅ | string |
GET /api/qrcode?instance=0c1a968c-...Response berdasarkan kondisi sesi
| Kondisi | HTTP | data |
|---|---|---|
| Sesi belum ada | 200 | Sesi otomatis di-start, qrcode: null |
Sudah CONNECTED | 200 | { "qrcode": null, "status": "CONNECTED" } |
QR_READY | 200 | { "qrcode": "data:image/png;base64,...", "status": "QR_READY" } |
Masih proses (CONNECTING) | 202 | { "qrcode": null, "status": "CONNECTING" } |
Contoh response (QR_READY)
{
"success": true,
"message": "Silahkan scan QR code ini.",
"data": {
"qrcode": "data:image/png;base64,iVBORw0KGgo...",
"status": "QR_READY"
}
}GET /api/logout — Logout & hapus sesi
Handler: SessionController.logout (src/controller/SessionController.ts:72)
Request
Query parameter:
| Field | Wajib | Tipe |
|---|---|---|
instance | ✅ | string |
GET /api/logout?instance=0c1a968c-...Response
{
"success": true,
"message": "Berhasil logout dan menghpaus sesi",
"data": {}
}Aksi
session.sock.ev.removeAllListeners('creds.update')— matikan listenerawait session.sock.logout()— logout dari WhatsAppsession.sock.end(undefined)— tutup socketthis.sessions.delete(instanceId)— hapus dari Mapfs.rmSync(authPath, { recursive: true, force: true })— hapus folder kredensial
Setelah logout, device butuh scan QR ulang untuk reconnect.
GET /api/device-info — Status device
Handler: SessionController.status (src/controller/SessionController.ts:93)
Request
Query parameter:
| Field | Wajib | Tipe |
|---|---|---|
instance | ✅ | string |
GET /api/device-info?instance=0c1a968c-...Response (CONNECTED)
{
"success": true,
"message": "Info device berhasil di retrieve",
"data": {
"id": "0c1a968c-...",
"status": "open",
"isConnected": true,
"isActivated": true,
"message": "Device Terhubung",
"user": {
"name": "Nama Profil WA",
"id": "628123456789"
}
}
}Response (NOT_FOUND)
{
"success": true,
"message": "Info device berhasil di retrieve",
"data": {
"id": "0c1a968c-...",
"status": "NOT_FOUND",
"isConnected": false,
"isActivated": false,
"message": "Sesi tidak ditemukan."
}
}Status normalisasi
| Status internal | API status |
|---|---|
CONNECTED | "open" |
CONNECTING / QR_READY / DISCONNECTED | "close" |
| Sesi tidak ada di Map | "NOT_FOUND" |
Catatan
- Tidak ada endpoint untuk list semua sesi — hanya cek per-
instance device-inforeturnsuccess: truebahkan untukNOT_FOUND— bukan error, hanya statusGET /api/logoutadalah operasi destruktif via GET — non-RESTful, tapi sudah live- Sesi disimpan in-memory — restart akan muat ulang semua sesi dari
session/auth/
Langkah berikutnya
- Kirim pesan? Baca Messaging API.
- Detail siklus sesi? Baca Session Lifecycle.
- Kembali ke API Reference.