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.
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:
| Mode | Dipakai dari | Pembatasan |
|---|---|---|
| server | Backend kamu (server-to-server) | Wajib daftar IP server kamu. Rate longgar. |
| browser | Frontend web (JavaScript) | Wajib daftar domain (Origin) kamu. Rate lebih ketat. CORS otomatis. |
https://api.pricelo.store/rtkk/v1
Semua endpoint di bawah relatif ke base URL ini. Metode: GET.
Daftar outlet (buat dropdown pilih outlet). Tiap outlet punya outlet id yang
kamu pakai di endpoint lain.
| Param | Wajib | Keterangan |
|---|---|---|
q | tidak | Filter cari nama/kota outlet (min 2 huruf). |
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" }
]
}
Menu + harga + stok 1 outlet, dikelompokkan per kategori.
| Param | Wajib | Keterangan |
|---|---|---|
outlet | ya | Outlet id dari /kk/stores. |
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.
Detail 1 produk: dimensi (ukuran/suhu/susu/dll), harga tiap varian, dan add-on (topping/syrup).
Cuma perlu kalau produk customizable:true.
| Param | Wajib | Keterangan |
|---|---|---|
outlet | ya | Outlet id. |
sku | ya | SKU produk dari /kk/menu. |
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} ] } ]
}
}
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));
| HTTP | error | Arti |
|---|---|---|
| 401 | unauthorized | Key salah / dinonaktifkan / tidak dikirim. |
| 403 | forbidden_ip / forbidden_origin | IP atau domain tidak terdaftar di key ini. |
| 403 | forbidden_scope | Key tidak punya akses endpoint ini. |
| 404 | outlet_not_found / product_not_found | Outlet/produk tidak ada. |
| 429 | rate_limited | Lewat batas per-menit / per-hari. |
| 502 | upstream | Sumber data sibuk — coba lagi beberapa detik. |
RTKK API · pricelo.store