Koppelingen · Partner API

Jesdi koppelt met elk platform dat reserveringen doet.

Ben je een reserveringsplatform, dealsite, restaurantgids of app? Met de Jesdi Partner API zie je in realtime de vrije tijden van onze restaurants en zet je reserveringen direct in hun agenda. Geen dubbele boekingen, geen overtypen en geen gedoe voor het restaurant.

Gratis, voor platforms en restaurants · Elke koppeling binnen een dag gebouwd · Testsleutel met een demorestaurant

Waarom koppelen

Eén agenda voor het restaurant, echte beschikbaarheid voor jou.

Altijd de echte vrije tijden

Je ziet precies wat het restaurant online aanbiedt: openingstijden, capaciteit, vrije tafels, vakanties en volle dagen. Wat jij verkoopt, kan het restaurant ook echt waarmaken.

Direct in de agenda

Je reservering staat meteen in de agenda van het restaurant, met jouw naam als label. Wijzigt of annuleert het restaurant iets, dan hoor je het binnen een minuut.

Gratis en binnen een dag gekoppeld

Koppelen kost niets, niet voor jou en niet voor het restaurant. Gebruik onze API, of werk je liever met je eigen API? Dan bouwen wij de koppeling met jouw systeem binnen een dag.

Zo werkt het

In vier stappen gekoppeld.

Sleutel aanvragen

Mail ons met je bedrijfsnaam en wat je wilt koppelen. Je krijgt een testsleutel. Heb je een eigen API, dan bouwen wij de koppeling binnen een dag.

Testen

Probeer vrije tijden, reserveren, wijzigen en annuleren uit met ons demorestaurant.

Restaurant zet het aan

Het restaurant kiest in zijn Jesdi-backoffice jouw platform. Pas dan zie je zijn tijden.

Live

Reserveringen via jouw platform staan direct in de agenda. Ook voor elk volgend restaurant.

Documentatie

Jesdi Partner API v1

Alles wat je nodig hebt om te koppelen. De voorbeelden zijn in het Engels, zoals de API zelf.

Basis

Alle aanroepen gaan naar dit adres, met je sleutel in de header. Gegevens zijn JSON in UTF-8. Datums zijn JJJJ-MM-DD en tijden UU:MM, in de lokale tijd van het restaurant (Europe/Amsterdam).

Base URL:  https://jesdi.nl/partner/v1
Header:    Authorization: Bearer <your api key>

Restaurants

De restaurants die de koppeling met jouw platform hebben aangezet. Het veld id gebruik je in alle andere aanroepen. Staat bookable op false, dan is het restaurant gepauzeerd of heeft het online reserveren gesloten.

GET/restaurants
{ "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
} ] }

Vrije tijden

Dezelfde regels als de eigen widget van het restaurant: openingstijden, capaciteit, aankomsten per tijdslot, minimale aanlooptijd, vakanties, vrije tafels en de grootste groep die online mag reserveren. Je krijgt alleen tijden die direct bevestigd worden.

GET/restaurants/{id}/availability?date=2026-10-15&party=2
{ "date": "2026-10-15", "party": 2, "times": ["17:30", "18:00", "20:30"] }

Of per dag over een periode van maximaal 62 dagen, bijvoorbeeld voor een kalender:

GET/restaurants/{id}/availability?from=2026-10-15&to=2026-11-15&party=2
{ "party": 2, "days": { "2026-10-15": "open", "2026-10-16": "full", "2026-10-17": "closed" } }

Biedt het restaurant een keuze tussen binnen en terras (seating_choice), voeg dan &seating=terrace toe.

Reservering maken

POST/restaurants/{id}/reservations
{ "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 (verplicht) is jouw reserveringsnummer. Stuur je hetzelfde external_id nog een keer, dan krijg je de bestaande reservering terug. Opnieuw proberen na een time-out is dus veilig.
  • email en phone zijn optioneel. Jesdi stuurt gasten van partners geen eigen bevestiging; dat doe jij.
  • Antwoord: 201 met de reservering, of 409 slot_unavailable als de tijd net vol is.
{ "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"
} }

Wijzigen en annuleren

GET/reservations/{external_id}
PATCH/reservations/{external_id}
{ "date": "2026-10-16", "time": "20:00", "party": 4 }     // verzetten
{ "status": "cancelled" }                                 // annuleren

Een reservering in het verleden, of waarvan de gasten al binnen zijn, kan niet meer veranderen (409).

GET/reservations?updated_since=2026-10-07 12:00:00

Alle reserveringen van jouw platform die sinds dat moment zijn veranderd. Handig als je liever ophaalt dan webhooks ontvangt.

Status

statusBetekenis
confirmedBevestigd
pendingHet restaurant moet nog goedkeuren
seatedDe gasten zijn binnen
cancelledGeannuleerd
declinedAfgewezen door het restaurant
no_showNiet verschenen

Webhooks

Annuleert of verzet het restaurant een reservering, of zet het hem op binnen of niet verschenen, dan sturen we binnen een minuut een POST naar jouw webhook-adres. Lukt dat niet, dan proberen we het elke minuut opnieuw tot je met een 2xx-status antwoordt.

POST https://your-platform.example/jesdi-webhook
X-Jesdi-Signature: sha256=<hmac of the body with your webhook secret>

{ "event": "reservation.updated", "reservation": { … } }

Foutcodes

HTTPerrorBetekenis
400date_time_party_required, name_required, invalid_emailEen verplicht veld ontbreekt of klopt niet
401unauthorizedSleutel ontbreekt of is niet geldig
404restaurant_not_connected, not_foundHet restaurant heeft de koppeling niet aangezet, of de reservering bestaat niet
409slot_unavailable, not_changeableDe tijd is vol, of de reservering kan niet meer veranderen

Klaar om te koppelen?

Koppelen is gratis. Mail ons je bedrijfsnaam en wat je wilt koppelen: je krijgt een testsleutel en een demorestaurant, of wij bouwen de koppeling met jouw eigen API binnen een dag.

API-sleutel aanvragen