se-hari.com se-hari.com

Mulai cepat

Dari nol sampai request pertama yang berhasil dalam kurang dari lima menit, memakai satu perintah curl.

3 menit baca Diperbarui 16 Agustus 2026 Lihat sebagai Markdown

Se-Hari API memberi Anda dua hal yang selama ini hanya bisa dilakukan lewat dashboard: membuat notulensi AI dari rekaman rapat, dan menyewa meeting Zoom berlisensi. Panduan ini membawa Anda dari nol sampai request pertama yang berhasil — biasanya di bawah lima menit.

Yang Anda butuhkan hanyalah akun Se-Hari dan terminal. Tidak ada SDK yang perlu dipasang, tidak ada proses persetujuan, dan tidak ada biaya berlangganan terpisah: API memakai kredit yang sama dengan dashboard.

#Langkah 1 — Buat API key

Buka dashboard developer, klik Buat API Key, beri nama yang menjelaskan pemakaiannya (n8n produksi, skrip arsip), lalu pilih izin yang dibutuhkan.

Key ditampilkan satu kali saja. Kami menyimpannya dalam bentuk hash, jadi kalau hilang tidak ada cara memulihkannya — yang bisa dilakukan hanyalah mencabut yang lama dan membuat baru. Salin sekarang, simpan di pengelola rahasia atau variabel lingkungan.

bash
export SEHARI_API_KEY="sh_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Sekalian isi batas kredit harian saat membuat key. Angkanya tidak perlu presisi — beberapa kali lipat pemakaian normal sudah cukup. Kalau suatu hari key itu bocor atau sebuah loop salah tulis, kerugian Anda berhenti di angka tersebut alih-alih di saldo yang habis.

#Langkah 2 — Request pertama

bash
curl "https://se-hari.com/api/v1/me" \
  -H "Authorization: Bearer $SEHARI_API_KEY"

Kalau berhasil, Anda melihat email, nama, saldo kredit, dan daftar scope yang melekat pada key tersebut:

json
{
  "user": { "id": "…", "email": "anda@contoh.com", "full_name": "Nama Anda" },
  "credits": { "balance": 74 },
  "api_key": { "id": "…", "name": "n8n produksi", "scopes": ["notulen:read", "notulen:write"] }
}

GET /me sengaja tidak menuntut scope apa pun. Itu membuatnya berguna sebagai pemeriksaan kesehatan: kalau endpoint ini berhasil sementara endpoint lain menjawab 403, kredensial Anda baik-baik saja dan yang kurang adalah izinnya.

Kalau yang muncul justru 401, hitung panjang key Anda. Panjangnya selalu tetap — sh_live_ diikuti 43 karakter, total 51:

bash
echo -n "$SEHARI_API_KEY" | wc -c
# 51  ← benar

Angka lain berarti key tersalin sebagian, dan pesan 401 tidak akan pernah mengatakan itu.

#Langkah 3 — Buat notulen dari rekaman

Inilah verb paling bernilai di API ini. Kalau meeting Zoom Anda direkam lewat Se-Hari, rekamannya sudah tersimpan — endpoint ini mengubahnya jadi ringkasan tanpa perlu mengunggah apa pun.

Cari dulu rekaman yang belum punya notulen:

bash
curl "https://se-hari.com/api/v1/recordings?has_note=false&limit=5" \
  -H "Authorization: Bearer $SEHARI_API_KEY"

Lalu antrekan salah satunya:

bash
curl -X POST "https://se-hari.com/api/v1/notes" \
  -H "Authorization: Bearer $SEHARI_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"recording_id": "ID_DARI_LANGKAH_SEBELUMNYA"}'

Responsnya datang seketika dengan status 202, karena pemrosesan berjalan asinkron. Rekaman satu jam butuh beberapa menit.

#Langkah 4 — Ambil hasilnya

Jangan polling setiap detik. Rekaman panjang butuh waktu, dan menanyakan statusnya terus-menerus hanya menghabiskan kuota rate limit Anda sampai menyentuh 429. Ada dua cara yang lebih baik:

  1. Webhook — daftarkan endpoint untuk event note.completed, lalu berhenti bertanya. Ini cara yang benar untuk produksi.
  2. Polling dengan jeda — kalau Anda hanya mencoba-coba, periksa setiap 30 detik sudah lebih dari cukup.
bash
curl "https://se-hari.com/api/v1/notes/ID_NOTULEN?include=summary,action_items" \
  -H "Authorization: Bearer $SEHARI_API_KEY"

Perhatikan include. Transkrip tidak ikut secara bawaan, karena transkrip rapat satu jam bisa puluhan ribu kata dan hampir tidak pernah dibutuhkan bersamaan dengan ringkasannya. Ambil terpisah lewat GET /notes/{id}/transcript kalau memang perlu.

#Yang perlu diketahui sejak awal

Tidak ada mode sandbox. Setiap request berdampak nyata dan memotong kredit sungguhan. Kami sengaja tidak membuat sh_test_ yang tidak didukung environment terpisah — key semacam itu hanya akan menyesatkan.

Kredit ditagih berbeda untuk dua hal. Membuat meeting memotong kredit saat itu juga. Membuat notulen menagih setelah pemrosesan selesai, sesuai durasi asli rekaman — bukan durasi yang Anda perkirakan. Perbedaan ini penting saat membaca saldo di langkah berikutnya sebuah workflow.

Semua waktu memakai WIB (UTC+7). Meeting pukul 09:00 di dashboard adalah 02:00 UTC. Jangan mengonversi; kirim waktu WIB apa adanya.

Rekaman disimpan 30 hari lalu dihapus otomatis. Kalau Anda perlu menyimpannya lebih lama, jadwalkan arsip ke penyimpanan Anda sendiri. Notulennya sendiri tersimpan permanen, jadi membuat notulen lebih awal adalah cara termurah mengamankan isi rapat.

#Kalau request ditolak 403 tanpa amplop error

Ada satu penolakan yang bukan berasal dari kami: 403 dengan halaman HTML, bukan JSON. Itu datang dari CDN di depan Se-Hari, yang memblokir beberapa User-Agent bawaan sebelum request sampai ke aplikasi.

Yang paling sering terkena adalah urllib bawaan Python, yang mengirim Python-urllib/3.x. Pustaka requests — yang dipakai contoh di dokumentasi ini — tidak terkena, begitu juga curl, fetch, axios, Go, dan Postman.

Kalau Anda memang ingin memakai urllib, setel User-Agent sendiri:

python
import urllib.request

opener = urllib.request.build_opener()
opener.addheaders = [('User-Agent', 'integrasi-saya/1.0')]
urllib.request.install_opener(opener)

Cara membedakannya cepat: penolakan dari kami selalu berbentuk JSON dengan field error.code. Kalau yang kembali adalah HTML, masalahnya ada sebelum aplikasi kami.

#Selanjutnya

  • Autentikasi — memilih scope dan mengelola siklus hidup key
  • Kredit — cara penagihan bekerja, dan cara menghitungnya di depan
  • Webhook — berhenti polling
  • n8n — merangkai otomasi tanpa menulis kode
  • Referensi API — semua endpoint

Siap mencoba?

Buat API key gratis di dashboard — tidak ada biaya berlangganan, kredit terpakai hanya saat Anda benar-benar memproses rekaman atau membuat meeting.

Buat API Key