SiHubung
SiHubung REST API
Active Engine Postman
REST API WhatsApp Gateway

Integrasikan layanan pesan WhatsApp otomatis (Kode OTP, Link Reset Password, Pengingat Tagihan & Domain, Broadcast Massal, Manajemen Grup, Otomasi Privasi, Panggilan & USync Directory) langsung ke aplikasi web, mobile, atau sistem CRM pihak ketiga Anda.

Zero-Downtime Engine Multi-Session Scale Baileys v7 Protocol
Base URL API Gateway
https://api.sihubung.id
Metode Autentikasi (HTTP Header)
Authorization: Bearer <SECRET_TOKEN>
Secret Token API Anda
Otomatis disisipkan ke semua contoh kode & playground browser.
Live Interactive API Playground
Uji coba kirim pesan WhatsApp real-time langsung ke ponsel Anda tanpa perlu membuka terminal atau Postman.
Terkunci (Perlu Token)
Nomor & Sesi Pengirim Disembunyikan

Demi privasi & keamanan, nomor pengirim hanya dapat dipilih setelah Anda memasukkan Secret Token API yang valid pada kotak di atas.

// Masukkan Secret Token pada kotak atas, lalu klik tombol "Kirim Pesan WA Sekarang" untuk melihat respon langsung dari server WhatsApp Gateway...
Multi-Language Code Snippet Generator
Pilih bahasa pemrograman & endpoint untuk melihat contoh kode integrasi siap pakai secara instan yang otomatis disesuaikan dengan Bearer Token dan Base URL Anda.
// Memuat kode snippet...
Skenario Penggunaan Nyata (Real-World Use Cases)
API Gateway ini dirancang serbaguna untuk melayani berbagai kebutuhan otomatisasi bisnis Anda.
Kode OTP & Verifikasi 2FA

Kirimkan 6 digit kode OTP verifikasi pendaftaran akun atau transaksi 2FA secara instan dalam hitungan detik.

Reset Password Akun

Kirim link rahasia token reset password yang aman langsung ke nomor WhatsApp pemilik akun.

Pengingat Tagihan & Domain

Kirim peringatan otomatis H-7, H-3, dan H-1 sebelum masa aktif domain, hosting, cicilan, atau invoice berakhir.

Resi & Status Pesanan (CRM)

Notifikasi nomor resi pengiriman kurir, konfirmasi pesanan baru, dan pengiriman invoice PDF otomatis.

Arsitektur Stabilitas Engine WhatsApp (Zero-Downtime & Multi-Session)
Sistem ketahanan koneksi socket multi-akun tanpa risiko stream conflict dan bebas scan QR berulang kali.
Proteksi Anti-Mati & Anti-Conflict 440 (Bebas Scan Ulang)
Engine dilengkapi pengaman socket cerdas berstandar Baileys 7.x, sehingga proses restart, multi-threading, atau gangguan jaringan tidak akan merusak autentikasi akun.
1. PID Lock File Guard

Mencegah proses duplikat Node.js berjalan bersamaan untuk menghindari perebutan port socket.

2. Graceful Shutdown

Menutup socket Baileys secara rapi saat SIGTERM/SIGINT tanpa meninggalkan koneksi zombie di server WA.

3. Conflict Cooldown Protection

Menerapkan jeda bertahap otomatis saat mendeteksi error stream conflict (440) untuk mencegah banned nomor.

4. Smart Watchdog (60s)

Background health-check yang mendeteksi jaringan terputus dan otomatis menyambung kembali seketika internet pulih.

5. Single-Tick Event Emitter

Memproses event secara batched via sock.ev.process() untuk mencegah race-condition dan memory leak.

6. JID Normalization (PN ↔ LID)

Resolusi otomatis format nomor Phone Number JID (@s.whatsapp.net) ke LID (@lid).

GET /sessions
Ambil Seluruh Daftar Sesi WhatsApp Aktif
Multi-Session Scale

Mengambil seluruh daftar akun/perangkat WhatsApp yang terdaftar pada engine beserta status koneksinya (Connected / Disconnected / QR Ready / Authenticating).

curl -X GET "https://api.sihubung.id/sessions" \
  -H "Authorization: Bearer YOUR_SECRET_BEARER_TOKEN"
Contoh Respon Server (JSON): 200 OK
{
  "success": true,
  "total": 2,
  "sessions": [
    {
      "sessionId": "session_1",
      "name": "Customer Support WA 1",
      "phone": "628123456789",
      "status": "connected",
      "battery": 95,
      "plugged": true
    },
    {
      "sessionId": "session_2",
      "name": "Billing Notification Bot",
      "phone": "628198765432",
      "status": "connected",
      "battery": null,
      "plugged": null
    }
  ]
}
GET /sessions/:sessionId/status
Cek Status Koneksi Sesi Tertentu
Heartbeat Check

