Skip to content
MyEscapeRoomDocs
Esc

    Type to search. Use the arrow keys and Enter to open a result.

    Integration overview

    The ways to connect your website or systems to MyEscapeRoom, and which to pick.

    Last updated

    This section is for developers: you, or the web agency that builds your venue's website. If you only want to know how bookings work from the venue's side, start with Quick start for venues instead.

    MyEscapeRoom already has a booking page for every live venue. You only need an integration when you want bookings, gift vouchers or results to flow through your own site or systems.

    The options#

    OptionWhat it doesWhat you need
    Booking widgetA ready-made booking form you show on your site in an iframe. It takes real bookings and card payments.A key of its own and your site in its allowed origins. Nothing to build.
    Your own booking flow (Embed API)Your site lists your rooms and free sessions, creates bookings, takes payment with Stripe, and looks bookings up or cancels them.A venue API key, a developer, and Stripe.js on your payment page. See API keys.
    Gift voucher sales (Embed API)Sell, look up and cancel gift vouchers from your own shop, and let players spend them on bookings.The same API key. Some actions need the key's voucher permission.
    WebhooksYour server is told when a booking is confirmed or cancelled, and when a gift voucher is sold, spent, given back or cancelled, instead of asking again and again.A public https endpoint on your server, added on the dashboard's API page. No API key needed.
    Logging escape timesYour own timer or game master app sends each session's result.A dashboard staff account. There are no API keys for this route yet, it signs in with a staff session.

    Which one should you use?#

    If you want to…Use
    Let players book without leaving your own websiteThe booking widget, for a ready-made form. Or the Embed API, called from your server (best) or from the browser with an allowed origin, for your own design.
    Send players to a page that already works, with no developmentLink to your venue's page on MyEscapeRoom. Nothing to integrate, and nothing on this page applies.
    Show your rooms or free times on your own pages, without a checkoutGET /api/embed/rooms and the availability endpoint, from your server.
    Sell gift vouchers in your own web shopThe voucher endpoints, plus webhooks if your shop should know when one is spent.
    Mirror bookings into your own calendar, CRM or accountingThe booking.confirmed, booking.cancelled and booking.rescheduled webhooks, and GET /api/embed/bookings for a catch-up read.
    Keep a voucher balance in sync with another systemWebhooks.
    Record whether a group escaped and how fast, from your own timerLogging escape times.

    What you need first#

    • A live venue. Every Embed API call is refused with 401 UNAUTHORIZED until an operator has approved your venue and it is live. See Key concepts for the lifecycle.
    • Stripe connected. An online booking that still owes the venue money is refused with 503 STRIPE_NOT_CONFIGURED until the venue has connected Stripe. Set it up in Connect Stripe & get paid.
    • An API key. An owner or admin creates it on DashboardSetupAPI. Read API keys before you decide where the key lives.
    • Rooms with slots. A room only has free sessions to book once its weekly schedule is set.

    A booking through the API, step by step#

    A group takes a whole room for a session, so there are no seat counts: you pick a room, a session, and say how many people are coming. The same steps drive every custom booking flow.

    1. List the rooms

      GET /api/embed/rooms returns your venue and its active rooms, each with its price rules, group size limits and the payment modes it accepts.
    2. Find a free session

      GET /api/embed/rooms/{slug}/availability returns the room's free sessions, soonest first. Ask for one day with date, or a window with from and to.
    3. Create the booking

      POST /api/embed/bookings with the session's slotId, the contact's name and email, the group size and the payment mode. The session is now held for 15 minutes and the answer carries the booking's ref, the price breakdown and a Stripe clientSecret.
    4. Take the payment

      In the player's browser, confirm the payment with Stripe.js using the clientSecret and stripePublishableKey from the previous answer. The player always pays the service fee online. They pay the room price online too, unless you chose at_location.
    5. Wait for the confirmation

      The booking becomes confirmed when Stripe tells MyEscapeRoom the payment succeeded, normally within seconds. A booking.confirmed webhook tells your server when it happens; or read GET /api/embed/bookings/{ref} until booking.status is confirmed or cancelled. MyEscapeRoom emails the player their confirmation.
    6. Afterwards

      Cancel with POST /api/embed/bookings/{ref}/cancel, or ask for the booking's invoices (Belgian venues). A player who leaves checkout can release the hold at once with the same cancel call.

    The Embed booking widget page walks through every step with real requests and responses.

    How the money works#

    The player pays the room price plus a flat service fee. You receive 100% of the room price, less Stripe's card fee on your share, and MyEscapeRoom takes no commission. The booking's quote.totalCents is the amount to show your customer. Gift voucher sales carry no service fee at all. See Key concepts for the full picture.

    Where to go next#

    MyEscapeRoom Docs