---
title: Mulai cepat
source: https://se-hari.com/docs/mulai-cepat
updated: 2026-08-16T01:05:07.54533+00:00
---

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

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](/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](/docs/autentikasi) — memilih scope dan mengelola siklus hidup key
- [Kredit](/docs/kredit) — cara penagihan bekerja, dan cara menghitungnya di depan
- [Webhook](/docs/webhook) — berhenti polling
- [n8n](/docs/n8n) — merangkai otomasi tanpa menulis kode
- [Referensi API](/docs/api) — semua endpoint