API Reference · v1

Dokumentasi API Sahkan

Integrasikan tanda tangan digital dan e-Meterai ke dalam aplikasi Anda dengan REST API yang sederhana dan prediktif.

Pendahuluan

API Sahkan diorganisir seputar REST. Ia menggunakan URL yang prediktif, menerima body ber-format JSON, mengembalikan respons ber-format JSON, dan memakai kode status HTTP standar.

BASE URLhttps://api.sahkan.co.id/v1

Autentikasi

Autentikasi menggunakan API key. Sertakan key Anda pada header Authorization di setiap permintaan. Jaga kerahasiaan key Anda—jangan pernah membagikannya di sisi klien.

Authorization header
Authorization: Bearer sk_live_xxxxxxxxxxxxxxxx
POST/documents/sign

Buat Permintaan Tanda Tangan

Kirim dokumen untuk ditandatangani oleh satu atau lebih penandatangan. Opsional membubuhkan e-Meterai secara otomatis.

Parameter

NamaTipeKeterangan
document_urlwajibstringURL dokumen PDF yang akan ditandatangani.
signer.emailwajibstringEmail penandatangan.
e_meteraibooleanBubuhkan e-Meterai resmi. Default: false.
webhookstringURL untuk menerima notifikasi peristiwa.
Permintaan
request.sh
1curl https://api.sahkan.co.id/v1/documents/sign \2  -H "Authorization: Bearer sk_live_..." \3  -H "Content-Type: application/json" \4  -d '{5    "document_url": "https://.../kontrak.pdf",6    "signer": { "email": "budi@company.id" },7    "e_meterai": true,8    "webhook": "https://app.company.id/hooks"9  }'
Respons
200 OK · application/json
1{2  "id": "doc_8a2f...",3  "status": "pending",4  "signing_url": "https://app.sahkan.co.id/s/8a2f",5  "e_meterai": true,6  "created_at": "2026-07-01T10:42:00Z"7}
GET/documents/{id}

Ambil Dokumen

Ambil status terkini sebuah dokumen beserta ringkasan audit trail.

Parameter

NamaTipeKeterangan
idwajibstringID dokumen yang dikembalikan saat pembuatan.
Permintaan
request.sh
1curl https://api.sahkan.co.id/v1/documents/doc_8a2f \2  -H "Authorization: Bearer sk_live_..."
Respons
200 OK · application/json
1{2  "id": "doc_8a2f...",3  "status": "signed",4  "signer": { "email": "budi@company.id" },5  "signed_at": "2026-07-01T10:51:00Z",6  "audit_trail_url": "https://.../audit/8a2f"7}
POST/e-meterai/purchase

Beli e-Meterai

Beli kuota e-Meterai resmi. Mendukung pembelian massal untuk kebutuhan volume tinggi.

Parameter

NamaTipeKeterangan
quantitywajibintegerJumlah e-Meterai yang dibeli.
Permintaan
request.sh
1curl https://api.sahkan.co.id/v1/e-meterai/purchase \2  -H "Authorization: Bearer sk_live_..." \3  -H "Content-Type: application/json" \4  -d '{ "quantity": 100 }'
Respons
200 OK · application/json
1{2  "order_id": "ord_2c91...",3  "quantity": 100,4  "balance": 100,5  "status": "completed"6}
GET/verify/{code}

Verifikasi Dokumen

Periksa keaslian dan integritas dokumen menggunakan kode verifikasi atau ID dari QR.

Parameter

NamaTipeKeterangan
codewajibstringKode verifikasi dokumen.
Permintaan
request.sh
1curl https://api.sahkan.co.id/v1/verify/IDM-2026-04431
Respons
200 OK · application/json
1{2  "valid": true,3  "document": "Perjanjian Kerja Sama",4  "signer": "Adnan Wijaya",5  "e_meterai": "IDM-2026-04431",6  "verified_at": "2026-07-01T11:00:00Z"7}

Webhook

Daftarkan URL webhook untuk menerima notifikasi real-time saat status dokumen berubah—misalnya saat dokumen dibuka, ditandatangani, atau selesai. Setiap event dikirim sebagai POST ber-format JSON.

webhook payload
1{2  "event": "document.signed",3  "document_id": "doc_8a2f...",4  "signed_at": "2026-07-01T10:51:00Z"5}

Kode Error

Sahkan menggunakan kode status HTTP konvensional. Kode 2xx menandakan sukses, 4xx menandakan kesalahan dari permintaan, dan 5xx menandakan kesalahan server.

400bad_requestParameter permintaan tidak valid atau kurang.
401unauthorizedAPI key tidak ada atau tidak valid.
402insufficient_meteraiSaldo e-Meterai tidak mencukupi.
404not_foundSumber daya yang diminta tidak ditemukan.
429rate_limitedTerlalu banyak permintaan. Coba lagi nanti.
500server_errorTerjadi kesalahan pada sisi server.

Butuh API key?

Daftar untuk mendapatkan kredensial, atau bicarakan kebutuhan integrasi Anda dengan tim kami.