Docs
Sansflow API documentation
Everything you need to connect a shop, café or salon running Sansflow POS to your own software: a REST API, webhooks and an MCP server for AI assistants.
Start here
Create a test key, make your first call, then go live.
AuthenticationBearer keys, test and live, and pinning a key to one outlet.
WebhooksSigned events for orders, bookings and reservations.
MCP serverConnect Claude or ChatGPT to a Sansflow business.
Concepts
How every endpoint behaves. Read these once and the reference reads quickly.
- PaginationKeyset cursors, newest first.
- IdempotencyRetry a POST safely.
- ErrorsEvery error code and what to do.
- Rate limits60 or 300 requests a minute.
- WebhooksSigned events, retries and de-duplication.
API reference
All endpoints live under one base URL and answer JSON:
https://ewpuclvmnygoddunkyrb.supabase.co/functions/v1
- OverviewReference
- WebhooksReference
- GET List transactionsReference
- GET Retrieve a transactionReference
- GET List customersReference
- GET Retrieve a customerReference
- GET List reservationsReference
- GET List bookingsReference
- GET Retrieve a bookingReference
- GET Retrieve availabilityReference
- POST Confirm a bookingReference
- POST Reject a bookingReference
- GET Retrieve the daily reportReference
- GET List locationsReference
- GET Retrieve the menuReference
- POST Create an orderReference
- GET Retrieve an orderReference
At a glance
| Auth | Authorization: Bearer sf_live_… or sf_test_… |
| Format | JSON. Money in whole rupiah (integers). Times in ISO 8601 with offset. |
| Methods | Reads are GET. Writes are POST and need an Idempotency-Key. |
| Paging | Keyset cursors, newest first, limit 1 to 100 (default 50). |
| Limits | 60 requests a minute on a test key, 300 on a live key. |
| Errors | { "error": { "code", "message", "request_id" } }. Code against error.code. |
Stuck? Quote the request_id from the response and write toSansflow support.