Dokumentasi AksesSaham API

Proxy data pasar saham Indonesia · panel admin

Base URL: https://aksessaham.pages.dev/api/v1
Semua endpoint data memakai GET dan wajib menyertakan API key. Halaman ini bisa dibaca tanpa login.

Autentikasi

Kirim salah satu dari tiga cara berikut.

X-API-Key: ask_xxxxxxxxxxxxxxxxxxxxxxxxxxxx
Authorization: Bearer ask_xxxxxxxxxxxxxxxxxxxxxxxxxxxx
https://aksessaham.pages.dev/api/v1/ping?apikey=ask_xxx

API key dibuat di panel admin (perlu login). Kunci ditampilkan sekali saat dibuat.

Endpoint

EndpointQueryKeterangan
/api/v1/ping—Cek hidup & sisa kuota
/api/v1/sectors—Daftar sektor
/api/v1/info/{kode}—Profil & info emiten
/api/v1/orderbook/{kode}—Bid/offer + harga terakhir (near real-time)
/api/v1/historical/{kode}days,start,end,limit,page,periodOHLCV harian + foreign flow
/api/v1/keystats/{kode}year_limitPER/PBV/ROE, hingga 10 tahun
/api/v1/broker/{kode}days,investor_type,market_board,limitBandarmologi / broker summary
/api/v1/raw/{path}sesuai upstreamPassthrough mentah (butuh scope raw)

{kode} = kode saham IDX (BBCA, TLKM, GOTO…). Huruf besar-kecil tidak berpengaruh.

Batas parameter (penting)

limit maksimal 50. Stockbit menolak limit di atas 50 dengan HTTP 400 Invalid parameter. AksesSaham otomatis menurunkannya ke 50 supaya tidak error.
Rentang tanggal maksimal ~365 hari. start_date lebih lama dari itu juga ditolak upstream.
Mau 1 tahun penuh? Satu tahun bursa ≈ 239 baris, jadi butuh 5 permintaan:
for p in 1 2 3 4 5; do
  curl -H "X-API-Key: ask_xxx" \
    "https://aksessaham.pages.dev/api/v1/historical/BBCA?days=365&limit=50&page=$p"
done

Respons

Default: payload asli upstream, tidak dibungkus. Tambahkan ?envelope=1 untuk bentuk {ok, data, meta}.

{
  "ok": true,
  "data": { /* payload upstream */ },
  "meta": {
    "endpoint": "historical",
    "request_id": "...",
    "elapsed_ms": 412,
    "cached": false,
    "upstream_cache": "MISS",
    "rate_limit": { "limit": 60, "remaining": 59, "reset": 1791776340 }
  }
}
HeaderArti
X-RateLimit-LimitKuota per menit untuk key ini
X-RateLimit-RemainingSisa kuota di jendela berjalan
X-RateLimit-ResetEpoch detik saat jendela reset
X-Upstream-CacheHIT / MISS / STALE
X-Request-IdId permintaan untuk lacak log

Kode error

StatusKodeMakna
401missing_keyAPI key tidak dikirim
401invalid_keyKey tidak dikenal
403key_revoked / key_expiredKey dicabut / kedaluwarsa
403scope_deniedKey tidak punya scope yang diminta
403ip_deniedIP tidak masuk whitelist key
429rate_limitedKuota habis; lihat Retry-After
400invalid_parameterBiasanya limit > 50 atau rentang > 365 hari
503no_tokenKredensial upstream belum diset (urusan admin)

Contoh

curl -H "X-API-Key: ask_xxx" \
  "https://aksessaham.pages.dev/api/v1/orderbook/BBCA"
// Node.js
const r = await fetch(
  'https://aksessaham.pages.dev/api/v1/broker/BBCA?days=30',
  { headers: { 'X-API-Key': process.env.AKSESSAHAM_KEY } }
);
if (r.status === 429) console.log('tunggu', r.headers.get('Retry-After'), 'detik');
const data = await r.json();
# Python
import os, requests
r = requests.get(
    "https://aksessaham.pages.dev/api/v1/historical/BBCA",
    params={"days": 365, "limit": 50, "page": 1},
    headers={"X-API-Key": os.environ["AKSESSAHAM_KEY"]},
)
print(r.json()["data"]["result"][0])

Untuk AI / LLM

Beri tahu model cukup dua hal ini, lalu ia bisa memakai API-nya:

Gunakan AksesSaham API, base URL https://aksessaham.pages.dev/api/v1.
Kirim header X-API-Key: <key>. Dokumentasi mesin ada di
https://aksessaham.pages.dev/llms.txt dan OpenAPI di
https://aksessaham.pages.dev/openapi.json
BerkasUntuk
/llms.txtRingkasan siap tempel ke prompt LLM
/openapi.jsonOpenAPI 3.1 — bisa diimpor Postman / ChatGPT Actions
/api/v1Ringkasan JSON tanpa login

AksesSaham · data diteruskan dari Stockbit · panel admin