se-hari.com se-hari.com

GET /me

Info akun dan saldo kredit. GET /me — tanpa scope khusus.

2 menit baca Diperbarui 15 Agustus 2026 Lihat sebagai Markdown

Mengembalikan identitas pemilik API key beserta saldo kredit dan ringkasan izin key yang dipakai. Endpoint paling murah di seluruh API dan tidak memerlukan scope apa pun, jadi ini yang dipakai untuk memverifikasi bahwa sebuah key masih hidup — termasuk oleh tombol "Test" pada kredensial n8n. Kalau endpoint ini menjawab 200, key-nya valid, belum dicabut, dan belum kedaluwarsa.

#Endpoint

bash
GET https://se-hari.com/api/v1/me

Endpoint ini tidak menuntut scope apa pun. API key yang paling sempit sekalipun bisa memanggilnya, jadi ia adalah tempat pertama yang harus dicoba ketika Anda ragu apakah masalahnya ada pada kredensial atau pada izin. Kalau endpoint ini menjawab 200 sementara endpoint lain menjawab 403, kredensial Anda baik-baik saja dan yang kurang adalah scope-nya.

#Contoh

bash
curl -X GET "https://se-hari.com/api/v1/me" \
  -H "Authorization: Bearer $SEHARI_API_KEY"
javascript
const res = await fetch('https://se-hari.com/api/v1/me', {
	method: 'GET',
	headers: {
			'Authorization': `Bearer ${process.env.SEHARI_API_KEY}`,
		}
});

if (!res.ok) {
	const { error } = await res.json();
	// error.code stabil dan bisa dicabang; error.message untuk manusia.
	throw new Error(`${error.code}: ${error.message}`);
}

const data = await res.json();
python
import os, requests

res = requests.get(
    "https://se-hari.com/api/v1/me",
    headers={"Authorization": f"Bearer {os.environ['SEHARI_API_KEY']}"},
    timeout=30,
)

if not res.ok:
    err = res.json()["error"]
    raise RuntimeError(f"{err['code']}: {err['message']}")

data = res.json()

#Respons 200

json
{
  "user": {
    "id": "377f9f6d-5e41-4a2f-9b3b-212c667b8197",
    "email": "dewi@example.com",
    "full_name": "Dewi"
  },
  "credits": {
    "balance": 47
  },
  "api_key": {
    "id": "a1b2…",
    "scopes": [
      "notulen:read",
      "notulen:write"
    ],
    "daily_credit_cap": 50
  }
}

#Field respons

FieldTipeKeterangan
userobject
creditsobject
api_keyobject | null

#Kalau gagal

Setiap kegagalan memakai amplop yang sama, dan code di dalamnya stabil — cabangkan logika Anda ke sana, jangan ke message yang teksnya bisa diperbaiki sewaktu-waktu.

json
{
  "error": {
    "code": "invalid_api_key",
    "message": "Penjelasan untuk manusia.",
    "docs_url": "https://se-hari.com/docs/error/invalid-api-key",
    "request_id": "req_a1b2c3d4e5f6",
    "details": {}
  }
}
StatusKodeArtinya di endpoint ini
401invalid_api_keyKey salah, sudah dicabut, atau kedaluwarsa.
429rate_limitedTerlalu banyak request. Hormati header Retry-After.
500internal_errorKesalahan di sisi kami. Sertakan request_id saat melapor.
Simpan request_id dari setiap respons gagal. Itu satu-satunya cara kami menemukan kembali request Anda di log ketika Anda melapor, dan ia juga ada di header X-Request-Id pada respons yang berhasil.

#Seberapa sering boleh dipanggil

Isi respons ini nyaris tidak pernah berubah selama key-nya sama: email, nama, dan scope ditetapkan saat key dibuat. Panggil sekali saat integrasi Anda mulai berjalan, simpan hasilnya di memori, dan jangan pernah memanggilnya di dalam perulangan. Satu-satunya field yang bergerak adalah saldo kredit — dan untuk itu GET /credits memberi rincian yang jauh lebih berguna.

Kalau Anda memakainya sebagai pemeriksaan kesehatan berkala, satu kali per jam sudah lebih dari cukup. Memanggilnya tiap menit hanya akan membuat Anda menyentuh batas 429 pada saat trafik sedang tinggi, yaitu saat pemeriksaan itu justru paling tidak boleh gagal.

#Alur khas

Endpoint akun menjawab pertanyaan paling dasar: siapa pemilik key ini, izin apa yang dimilikinya, dan berapa sisa kreditnya. Karena tidak menuntut scope apa pun, ia berguna sebagai pemeriksaan kesehatan.

  1. Simpan API key di variabel lingkungan, jangan di dalam kode
  2. GET /me — pastikan key dikenali dan lihat scope yang melekat padanya
  3. Cocokkan scope yang tampil dengan yang dibutuhkan integrasi Anda

Kalau endpoint ini berhasil tapi endpoint lain menjawab 403, masalahnya bukan pada kredensial melainkan pada scope. Buat key baru dengan scope yang sesuai — scope tidak bisa ditambahkan ke key yang sudah ada.

#Yang sering keliru

  • Key disalin sebagian. API key Se-Hari panjangnya tetap: sh_live_ diikuti 43 karakter. Kalau panjangnya berbeda, yang salah adalah proses penyalinannya, bukan key-nya — dan pesan 401 tidak akan mengatakan itu.
  • Hormati Retry-After. Mencoba lagi lebih cepat dari yang disebutkan hanya memperpanjang masa tunggu. Kalau Anda sering menyentuhnya, kemungkinan besar Anda sedang polling sesuatu yang seharusnya ditangani webhook.

#Selanjutnya

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