Developers

API reference

KashikeyoPOS is API-first. Everything the till and guest pages do runs over this HTTP API, so you can build on top of it too.

Basics

Base URL: https://kashikeyopos.com

Format: All request and response bodies are JSON (Content-Type: application/json).

Authentication: Store endpoints require a bearer token obtained from /api/register or /api/login. Send it as a header:

Authorization: Bearer <token>

Each store's data is isolated at the database level, so a token only ever sees its own workspace.

The sync model

KashikeyoPOS is offline-first. Instead of editing rows directly, clients send an idempotent op-log to /api/ops and read changes back with a rowversion cursor from /api/pull. Each op carries a client-generated opId so it's applied at most once, even if retried after a dropped connection.

Authentication

POST/api/register

Create a new store workspace and its admin account. Returns a session token.

FieldNotes
email, passwordRequired. Admin credentials.
storeName, ownerName, phoneStore & owner details.
pin4-digit till PIN for the owner.

POST/api/login

Sign in with email and password. Returns a session token and sets a session cookie.

POST/api/logout

Clear the current session cookie.

POST/api/auth/google

Sign in / sign up with a Google ID token. Apple sign-in uses /auth/apple/callback. Availability is reported by GET /api/auth/config.

Store data (bearer token required)

POST/api/ops

Apply a batch of idempotent operations (menu, orders, stock, customers…). The heart of the sync model.

GET/api/pull?since=<rowver>

Fetch every change since a rowversion cursor. Returns the new cursor to pass next time.

GET/api/stores   POST/api/stores   POST/api/select-store

List, create and switch between the branches in your workspace.

GET/api/events

Server-sent events stream — pushes a signal whenever your workspace's data changes, so clients update in realtime instead of polling.

Guest ordering (public, per store)

GET/p/:slug/boot

Public menu, store info and (optionally) a guest's profile for the storefront. :slug is your store's public handle.

POST/p/:slug/order   POST/p/:slug/call   GET/p/:slug/orders

Place a guest order, call a waiter, and read back a guest's own orders and their live status.

Service

GET/api/health

Liveness and database connectivity. Powers the status page. No auth required.

This reference covers the main endpoints and is expanding. Exact request/response schemas and rate limits will be documented in full — if you're building an integration and need specifics now, contact us.