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.
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...
// Memuat kode snippet...
Kirimkan 6 digit kode OTP verifikasi pendaftaran akun atau transaksi 2FA secara instan dalam hitungan detik.
Kirim link rahasia token reset password yang aman langsung ke nomor WhatsApp pemilik akun.
Kirim peringatan otomatis H-7, H-3, dan H-1 sebelum masa aktif domain, hosting, cicilan, atau invoice berakhir.
Notifikasi nomor resi pengiriman kurir, konfirmasi pesanan baru, dan pengiriman invoice PDF otomatis.
Mencegah proses duplikat Node.js berjalan bersamaan untuk menghindari perebutan port socket.
Menutup socket Baileys secara rapi saat SIGTERM/SIGINT tanpa meninggalkan koneksi zombie di server WA.
Menerapkan jeda bertahap otomatis saat mendeteksi error stream conflict (440) untuk mencegah banned nomor.
Background health-check yang mendeteksi jaringan terputus dan otomatis menyambung kembali seketika internet pulih.
Memproses event secara batched via sock.ev.process() untuk mencegah race-condition dan memory leak.
Resolusi otomatis format nomor Phone Number JID (@s.whatsapp.net) ke LID (@lid).
/sessions
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"
{
"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
}
]
}
/sessions/:sessionId/status
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"
/sessions/:sessionId/qr
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"
/sessions/:sessionId/pairing-code
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"
}'
/sessions/reconnect-all
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"
/send-message
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."
}'
/sessions/:sessionId/send-media
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"
}'
/sessions/:sessionId/send-bulk
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
}'
/groups
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"
/groups/create
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"]
}'
/groups/:jid/participants
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"]
}'
/groups/:jid/settings
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"
}'
/groups/:jid/invite-code
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"
/privacy/update
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"
}'
/blocklist/update
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"
}'
/presence/send
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"
}'
/stories/send
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
}'
/broadcast-lists/send
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."
}'
/calls/config
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."
}'
/usync/query
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"]
}'
/fetch-history
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
}'
/sessions/:sessionId/raw-frames
Membaca log 50 raw frame binary node (paket biner) terbaru yang dikirimkan server WhatsApp langsung dari layer WebSocket tanpa manipulasi level tinggi.
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"
/sessions/:sessionId/raw-callback
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"
}'
/sessions/:sessionId/send-node
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
}'
/config/debug-log
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"
}'
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
}
}
.p12) dan hashing SHA-256. Setiap perubahan sekecil apa pun pada isi PDF setelah ditandatangani akan langsung terdeteksi seketika.
- 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.
Header: Authorization: Bearer <tte_key_...>
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.
tte_... dan pembagian hak akses granular (sign, verify, download) serta rate limit dinamis.
| 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. |
{
"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"
}
{
"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"
}
{
"success": false,
"error": "INVALID_API_KEY",
"message": "API Key tidak valid, sudah kadaluarsa, atau telah dinonaktifkan oleh administrator."
}
{
"success": false,
"error": "RATE_LIMIT_EXCEEDED",
"message": "Batas kuota request API per menit (60 req/min) terlampaui. Silakan coba beberapa saat lagi."
}
/api/v1/tte/sign
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"
{
"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"
}
}
/api/v1/tte/verify
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"
{
"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."
}
/api/v1/tte/documents/{uuid}
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"
{
"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"
}
}
}
/tte/crl • /tte/ocsp • /tte/ca/download-root
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"
Webhook: tte.document.signed • tte.document.verified
Sistem kami dapat mengirimkan callback notifikasi secara otomatis ke server mitra Anda ketika dokumen PDF selesai diproses atau diverifikasi.
X-TTE-Signature: sha256=<hash> yang ditandatangani menggunakan HMAC-SHA256 dari API Secret mitra Anda untuk menjamin integritas dan mencegah spoofing.
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"
}
}
Adobe Acrobat Reader • Trusted Certificates
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.
- Unduh berkas Root CA melalui tautan: https://sihubung.id/tte/ca/download-root.
- Buka aplikasi Adobe Acrobat Reader di komputer Anda.
- Pilih menu Edit → Preferences (atau Ctrl+K / Cmd+,) → Signatures.
- Pada bagian Identities & Trusted Certificates, klik tombol More....
- Pilih menu Trusted Certificates di sebelah kiri, lalu klik tombol Import di bagian atas.
- Pilih berkas
root_ca.crtyang telah diunduh, klik Trust..., lalu centang opsi "Use this certificate as a trusted root" dan "Certified documents". - Klik OK. Kini seluruh dokumen PDF hasil tanda tangan dari server ini akan otomatis berstatus VALID & Bercentang Hijau saat dibuka di komputer tersebut.