Memeriksa secara spesifik apakah sesi WhatsApp tertentu sedang online, terhubung, atau butuh scan ulang.

curl -X GET "https://api.sihubung.id/sessions/session_1/status" \
  -H "Authorization: Bearer YOUR_SECRET_BEARER_TOKEN"
GET /sessions/:sessionId/qr
Ambil QR Code Sesi WhatsApp
Pairing API

Mengambil string QR Code dan Data Base64 gambar QR untuk dipindai oleh aplikasi WhatsApp di ponsel pengguna.

curl -X GET "https://api.sihubung.id/sessions/session_1/qr" \
  -H "Authorization: Bearer YOUR_SECRET_BEARER_TOKEN"
POST /sessions/:sessionId/pairing-code
Minta 8-Digit Pairing Code (Tautkan Tanpa Scan QR)
Link Without Scan

Menautkan akun WhatsApp ke engine menggunakan 8 digit kode alfanumerik (contoh: V9M76TW6) tanpa perlu scan QR Code. Pengguna memasukkan kode ini di WhatsApp HP (Perangkat Tertaut -> Tautkan dengan nomor telepon saja).

Parameter Body (JSON) Tipe Status Keterangan
phoneNumber string Wajib Nomor WhatsApp yang akan ditautkan (format internasional awalan 62). Contoh: "628123456789"
curl -X POST "https://api.sihubung.id/sessions/session_1/pairing-code" \
  -H "Authorization: Bearer YOUR_SECRET_BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "phoneNumber": "628123456789"
  }'
POST /sessions/reconnect-all
Paksa Reconnect Seluruh Sesi Aktif
Self-Healing

Memerintahkan engine untuk secara instan menyambungkan ulang semua sesi aktif tanpa perlu me-restart server atau Node.js daemon.

curl -X POST "https://api.sihubung.id/sessions/reconnect-all" \
  -H "Authorization: Bearer YOUR_SECRET_BEARER_TOKEN"
POST /send-message
Kirim Pesan Teks (Single Message)
Standard Messaging

Mengirimkan pesan teks otomatis (OTP, Notifikasi Transaksi, Link Password) ke satu nomor tujuan penerima.

Parameter Body (JSON) Tipe Data Status Keterangan & Contoh Nilai
to string Wajib Nomor tujuan penerima (format internasional atau awalan 08). Contoh: "08123456789"
message string Wajib Isi teks pesan. Mendukung emoji, spintax {Halo|Hai}, serta format WhatsApp (*tebal*, _miring_, ~coret~).
curl -X POST "https://api.sihubung.id/send-message" \
  -H "Authorization: Bearer YOUR_SECRET_BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "08123456789",
    "message": "Kode OTP Verifikasi akun Anda adalah 582910. Berlaku selama 5 menit."
  }'
POST /sessions/:sessionId/send-media
Kirim Berkas Media & Dokumen (PDF, Gambar, Video, Audio)
Media Attachment

Mengirimkan lampiran berkas dokumen (PDF, DOCX, XLSX, ZIP), foto (JPG, PNG), video (MP4), atau rekaman suara (MP3/OGG) dengan caption pendamping.

Parameter Body (JSON) Tipe Data Status Keterangan
to string Wajib Nomor tujuan penerima (contoh: "08123456789").
mediaUrl string Wajib URL publik berkas (HTTPS) atau lokasi file lokal di server.
mediaType string Opsional Opsi: "document" (default), "image", "video", atau "audio".
caption string Opsional Keterangan teks yang tampil bersama berkas media.
fileName string Opsional Nama file yang akan muncul di WhatsApp (misal: "Katalog_Produk_2026.pdf").
mimetype string Opsional Mime-type berkas (misal: "application/pdf", "image/jpeg").
curl -X POST "https://api.sihubung.id/sessions/session_1/send-media" \
  -H "Authorization: Bearer YOUR_SECRET_BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "to": "08123456789",
    "mediaUrl": "https://domainanda.com/files/Katalog_Produk.pdf",
    "mediaType": "document",
    "caption": "Halo, berikut file katalog produk terbaru kami!",
    "fileName": "Katalog_Produk_2026.pdf",
    "mimetype": "application/pdf"
  }'
POST /sessions/:sessionId/send-bulk
Kirim Broadcast Massal (Bulk Message)
Broadcast Anti-Ban

Mengirimkan pesan ke puluhan atau ratusan nomor pelanggan sekaligus secara berurutan dengan jeda waktu acak (random jitter delay) untuk melindungi nomor dari pemblokiran WhatsApp.

