RTKK API v1

Realtime Menu API

API realtime menu, harga, stok, dan detail produk per outlet — langsung dari sumber live. Pasang di website atau aplikasimu dengan sekali panggil. Data selalu terkini (cache pendek + fallback), tanpa kamu perlu ngurus backend scraping sendiri.

Autentikasi

Tiap request wajib bawa API key di header. Minta key ke admin (per-customer, dibatasi per-IP atau per-domain).

X-API-Key: kkapi_xxxxxxxxxxxxxxxxxxxx

Alternatif: Authorization: Bearer kkapi_xxx. Dua mode key:

ModeDipakai dariPembatasan
serverBackend kamu (server-to-server)Wajib daftar IP server kamu. Rate longgar.
browserFrontend web (JavaScript)Wajib daftar domain (Origin) kamu. Rate lebih ketat. CORS otomatis.

Base URL

https://api.pricelo.store/rtkk/v1

Semua endpoint di bawah relatif ke base URL ini. Metode: GET.

Endpoint

GET/kk/stores

Daftar outlet (buat dropdown pilih outlet). Tiap outlet punya outlet id yang kamu pakai di endpoint lain.

Query

ParamWajibKeterangan
qtidakFilter cari nama/kota outlet (min 2 huruf).

Contoh

curl -H "X-API-Key: kkapi_xxx" \
  "https://api.pricelo.store/rtkk/v1/kk/stores?q=bandung"
{
  "count": 12,
  "stores": [
    { "outlet": "otl_e08b142e69", "name": "Ruko Riau Bandung" }
  ]
}
GET/kk/menu

Menu + harga + stok 1 outlet, dikelompokkan per kategori.

Query

ParamWajibKeterangan
outletyaOutlet id dari /kk/stores.

Contoh

curl -H "X-API-Key: kkapi_xxx" \
  "https://api.pricelo.store/rtkk/v1/kk/menu?outlet=otl_e08b142e69"
{
  "outlet": "otl_e08b142e69",
  "stale": false,
  "categories": [
    { "category": "Coffee", "items": [
      { "sku": "7833007000", "name": "Kopi Kenangan Mantan", "price": 19000,
        "list_price": null, "available": true, "customizable": false,
        "on_promo": false, "image": "https://...", "description": "" }
    ] }
  ]
}

available=stok ada · customizable=punya opsi (pakai /kk/options) · list_price=harga coret (null kalau nggak promo) · stale=true kalau dari cache terakhir.

GET/kk/options

Detail 1 produk: dimensi (ukuran/suhu/susu/dll), harga tiap varian, dan add-on (topping/syrup). Cuma perlu kalau produk customizable:true.

Query

ParamWajibKeterangan
outletyaOutlet id.
skuyaSKU produk dari /kk/menu.

Contoh

curl -H "X-API-Key: kkapi_xxx" \
  "https://api.pricelo.store/rtkk/v1/kk/options?outlet=otl_e08b142e69&sku=3806931000"
{
  "outlet": "otl_e08b142e69",
  "product": {
    "name": "Oreo Shake", "base_price": 26000, "available": true,
    "dimensions": [ { "group": "Ukuran", "choices": [ {"id":11,"name":"Large"} ] } ],
    "variants": [ { "combo": "...", "sku": "...", "price": 31000 } ],
    "addons": [ { "group":"Topping","required":false,"single":false,
      "choices":[ {"id":5,"name":"Boba","sku":"...","price":6000} ] } ]
  }
}

Pakai dari browser (JavaScript)

Dengan key mode browser (domain kamu terdaftar), panggil langsung dari web:

const API = "https://api.pricelo.store/rtkk/v1";
const KEY = "kkapi_xxx";
async function getMenu(outlet) {
  const r = await fetch(`${API}/kk/menu?outlet=${outlet}`, {
    headers: { "X-API-Key": KEY }
  });
  if (!r.ok) throw new Error((await r.json()).message);
  return r.json();
}
getMenu("otl_e08b142e69").then(d => console.log(d.categories));

Kode error

HTTPerrorArti
401unauthorizedKey salah / dinonaktifkan / tidak dikirim.
403forbidden_ip / forbidden_originIP atau domain tidak terdaftar di key ini.
403forbidden_scopeKey tidak punya akses endpoint ini.
404outlet_not_found / product_not_foundOutlet/produk tidak ada.
429rate_limitedLewat batas per-menit / per-hari.
502upstreamSumber data sibuk — coba lagi beberapa detik.

Catatan

RTKK API · pricelo.store