Overview & quickstart
Vardvik Bookings is an API-first booking platform. Your integration talks to a small REST API; the platform runs availability, table assignment, the operations console, guest emails, and webhooks behind it.
Base URL and versioning
All endpoints live under /api/v1. The version is part of the path; breaking changes ship as a new version, never silently.
https://your-deployment.example/api/v1Five-minute quickstart
You need a restaurant id, a location id, and an API key with the right scopes. In the demo deployment these are seeded; in production you create keys in the console under API & webhooks.
1. Check availability
curl "$BASE/restaurants/$RESTAURANT_ID/availability?locationId=$LOCATION_ID&date=2026-06-12&partySize=4" \
-H "Authorization: Bearer $API_KEY"{
"slots": [
{
"start": "2026-06-12T17:00:00.000Z",
"end": "2026-06-12T19:00:00.000Z",
"available": true,
"capacity": 4,
"tableIds": ["t-03"],
"serviceName": "Dinner"
}
]
}2. Create the reservation
Send an Idempotency-Key so a retried request can never double-book. Tables are assigned automatically from capacity, combinations, and buffers.
curl -X POST "$BASE/restaurants/$RESTAURANT_ID/reservations" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: order-84421" \
-d '{
"locationId": "'$LOCATION_ID'",
"startTime": "2026-06-12T17:00:00.000Z",
"partySize": 4,
"guest": {
"firstName": "Mara",
"lastName": "Schneider",
"email": "mara@example.com"
},
"specialRequests": "Window table if possible"
}'{
"reservation": {
"id": "res_9f31",
"publicReference": "rr_7f3a91",
"status": "confirmed",
"startTime": "2026-06-12T17:00:00.000Z",
"endTime": "2026-06-12T19:00:00.000Z",
"partySize": 4,
"tableIds": ["t-03"]
}
}3. Manage it later
The publicReference is safe to show guests and works in every reservation endpoint in place of the internal id.
curl -X DELETE "$BASE/reservations/rr_7f3a91?reason=Guest+called" \
-H "Authorization: Bearer $API_KEY"What happens behind the call
- The availability engine validates opening hours, special days, lead time, advance window, slot limits, buffers, and table capacity.
- Creation runs inside a database transaction with an advisory lock, so two parallel requests can never seat the same table twice.
- A confirmation email is queued for the guest, a signed webhook notifies your systems, and the audit log records the change.
Next steps
- Authentication & limits: keys, scopes, origins, rate limits, errors, idempotency.
- REST API v1: the full endpoint reference.
- Website widget: the proxy pattern that keeps keys off the browser.