Parameter Body (JSON) Tipe Data Status Keterangan
phones array<string> Wajib Array daftar nomor tujuan penerima (contoh: ["08123456789", "08198765432"]).
message string Wajib Template pesan. Mendukung tag variabel nama {nama} atau spintax.
minDelay integer Opsional Delay minimal antar pesan dalam milidetik (Default: 2000).
maxDelay integer Opsional Delay maksimal antar pesan dalam milidetik (Default: 5000).
curl -X POST "https://api.sihubung.id/sessions/session_1/send-bulk" \
  -H "Authorization: Bearer YOUR_SECRET_BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "phones": ["08123456789", "08198765432"],
    "message": "Halo {nama}, domain Anda akan kadaluarsa dalam 3 hari ke depan. Segera lakukan perpanjangan.",
    "minDelay": 2000,
    "maxDelay": 5000
  }'
GET /groups
Ambil Daftar Seluruh Grup WhatsApp
Group Management

Mengambil seluruh daftar grup WhatsApp yang diikuti oleh akun pengirim, termasuk ID Grup (jid), Nama Judul Subjek, dan Jumlah Anggota.

curl -X GET "https://api.sihubung.id/groups" \
  -H "Authorization: Bearer YOUR_SECRET_BEARER_TOKEN"
POST /groups/create
Buat Grup WhatsApp Baru
Group Automation

Membuat grup WhatsApp baru secara otomatis dari sistem CRM atau pendaftaran event dengan mengundang daftar nomor anggota perdana.

Parameter Body (JSON) Tipe Data Status Keterangan
subject string Wajib Nama judul grup WhatsApp yang akan dibuat (maks. 100 karakter).
participants array<string> Wajib Array nomor HP yang langsung dimasukkan ke dalam grup (contoh: ["08123456789"]).
curl -X POST "https://api.sihubung.id/groups/create" \
  -H "Authorization: Bearer YOUR_SECRET_BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": "Pelanggan VIP Premium 2026",
    "participants": ["08123456789", "08198765432"]
  }'
POST /groups/:jid/participants
Kelola Anggota & Admin Grup
Member Moderation

Menambahkan anggota baru, mengeluarkan nomor anggota (kick), mengangkat anggota menjadi Admin grup, atau mencabut hak Admin.

Parameter Body (JSON) Tipe Data Status Keterangan
action string Wajib Pilihan aksi: "add" (tambah), "remove" (keluarkan), "promote" (angkat admin), atau "demote" (cabut admin).
participants array<string> Wajib Array nomor kontak tujuan aksi (contoh: ["08123456789"]).
curl -X POST "https://api.sihubung.id/groups/120363012345678901@g.us/participants" \
  -H "Authorization: Bearer YOUR_SECRET_BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "action": "promote",
    "participants": ["08123456789"]
  }'
POST /groups/:jid/settings
Kunci Hak Kirim Pesan & Edit Info Grup
Group Restrictions

Mengatur mode grup menjadi "Hanya Admin yang dapat mengirim pesan" (Announcement Mode) atau mengunci hak edit deskripsi dan foto profil grup.

Parameter Body (JSON) Tipe Data Status Keterangan
setting string Wajib Opsi: "announcement" (hanya admin kirim pesan) atau "not_announcement" (semua anggota boleh kirim).
Opsi lain: "locked" (hanya admin edit info) atau "unlocked" (semua boleh edit info).
curl -X POST "https://api.sihubung.id/groups/120363012345678901@g.us/settings" \
  -H "Authorization: Bearer YOUR_SECRET_BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "setting": "announcement"
  }'
GET /groups/:jid/invite-code
Dapatkan Link Undangan Grup WhatsApp
Invite Link

Mengambil kode undangan dan URL resmi tautan gabung grup WhatsApp (format: https://chat.whatsapp.com/XXXXX).

curl -X GET "https://api.sihubung.id/groups/120363012345678901@g.us/invite-code" \
  -H "Authorization: Bearer YOUR_SECRET_BEARER_TOKEN"
POST /privacy/update
Konfigurasi Privasi Akun WhatsApp
Privacy Engine

Mengatur hak visibilitas Last Seen, Status Online, Foto Profil, Status Stories, Centang Biru (Read Receipts), Izin Tambah Grup, dan Mode Pesan Sementara.

Kategori Privasi Parameter Body (JSON) Pilihan Nilai Valid
Terakhir Dilihat (Last Seen) lastSeen "all" | "contacts" | "contact_blacklist" | "none"
Status Online online "all" | "match_last_seen"
Foto Profil (Profile Pic) profilePicture "all" | "contacts" | "none"
Centang Biru (Read Receipts) readReceipts "all" (Aktif) | "none" (Nonaktif)
Timer Pesan Sementara disappearingMode 0 (Mati), 86400 (24 Jam), 604800 (7 Hari), 7776000 (90 Hari)
curl -X POST "https://api.sihubung.id/privacy/update" \
  -H "Authorization: Bearer YOUR_SECRET_BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "lastSeen": "contacts",
    "online": "match_last_seen",
    "readReceipts": "all"
  }'
