Table Buddy API
Server-to-server access to one restaurant: its menu, tables, orders, stock and reports. The API runs the same engines as the console, so an order made through it is priced, sent to the kitchen and takes stock exactly as one rung up at the POS, and it is refused in the POS’s own words.
https:/ / tablebuddy.radioworkflow.com/ api/ v11. Make a key
Keys are made under API Keys in the console, one restaurant each. Owners and admins make them, and so can anyone whose staff role has Create API keys (api.keys); someone who holds Change restaurant settings (settings.manage) sees and revokes every key. Pick only the scopes the job needs: a new key starts with the reads that carry no caution. The secret is shown once; Table Buddy keeps a SHA-256 hash of it and cannot show it again.
2. Authenticate
Send the key as a bearer token. Keep it in TABLEBUDDY_API_KEY on your server and this installation’s origin in TABLEBUDDY_URL: every sample in this reference reads both from the environment.
Authorization: Bearer $TABLEBUDDY_API_KEY
x-api-key works too, for clients that cannot send a bearer token; Authorization wins when both are sent. See Authentication and scopes.
3. Your first request
Get the restaurant answers any valid key, whatever its scopes: the restaurant’s name, currency, time zone, tax and business day.
curl -X GET "$TABLEBUDDY_URL/api/v1/restaurant" \ -H "Authorization: Bearer $TABLEBUDDY_API_KEY"
{
"currency": "USD",
"minor_digits": 2,
"restaurant": {
"id": "cmg5w7t3e0000tb2j1c9x4k2m",
"name": "The Barrel House",
"business_type": "RESTAURANT",
"timezone": "America/Chicago",
"vat_label": "Sales tax",
"tax_label": "Sales tax",
"vat_rate_bp": 700,
"vat_inclusive": false,
"service_charge_bp": 0,
"service_charge_dine_in_only": true,
"day_starts_at_minute": 240,
"today": "2026-09-30",
"tips_enabled": true
}
}What to expect
Money
Integer minor units of the restaurant’s currency (cents for USD); every answer carries currency and minor_digits. A check another system recorded can hold money that is not a sale (non_sale_amount and other_tendered). See Money and time.
Days
A day is a business day in the restaurant’s own time zone, cut where its business day starts, never the server’s midnight. Instants are ISO 8601 in UTC.
Rate limits
A key spends 60 units a minute, in one window every server shares. A request costs 1, and a heavy read 5: Run a report. See Rate limits.
Retries
Every POST carries an Idempotency-Key. If a request times out, send it again with the same key and body: the API acts once. See Idempotency.
On every response
request-idThis request's id. Quote it when asking for help.Cache-Control: no-storeAn answer is never cached.RateLimit-Limit, RateLimit-Remaining, RateLimit-ResetWhere the key stands in this minute's window, once the key is known. Never on a 401.x-error-codeOn an error: its code, the same as error.code in the body.Each endpoint page lists the rest: the replay headers on a write, Retry-After, WWW-Authenticate.
Machine-readable
The whole API as an OpenAPI 3.1 document, generated from the same catalog as these pages and the route’s own validation, so it cannot describe an endpoint differently from the endpoint itself. No key needed. Point a client generator, Postman, Bruno or a coding agent at it.
Questions
Something unclear, or an endpoint you need? Tell us, and quote a request-id if one went wrong.
Contact usReference
Every endpoint, by area. Your browser’s find works on this page; each endpoint’s own page has its parameters, answer, errors and samples.
Restaurant
The restaurant a key belongs to, and the key itself.
Menu
Menu categories and items with their add-ons, and taking an item off sale.
Tables
The floor plan's tables and their status.
Orders
Orders from the POS, this API and outside systems: reading them, opening them, adding rounds, sending them to the kitchen and cancelling.
- GETList orders
/orders:readorders - GETGet an order
/orders:readorders/ {order_id} - POSTCreate an order
/orders:writeWriteorders - POSTAdd a round to an order
/orders:writeWriteorders/ {order_id}/ items - POSTSend an order to the kitchen
/orders:writeWriteorders/ {order_id}/ send - POSTCancel an unpaid order
/orders:cancelCancels or voidsorders/ {order_id}/ cancel
Stock
Raw materials, their stock cards and stock adjustments.
Reports
The reports, raw or as the page prints them.