A REST API to plug bookings into a custom website.
Time slots, availability and booking creation over REST. The interface stays in your hands.When the booking widget is not enough, the Couverty public API exposes time slots, availability, the menu and booking creation. You design the interface you want, in the framework you want. Couverty handles the calendar, capacity rules, emails and no-show protection.
Why use it
Your interface, our engine
You build the form, the date picker and the mobile experience the project calls for. Behind the scenes, Couverty applies opening hours, closures, capacity per room and service rules: the business logic nobody wants to rewrite.
Only slots that are genuinely available
The availability and time slot endpoints return what can be booked at that moment, closures and capacity included. You never show a time the restaurant cannot honour.
Key-based authentication, per venue
Data endpoints authenticate with an X-API-Key header or a Bearer token, using a key specific to each venue. Booking creation stays public (it is what the booking widget uses) and is protected by rate limiting.
Not just bookings
The food menu, drinks, daily menu, rooms and restaurant settings are exposed by the same API. A custom website can show a menu that is always up to date, without anyone re-entering it.
How to integrate it
Generate an API key
Generate an API key in the settings of the restaurant's Couverty account. It is sent in an X-API-Key header, or as a Bearer token if your HTTP client prefers.
curl -H "X-API-Key: qr_your_api_key" \ https://api.couverty.ch/api/public/v1/restaurant
Read the time slots, then create the booking
Query the available time slots for the chosen date, display them however you like, then post the booking. The restaurant sees it arrive in its Couverty calendar, and the confirmation emails go out automatically.
// 1. The bookable time slots for a date
const creneaux = await fetch(
`https://api.couverty.ch/api/public/${slug}/creneaux?date=2026-09-12&service=soir`
).then((r) => r.json());
// 2. The booking
await fetch(`https://api.couverty.ch/api/public/${slug}/reservations`, {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
prenom: 'Jean',
nom: 'Dupont',
email: 'jean@example.com',
telephone: '+41 79 123 45 67',
dateReservation: '2026-09-12',
service: 'soir',
heureReservation: '19:30',
nombrePersonnes: 4,
}),
});Or let your coding assistant handle it
If you build with Claude, Cursor or another assistant, paste this context in: it gives the assistant the base URL, the authentication and the endpoint contract it needs to write the integration.
Integrate Couverty bookings into this website.
Base: https://api.couverty.ch
Docs: https://couverty.ch/docs/api
Auth (data endpoints): header "X-API-Key: qr_..."
Useful endpoints, where {slug} is the restaurant's identifier:
GET /api/public/{slug}/config -> opening hours, services, public settings
GET /api/public/{slug}/creneaux -> ?date=YYYY-MM-DD&service=midi|soir
GET /api/public/{slug}/availability -> availability per date
GET /api/public/{slug}/menu -> food menu
POST /api/public/{slug}/reservations -> creates the booking (public, rate-limited)
POST /reservations body:
prenom, nom, email, telephone, dateReservation (YYYY-MM-DD),
service ("midi" | "soir"), heureReservation ("HH:mm"),
nombrePersonnes (number), commentaires (optional)
Constraints:
- only display the slots returned by /creneaux, do not recalculate them;
- handle the error when a slot fills up between display and submission;
- never put the API key in client-side code.A custom Next.js website where booking is part of the design
The client wants a three-step journey, their own typography, their own animations. Not an iframe dropped in the middle of the page. You fetch the time slots from a Server Component, render your own picker, and post the booking from a Server Action. On the restaurant side, nothing changes: the booking lands in the same calendar as those from the booking widget, with the same emails and the same no-show rules. All you wrote was the interface.
FAQFrequently asked questions
The questions integrators and developers ask.
No. The creation endpoint is public and rate-limited. It is the data endpoints that require a key.Booking creation is the endpoint the public booking widget uses: it is reachable without a key and protected by per-IP rate limiting. The endpoints that expose the restaurant's data (profile, menu, settings), on the other hand, authenticate with an API key. In practice: never put an API key in code that runs in the browser.
Calendar dates use the YYYY-MM-DD format, and the time uses HH:mm, separately.The dateReservation field expects a calendar date in YYYY-MM-DD format, with no time and no time zone. The time goes in a separate field, heureReservation, in HH:mm format. This split avoids the one-day shifts caused by time zone conversions. It is a classic trap in Switzerland, which is on UTC+1 or UTC+2 depending on the season.
Yes: the restaurant's profile, the food menu, drinks, the daily menu, rooms and closures.The API covers most of a venue's public data. You can build a menu page that updates as soon as the restaurant owner changes a dish in Couverty, with nothing to enter on the website side. That is exactly what the official WordPress plugin does, using the same API.
The API documentation is the reference: see /docs/api for the exact status of outgoing notifications.The API is documented at /docs/api, which remains the source of truth on the available endpoints and notifications. If your project needs an outgoing notification that the documentation does not cover, write to us: you deal directly with the team that builds the API.
Data endpoints are versioned in the URL (/api/public/v1/). The API version is independent of the app version.Data endpoints carry their version in the URL, under /api/public/v1/. This version moves at its own pace: a new version of the Couverty app does not break an existing integration. The per-venue endpoints (/api/public/{slug}/...) are the ones used by the booking widget and the official plugin, and are held to the same standard of stability.
A question? Contact us
You build the interface, we handle the rest.
Full documentation, API keys per venue and direct contact with the technical team. The partner programme pays you for the restaurants you bring in.
A question? contact@couverty.ch