POST /blocklist/update
Blokir / Buka Blokir Kontak Pelanggan
Contact Blacklist

Memblokir nomor pelanggan yang melanggar aturan atau membuka kembali blokir kontak pelanggan yang bersangkutan.

curl -X POST "https://api.sihubung.id/blocklist/update" \
  -H "Authorization: Bearer YOUR_SECRET_BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "jid": "08129999999@s.whatsapp.net",
    "action": "block"
  }'
POST /presence/send
Siarkan Status Kehadiran (Presence Status)
Humanized Typing

Mengirimkan status "Sedang Mengetik..." (composing), "Sedang Merekam Pesan Suara..." (recording), atau "Online" (available) agar interaksi robot/sistem tampak natural layaknya manusia.

Parameter Body (JSON) Tipe Data Status Keterangan
presence string Wajib Opsi: "available" (online), "unavailable" (offline), "composing" (mengetik teks), "recording" (merekam audio), "paused" (jeda).
to string Opsional Nomor tujuan spesifik atau kosongkan untuk menyiarkan status secara global ke semua kontak.
curl -X POST "https://api.sihubung.id/presence/send" \
  -H "Authorization: Bearer YOUR_SECRET_BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "presence": "composing",
    "to": "08123456789@s.whatsapp.net"
  }'
POST /stories/send
Publikasi Status / Story WhatsApp (24 Jam)
WhatsApp Stories

Mempublikasikan postingan Status Story WhatsApp yang tayang selama 24 jam ke seluruh kontak pelanggan. Mendukung Teks (dengan custom background hex & font), Gambar, Video, dan Suara.

Parameter Body (JSON) Tipe Data Status Keterangan
type string Wajib Pilihan: "text", "image", "video", atau "audio".
text string Kondisional Isi teks status atau caption gambar/video. Wajib diisi jika type adalah "text".
mediaUrl string Kondisional URL file media (wajib untuk type image, video, audio).
backgroundColor string Opsional Kode warna latar status teks (misal: "#128C7E", "#1e40af").
font integer Opsional Pilihan gaya font teks (1 sampai 5). Default: 1.
curl -X POST "https://api.sihubung.id/stories/send" \
  -H "Authorization: Bearer YOUR_SECRET_BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "text",
    "text": "Promo Spesial Gajian Diskon 50% Hari Ini Saja! Kunjungi website kami sekarang.",
    "backgroundColor": "#128C7E",
    "font": 2
  }'
POST /broadcast-lists/send
Kirim Pesan ke Daftar Siaran (Broadcast Lists)
Broadcast Lists

Mengirimkan pesan promosi langsung ke target JID Daftar Siaran WhatsApp (format: [timestamp]@broadcast).

curl -X POST "https://api.sihubung.id/broadcast-lists/send" \
  -H "Authorization: Bearer YOUR_SECRET_BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "broadcastJid": "1672531200@broadcast",
    "message": "Pengumuman libur operasional kantor mulai besok. Terima kasih."
  }'
POST /calls/config
Konfigurasi Auto-Reject Panggilan Telepon
Call Guard

Menolak panggilan telepon suara/video WhatsApp masuk secara otomatis, serta mengirimkan pesan balasan teks penjelas kepada pemanggil.

Parameter Body (JSON) Tipe Data Status Keterangan
autoRejectCalls boolean Wajib Nilai true untuk mengaktifkan auto-reject atau false untuk mematikan.
autoReplyOnReject boolean Wajib Kirim pesan penjelas otomatis setelah panggilan ditolak.
autoReplyText string Opsional Template isi pesan balasan teks otomatis kepada pemanggil.
curl -X POST "https://api.sihubung.id/calls/config" \
  -H "Authorization: Bearer YOUR_SECRET_BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "autoRejectCalls": true,
    "autoReplyOnReject": true,
    "autoReplyText": "Mohon maaf, nomor ini tidak menerima panggilan telepon WhatsApp. Silakan sampaikan keperluan Anda melalui pesan teks."
  }'
POST /usync/query
Query Direktori USync, Cek Nomor & Multi-Device
USync & MEX Protocol

Memeriksa apakah nomor HP terdaftar aktif di WhatsApp (*onWhatsApp check*), melakukan resolusi pemetaan nomor HP ke WhatsApp LID, dan mendeteksi daftar perangkat multi-device pengguna.

curl -X POST "https://api.sihubung.id/usync/query" \
  -H "Authorization: Bearer YOUR_SECRET_BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "users": ["08123456789", "08198765432"],
    "protocols": ["contact", "device", "status"]
  }'
POST /fetch-history
Tarik Riwayat Pesan Lama (History On-Demand)
History On-Demand

Menarik pesan-pesan percakapan masa lalu dari server WhatsApp untuk sinkronisasi histori obrolan pada kontak tertentu.

