Jesdi connects with any platform that takes reservations.
Are you a reservation platform, deal site, restaurant guide or app? With the Jesdi Partner API you see our restaurants' free times in real time and put reservations straight into their agenda. No double bookings, no retyping and no hassle for the restaurant.
Free for platforms and restaurants · Every connection built within a day · Test key with a demo restaurant
One agenda for the restaurant, real availability for you.
Always the real free times
You see exactly what the restaurant offers online: opening hours, capacity, free tables, holidays and full days. What you sell, the restaurant can actually deliver.
Straight into the agenda
Your reservation is in the restaurant's agenda immediately, with your name as a label. If the restaurant changes or cancels something, you hear about it within a minute.
Free, and connected within a day
Connecting costs nothing, not for you and not for the restaurant. Use our API, or do you prefer to work with your own API? Then we build the connection with your system within a day.
Connected in four steps.
Request a key
E-mail us your company name and what you want to connect. You'll get a test key. If you have your own API, we build the connection within a day.
Test
Try free times, booking, changing and cancelling with our demo restaurant.
The restaurant switches it on
The restaurant picks your platform in its Jesdi back office. Only then do you see its times.
Live
Reservations through your platform go straight into the agenda. The same for every next restaurant.
Jesdi Partner API v1
Everything you need to connect. The examples are in English, like the API itself.
Basics
All calls go to this address, with your key in the header. Data is JSON in UTF-8. Dates are YYYY-MM-DD and times HH:MM, in the restaurant's local time (Europe/Amsterdam).
Base URL: https://jesdi.nl/partner/v1
Header: Authorization: Bearer <your api key>
Restaurants
The restaurants that have switched on the connection with your platform. Use the id field in all other calls. If bookable is false, the restaurant is paused or has closed online booking.
{ "restaurants": [ {
"id": "in-den-vlaemschen-pot", "name": "In den Vlaemschen Pot",
"address": "…", "phone": "…", "website": "…",
"bookable": true, "max_party": 8, "seating_choice": false,
"slot_minutes": 30, "duration_minutes": 120, "days_ahead": 120
} ] }
Free times
The same rules as the restaurant's own widget: opening hours, capacity, arrivals per time slot, minimum notice, holidays, free tables and the largest group that can book online. You only get times that are confirmed immediately.
{ "date": "2026-10-15", "party": 2, "times": ["17:30", "18:00", "20:30"] }
Or per day over a period of up to 62 days, for example for a calendar:
{ "party": 2, "days": { "2026-10-15": "open", "2026-10-16": "full", "2026-10-17": "closed" } }
If the restaurant offers a choice between indoor and terrace (seating_choice), add &seating=terrace.
Create a reservation
{ "external_id": "DS-1001", "date": "2026-10-15", "time": "19:00", "party": 2,
"name": "Jan de Vries", "email": "jan@example.com", "phone": "+31612345678",
"remarks": "Restaurant Week menu, 1x gluten free", "seating": "indoor", "lang": "nl" }
- external_id (required) is your reservation number. If you send the same external_id again, you get the existing reservation back. Retrying after a time-out is therefore safe.
- email and phone are optional. Jesdi does not send its own confirmation to partner guests; you do that.
- Response: 201 with the reservation, or 409 slot_unavailable if the time has just filled up.
{ "reservation": {
"id": 35, "external_id": "DS-1001", "restaurant": "in-den-vlaemschen-pot",
"date": "2026-10-15", "time": "19:00", "duration_minutes": 120, "party": 2,
"seating": null, "status": "confirmed", "name": "Jan de Vries",
"remarks": "…", "updated_at": "2026-10-07 16:10:00"
} }
Change and cancel
{ "date": "2026-10-16", "time": "20:00", "party": 4 } // move
{ "status": "cancelled" } // cancel
A reservation in the past, or one where the guests have already arrived, can no longer be changed (409).
All reservations from your platform that changed since that moment. Useful if you prefer polling to webhooks.
Status
| status | Meaning |
|---|---|
confirmed | Confirmed |
pending | The restaurant still has to approve |
seated | The guests have arrived |
cancelled | Cancelled |
declined | Declined by the restaurant |
no_show | Did not show up |
Webhooks
If the restaurant cancels or moves a reservation, or marks it as seated or no-show, we send a POST to your webhook address within a minute. If that fails, we retry every minute until you respond with a 2xx status.
POST https://your-platform.example/jesdi-webhook
X-Jesdi-Signature: sha256=<hmac of the body with your webhook secret>
{ "event": "reservation.updated", "reservation": { … } }
Error codes
| HTTP | error | Meaning |
|---|---|---|
| 400 | date_time_party_required, name_required, invalid_email | A required field is missing or invalid |
| 401 | unauthorized | Key is missing or not valid |
| 404 | restaurant_not_connected, not_found | The restaurant has not switched on the connection, or the reservation does not exist |
| 409 | slot_unavailable, not_changeable | The time is full, or the reservation can no longer be changed |
Ready to connect?
Connecting is free. E-mail us your company name and what you want to connect: you get a test key and a demo restaurant, or we build the connection with your own API within a day.
Request an API key