curl -X POST "https://api.sihubung.id/fetch-history" \
  -H "Authorization: Bearer YOUR_SECRET_BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "jid": "08123456789@s.whatsapp.net",
    "count": 50
  }'
GET /sessions/:sessionId/raw-frames
Inspeksi Raw BinaryNode WebSocket
Protocol Tap

Membaca log 50 raw frame binary node (paket biner) terbaru yang dikirimkan server WhatsApp langsung dari layer WebSocket tanpa manipulasi level tinggi.

Struktur Komunikasi WhatsApp Web (BinaryNode)
Setiap frame protokol WhatsApp terdiri dari:
  • tag: Topik frame (misal: "message", "ib", "iq", "notification").
  • attrs: Metadata key-value (misal ID pesan, JID pengirim/penerima, tipe pesan).
  • content: Isi payload sesungguhnya (bisa berupa array BinaryNode bertingkat atau Buffer biner).
curl -X GET "https://api.sihubung.id/sessions/session_1/raw-frames" \
  -H "Authorization: Bearer YOUR_SECRET_BEARER_TOKEN"
POST /sessions/:sessionId/raw-callback
Daftarkan Raw WebSocket Hook (CB:)
Hook Registration

Mendaftarkan callback listener langsung ke WebSocket client menggunakan sintaks pola filter Baileys CB:<tag> untuk menangkap event tingkat rendah sebelum diubah menjadi high-level event.

curl -X POST "https://api.sihubung.id/sessions/session_1/raw-callback" \
  -H "Authorization: Bearer YOUR_SECRET_BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "pattern": "CB:edge_routing"
  }'
POST /sessions/:sessionId/send-node
Kirim BinaryNode Kustom Langsung ke Server WA
Raw Stanza Injection

Mengirimkan stanza BinaryNode kustom langsung ke server WhatsApp menggunakan socket.sendNode() atau socket.query() untuk eksperimen protokol lanjutan.

curl -X POST "https://api.sihubung.id/sessions/session_1/send-node" \
  -H "Authorization: Bearer YOUR_SECRET_BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "node": {
      "tag": "iq",
      "attrs": {
        "to": "@s.whatsapp.net",
        "type": "get",
        "xmlns": "w:p"
      },
      "content": []
    },
    "queryMode": true
  }'
POST /config/debug-log
Ganti Tingkat Log Debug Runtime
Dynamic Logging

Mengubah tingkat verbose logging Pino secara dinamis tanpa restart engine untuk melihat seluruh traffic raw WebSocket secara mendalam saat debugging.

curl -X POST "https://api.sihubung.id/config/debug-log" \
  -H "Authorization: Bearer YOUR_SECRET_BEARER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "level": "debug"
  }'
Integrasi Real-Time Webhook (Pesan Masuk & Panggilan)
Terima notifikasi instan setiap kali ada pesan teks baru, file media dari pelanggan, atau panggilan masuk ke server URL Anda.
Inbound Webhooks
Anti-Spam History Flag (Pencegahan Balasan Berulang)
Setiap payload webhook dilengkapi dengan parameter is_history: true/false. Saat login ulang atau reconnect, pesan masa lalu yang disinkronkan WhatsApp akan memiliki tanda is_history: true sehingga bot Anda tidak akan membalas pesan lama secara berulang.
{
  "event": "message.upsert",
  "sessionId": "session_1",
  "data": {
    "key": {
      "remoteJid": "628123456789@s.whatsapp.net",
      "fromMe": false,
      "id": "3EB091283ABCDEF"
    },
    "pushName": "Budi Pratama",
    "message": {
      "conversation": "Halo admin, saya mau tanya harga paket langganan domain."
    },
    "messageTimestamp": 1788574000,
    "is_history": false
  }
}
TTE PAdES PKI Gateway & Panduan Integrasi Kemitraan (B2B Partner API)
Layanan REST API Tanda Tangan Elektronik (TTE) berstandar internasional PAdES (PDF Advanced Electronic Signatures) dengan kriptografi asimetris X.509 RSA-2048/SHA-256 bawaan server. Dirancang untuk dapat diintegrasikan dengan aplikasi mitra mana pun (SaaS, ERP, SPBE, HRIS, E-Commerce, Fintech, & LegalTech) tanpa biaya per-dokumen (100% Zero-Cost Self-Hosted PKI).
PARTNER READY • GRATIS UNLIMITED
Gratis & Unlimited Volume
Tidak ada kuota kredit per-lembar atau biaya berlangganan tanda tangan pihak ketiga. Tanda tangani jutaan dokumen invoice, kwitansi, SPK, dan kontrak secara gratis dari server mandiri.
Kriptografi SHA-256 & Anti-Tamper
Setiap berkas PDF disegel dengan sertifikat X.509 PKCS#12 (.p12) dan hashing SHA-256. Setiap perubahan sekecil apa pun pada isi PDF setelah ditandatangani akan langsung terdeteksi seketika.
Multi-Driver & Hybrid PSrE Ready
Arsitektur modular mendukung mode Internal CA (100% Gratis) serta dapat dialihkan sewaktu-waktu ke driver PSrE Berinduk (BSrE BSSN, PrivyID, Peruri, VIDA) sesuai regulasi mitra Anda.
Dasar Hukum & Kekuatan Pembuktian (Legalitas Regulasi Indonesia)
  • UU ITE No. 1 Tahun 2024 (Perubahan Kedua UU ITE) Pasal 5 & 11: Informasi Elektronik dan/atau Dokumen Elektronik serta Tanda Tangan Elektronik memiliki kekuatan hukum dan akibat hukum yang sah sebagai alat bukti hukum.
  • PP No. 71 Tahun 2019 (PSTE) Pasal 60: Tanda Tangan Elektronik Tidak Tersertifikasi (Self-Hosted PKI) sah digunakan dalam transaksi elektronik internal perusahaan, B2B, dan operasional bisnis selama memenuhi syarat identitas penandatangan dan integritas dokumen.
  • Standar PAdES & ISO 32000-1: Menggunakan struktur tanda tangan digital standar industri yang dapat diverifikasi oleh Adobe Acrobat Reader, Foxit, PDF-XChange, maupun sistem auditor independen.
SECURITY & AUTH Header: Authorization: Bearer <tte_key_...>
Autentikasi, Tata Kelola Akun & IP/Domain Whitelist (Layanan Gratis)
100% Gratis Terkelola

Meskipun API TTE PAdES disediakan 100% Gratis tanpa biaya per-dokumen, akses ke endpoint /api/v1/tte/* menerapkan tata kelola keamanan ketat berbasis 3 Pilar Proteksi agar seluruh pemanggil API terdata, tertib, dan terlindungi dari penyalahgunaan.

1. Wajib Akun User Terdaftar
Setiap mitra / pengembang wajib memiliki akun terdaftar di sistem sebagai penanggung jawab integrasi (Person In Charge) untuk audit trail.
2. API Key Unik (Bearer Token)
Kredensial dengan prefix tte_... dan pembagian hak akses granular (sign, verify, download) serta rate limit dinamis.
3. IP & Domain Whitelist
Gateway akan memverifikasi alamat IP server asal pemanggil atau domain web client. Request dari IP/Domain tidak terdaftar akan otomatis ditolak (HTTP 403).
HTTP Request Header Tipe Data Status Keterangan
Authorization string Wajib Format: Bearer tte_xxxxxxxxxxxxxxxxxxxx. Kredensial rahasia yang diterbitkan administrator melalui menu Admin → TTE Admin → Pengaturan Driver → API Clients.
Accept string Wajib Format: application/json. Memastikan respon gateway selalu dikembalikan dalam format JSON terstruktur.
Origin / Referer string Opsional (Browser) Header otomatis browser untuk validasi Domain/Origin Whitelist jika pemanggilan API dilakukan dari front-end aplikasi web.
Contoh Respon Kesalahan Keamanan & Whitelisting
HTTP 403 IP Tidak Terdaftar di Whitelist
{
  "success": false,
  "error": "IP_NOT_WHITELISTED",
  "message": "Alamat IP server pemanggil (103.28.12.99) tidak terdaftar dalam whitelist API client ini. Hubungi administrator untuk mendaftarkan IP Anda.",
  "client_ip": "103.28.12.99"
}
HTTP 403 Domain Tidak Terdaftar di Whitelist
{
  "success": false,
  "error": "DOMAIN_NOT_WHITELISTED",
  "message": "Origin atau domain (https://unauthorized-app.com) tidak diizinkan mengakses API client ini.",
  "origin": "https://unauthorized-app.com"
}
HTTP 401 Token Tidak Valid / User Nonaktif
{
  "success": false,
  "error": "INVALID_API_KEY",
  "message": "API Key tidak valid, sudah kadaluarsa, atau telah dinonaktifkan oleh administrator."
}
HTTP 429 Rate Limit Terlampaui
{
  "success": false,
  "error": "RATE_LIMIT_EXCEEDED",
  "message": "Batas kuota request API per menit (60 req/min) terlampaui. Silakan coba beberapa saat lagi."
}
POST /api/v1/tte/sign
Tanda Tangan Dokumen PDF (TTE Sign)
multipart/form-data

Membubuhkan tanda tangan digital PAdES dan stempel visual QR Code ke dalam dokumen PDF menggunakan sertifikat X.509 pengguna secara instan.

Parameter (Form-Data) Tipe Data Status Keterangan & Contoh Nilai
file file (binary) Wajib File PDF asli yang akan ditandatangani (MIME: application/pdf, maksimal 25 MB).
signer_identity string Wajib Identitas unik pemilik sertifikat (NIK / NIP / Email / ID Karyawan). Contoh: "1234567890" atau "admin@sihubung.id"
passphrase string Wajib Passphrase rahasia pelindung private key sertifikat milik penandatangan.
reason string Opsional Alasan penandatanganan dokumen. Default: "Ditandatangani via API". Contoh: "Persetujuan Invoice Pembayaran"
location string Opsional Lokasi penandatanganan. Default: Kota organisasi server (Contoh: "Jakarta, Indonesia").
visual_page string Opsional Halaman peletakan stempel visual QR: "first", "last", atau nomor halaman spesifik (Contoh: "1"). Default: "last".
coord_x, coord_y numeric Opsional Koordinat X dan Y (dalam satuan pt) untuk posisi stempel visual QR pada halaman PDF.
width, height numeric Opsional Dimensi lebar dan tinggi kotak stempel visual QR (dalam pt). Default: 150x65 pt.
curl -X POST "https://sihubung.id/api/v1/tte/sign" \
  -H "Authorization: Bearer YOUR_TTE_API_KEY" \
  -F "file=@/path/to/Surat_Perjanjian.pdf" \
  -F "signer_identity=1234567890" \
  -F "passphrase=RahasiaPassphrase123" \
  -F "reason=Persetujuan Kontrak Kerjasama Bisnis" \
  -F "location=Jakarta" \
  -F "visual_page=last"
Contoh Respon Sukses Server (HTTP 200 OK): 200 OK • JSON
{
  "status": "success",
  "message": "Dokumen berhasil ditandatangani.",
  "data": {
    "document_id": "9d82e14a-7b3c-4e89-a1b2-3c4d5e6f7a8b",
    "filename": "signed_Surat_Perjanjian_1788590000.pdf",
    "download_url": "https://sihubung.id/tte/documents/9d82e14a-7b3c-4e89-a1b2-3c4d5e6f7a8b/download",
    "verify_url": "https://sihubung.id/tte/verify/9d82e14a-7b3c-4e89-a1b2-3c4d5e6f7a8b",
    "signing_time": "2026-09-19T10:30:00+07:00",
    "signer": {
      "name": "Benny Putra",
      "identifier": "1234567890",
      "issuer": "SiHubung Intermediate CA"
    },
    "integrity_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
  }
}
POST /api/v1/tte/verify
Verifikasi Keaslian & Integritas PDF (TTE Verify)
multipart/form-data

Memeriksa apakah file PDF memiliki tanda tangan digital yang valid, mendeteksi jika terjadi manipulasi/perubahan isi dokumen setelah ditandatangani, dan mengekstrak rantai sertifikat X.509.

Parameter (Form-Data) Tipe Data Status Keterangan & Contoh Nilai
file file (binary) Wajib File PDF bertanda tangan yang ingin diaudit/diverifikasi keabsahannya.
curl -X POST "https://sihubung.id/api/v1/tte/verify" \
  -H "Authorization: Bearer YOUR_TTE_API_KEY" \
  -F "file=@/path/to/signed_Surat_Perjanjian.pdf"
Contoh Respon Server Valid (HTTP 200 OK): 200 OK • JSON
{
  "status": "success",
  "is_valid": true,
  "tampered": false,
  "signatures": [
    {
      "signer_name": "Benny Putra",
      "signer_identifier": "1234567890",
      "organization": "PT SiHubung Solusi Indonesia",
      "issuer": "SiHubung Intermediate CA",
      "signing_time": "2026-09-19T10:30:00+07:00",
      "reason": "Persetujuan Kontrak Kerjasama Bisnis",
      "location": "Jakarta",
      "is_valid": true,
      "cert_valid_until": "2028-09-19T10:30:00+07:00"
    }
  ],
  "message": "Dokumen valid dan tidak mengalami perubahan."
}
GET /api/v1/tte/documents/{uuid}
Detail Dokumen & Jejak Audit (Document Details)
REST Query

Mengambil metadata lengkap, identitas penandatangan, jejak audit, dan URL unduhan file PDF bertanda tangan berdasarkan UUID dokumen.

Path Parameter Tipe Data Status Keterangan
uuid string (UUIDv4) Wajib UUID unik dokumen yang diperoleh saat penandatanganan. Contoh: "9d82e14a-7b3c-4e89-a1b2-3c4d5e6f7a8b"
curl -X GET "https://sihubung.id/api/v1/tte/documents/9d82e14a-7b3c-4e89-a1b2-3c4d5e6f7a8b" \
  -H "Authorization: Bearer YOUR_TTE_API_KEY"
Contoh Respon Server (HTTP 200 OK): 200 OK • JSON
{
  "status": "success",
  "data": {
    "document_id": "9d82e14a-7b3c-4e89-a1b2-3c4d5e6f7a8b",
    "original_filename": "Surat_Perjanjian.pdf",
    "signed_filename": "signed_Surat_Perjanjian_1788590000.pdf",
    "file_size": "2.4 MB",
    "signing_time": "2026-09-19T10:30:00+07:00",
    "driver_used": "self_hosted",
    "reason": "Persetujuan Kontrak Kerjasama Bisnis",
    "location": "Jakarta",
    "integrity_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
    "verify_url": "https://sihubung.id/tte/verify/9d82e14a-7b3c-4e89-a1b2-3c4d5e6f7a8b",
    "signer": {
      "name": "Benny Putra",
      "identifier": "1234567890",
      "organization": "PT SiHubung Solusi Indonesia",
      "issuer": "SiHubung Intermediate CA"
    }
  }
}
GET /tte/crl • /tte/ocsp • /tte/ca/download-root
Root CA, CRL (RFC 5280) & OCSP (RFC 6960) Endpoints
PKI Trust Standard

Endpoint publik PKI untuk mengunduh sertifikat Root CA, mengecek Certificate Revocation List (CRL), dan verifikasi status pencabutan sertifikat secara online (OCSP).

Endpoint URL Method Format Respon Deskripsi Kegunaan
https://sihubung.id/tte/ca/download-root GET application/x-x509-ca-cert (.crt) Unduh Sertifikat Publik Root CA server untuk diinstal ke Trust Store sistem operasi / Adobe Acrobat Reader mitra.
https://sihubung.id/tte/crl GET application/pkix-crl (.crl) Daftar sertifikat yang dicabut (Certificate Revocation List) berstandar RFC 5280 untuk validasi status offline.
https://sihubung.id/tte/ocsp POST / GET application/ocsp-response Protokol validasi status keaktifan sertifikat secara real-time (Online Certificate Status Protocol) berstandar RFC 6960.
# Download Sertifikat Root CA
curl -O "https://sihubung.id/tte/ca/download-root"

# Ambil Certificate Revocation List (CRL)
curl -O "https://sihubung.id/tte/crl"
EVENT CALLBACK Webhook: tte.document.signed • tte.document.verified
Webhook & Real-time Event Callback untuk Mitra
HTTP POST Webhook

Sistem kami dapat mengirimkan callback notifikasi secara otomatis ke server mitra Anda ketika dokumen PDF selesai diproses atau diverifikasi.

Keamanan & Verifikasi Signature Webhook
Setiap request webhook memuat header X-TTE-Signature: sha256=<hash> yang ditandatangani menggunakan HMAC-SHA256 dari API Secret mitra Anda untuk menjamin integritas dan mencegah spoofing.
Contoh Payload Webhook Event (tte.document.signed): HTTP POST • JSON
{
  "event": "tte.document.signed",
  "event_id": "evt_9d82e14a7b3c4e89",
  "timestamp": "2026-09-19T10:30:05+07:00",
  "data": {
    "document_id": "9d82e14a-7b3c-4e89-a1b2-3c4d5e6f7a8b",
    "filename": "signed_Surat_Perjanjian_1788590000.pdf",
    "download_url": "https://sihubung.id/tte/documents/9d82e14a-7b3c-4e89-a1b2-3c4d5e6f7a8b/download",
    "verify_url": "https://sihubung.id/tte/verify/9d82e14a-7b3c-4e89-a1b2-3c4d5e6f7a8b",
    "signer_name": "Benny Putra",
    "signer_identifier": "1234567890",
    "sha256_hash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
  }
}
PANDUAN TRUST Adobe Acrobat Reader • Trusted Certificates
Panduan Menampilkan Centang Hijau (Valid) di Adobe Acrobat Reader
Acrobat Setup

Untuk dokumen bertanda tangan Self-Hosted Internal CA, Anda atau klien mitra dapat mengimpor sertifikat Root CA server agar muncul badge "Signature is VALID, signed by..." berwarna hijau di Adobe Acrobat Reader.

  1. Unduh berkas Root CA melalui tautan: https://sihubung.id/tte/ca/download-root.
  2. Buka aplikasi Adobe Acrobat Reader di komputer Anda.
  3. Pilih menu Edit → Preferences (atau Ctrl+K / Cmd+,) → Signatures.
  4. Pada bagian Identities & Trusted Certificates, klik tombol More....
  5. Pilih menu Trusted Certificates di sebelah kiri, lalu klik tombol Import di bagian atas.
  6. Pilih berkas root_ca.crt yang telah diunduh, klik Trust..., lalu centang opsi "Use this certificate as a trusted root" dan "Certified documents".
  7. Klik OK. Kini seluruh dokumen PDF hasil tanda tangan dari server ini akan otomatis berstatus VALID & Bercentang Hijau saat dibuka di komputer tersebut.