Getting Started

Get league owners and facility owners from API key setup to a working widget or booking flow with the smallest set of Rondo setup steps.

Get league owners and facility owners from API key setup to a working widget or booking flow with the smallest set of Rondo setup steps.

1. Getting Started

Use this section to choose the right Rondo integration path and get your first implementation moving without learning Rondo internals first.

Base URLs

SurfaceURLWhy you use it
API base (dev)https://dev.playrondo.com/apiSend development API requests
OpenAPI YAMLhttps://dev.playrondo.com/api/dev-docs/openapi.yamlDownload the current API schema
Interactive docshttps://dev.playrondo.com/api/embed/docsExplore the Embed API in a browser
Contract indexhttps://dev.playrondo.com/api/embed/contract/v1Review the public embed contract
Demo pagehttps://dev.playrondo.com/demoTest widgets and booking flows

Pick your integration path

  1. Use the League & Session Widget when you want an embedded experience for league flows or standalone pickup sessions.
  2. Use the Facility Booking Widget when you want to show availability and let users submit booking requests.
  3. Use the Embed API when you want to build your own UI on top of the public contract instead of using widgets.
  4. Add Webhooks if facility owners need booking lifecycle notifications.
  5. Add Calendar Sync if facility owners want approved bookings reflected in their calendars.

What you need before you start

RequirementWhy it matters
Your API keyAuthenticates widget and public API requests
Allowed domain in allowedOriginsLets your widget load from your site without CORS issues
The right facility, league, or session contextTells Rondo what data to load
A test page or staging pageGives you a safe place to validate the integration

Next step: Continue to Authentication & API Keys.

2. Authentication & API Keys

Use this section to send authenticated requests correctly and lock your integration to the domains and resources it should access.

Supported headers

HeaderWhen to use itNotes
X-Rondo-Api-KeyPreferred API key headerUse one header format consistently
X-API-KeyAlternate API key headerSupported for the same API key
X-Rondo-Api-Key: your_api_key
X-API-Key: your_api_key

Key configuration

OptionTypeWhy it matters
leagueIdsArrayLimits access to specific leagues
facilityIdsArrayLimits access to specific facilities
allowedOriginsArrayLimits browser-based use to approved domains

Recommended setup

  1. Create a separate API key for each environment you control.
  2. Limit the key to the leagueIds or facilityIds your app actually needs.
  3. Add every site domain that will load the widget to allowedOrigins.
  4. Keep the key server-side when you do not need browser-based access.

Next step: Continue to League & Session Widget.

3. League & Session Widget

Use this widget when you want to embed league experiences or standalone pickup sessions in your site with minimal custom UI work.

When to use it

Use caseChoose this widget?Why
League hierarchy flowsYesIt fits league-style navigation
Standalone pickup sessionsYesIt supports session flows outside the league hierarchy
Fully custom frontendMaybe notThe Embed API gives you more direct control

Before you embed

RequirementRequiredWhy it matters
rondo-widget.jsYesThis is the widget file for league and session experiences
Your API keyYesAuthenticates data access
Allowed domainYesThe widget must load from a domain in allowedOrigins
League or session contextYesDetermines what content the widget loads

Implementation notes

  • Test the widget on a real page in your development environment before launch.
  • Keep the host page simple until the first load works, then add styling around it.
  • The footer includes Powered by Rondo on all widgets, and it cannot be removed.

Next step: Continue to Facility Booking Widget.

4. Facility Booking Widget

Use this widget when you want to show facility availability and optionally let users submit booking requests from your site.

Before you enable booking

RequirementRequiredWhy it matters
facility-booking-widget.jsYesThis is the widget file for facility booking flows
Your API keyYesAuthenticates requests from the widget
data-api-keyYesPasses your API key into the widget
data-enable-booking="true"Yes, for booking formTurns on the booking request form
Facility contextYesTells the widget which facility to load

Public booking endpoint

POST https://dev.playrondo.com/api/dashboard/public/facilities/:facilityId/bookings

What happens after a booking request

A booking request goes to the facility manager for approval so the facility can review it before it becomes a confirmed booking.

  1. The user submits a booking request from the widget.
  2. The request appears in the Rondo dashboard for the facility manager.
  3. The facility manager approves or rejects the request in Rondo dashboard → Facility.
  4. If you need automatic notifications, set up Webhooks to receive booking updates.

Conflict response

{
  "error": "Slot no longer available",
  "code": "SLOT_CONFLICT"
}

Widget note

The footer includes Powered by Rondo on all widgets, and it cannot be removed.

Next step: Continue to Webhooks.

5. Webhooks

Use webhooks to send booking lifecycle updates from Rondo to your backend as soon as something changes.

Where to configure them

Configure facility webhooks in Rondo dashboard → Facility → Webhooks.

Events

EventWhen it fires
booking.createdA booking request is created
booking.approvedA booking request is approved
booking.rejectedA booking request is rejected
booking.cancelledA booking is cancelled
booking.updatedA booking is changed
blackout.createdA blackout is added
blackout.removedA blackout is removed

Signature verification

Verify the signature before you trust or process a webhook event.

import crypto from 'node:crypto';

export function verifyWebhookSignature(rawBody, signature, secret) {
  const expected = crypto
    .createHmac('sha256', secret)
    .update(rawBody)
    .digest('hex');

  const actual = Buffer.from(signature, 'utf8');
  const expectedBuffer = Buffer.from(expected, 'utf8');

  if (actual.length !== expectedBuffer.length) {
    return false;
  }

  return crypto.timingSafeEqual(actual, expectedBuffer);
}

Retry behavior

We retry 3 times with backoff. If your endpoint is down for an extended period, the webhook will auto-disable and you can re-enable it from the dashboard.

Next step: Continue to Calendar Sync.

6. Calendar Sync

Use calendar sync to keep approved facility bookings visible in the calendar tools your facility team already uses.

Supported calendars

  • Google Calendar is supported.
  • Microsoft Outlook is supported.
  • Apple Calendar works through a Google Calendar link, so no native Apple integration is required.

Where to connect it

Connect calendars in Rondo dashboard → Facility → Calendar Sync.

What syncs

Booking changeCalendar result
Approved bookingCreates a calendar event
CancellationDeletes the calendar event
Reschedule or updateUpdates the existing calendar event

Next step: Continue to Troubleshooting.

7. Troubleshooting

Use this section to check the most common setup problems before you dig into lower-level debugging.

Q&A

  • Widget not showing: Check that your API key is valid and your domain is included in allowedOrigins.
  • Availability shows no slots: Confirm that schedule rules are configured in the dashboard.
  • Booking form not appearing: Confirm that data-enable-booking="true" is set and data-api-key is present.
  • Webhook not firing: Check that your endpoint returns 200 quickly and that the webhook has not been disabled.
  • CORS error: Add your domain to allowedOrigins for your API key.

Next step: Continue to Limits.

8. Limits

Use this section to understand the main limits you need to account for as you build and operate your integration.

ActionLimit
API keys per account10
Widget embed loadsNo limit
Booking requests10/hour per API key
Webhook retries3 attempts with backoff
Webhook timeout10 seconds per attempt

Next step: Re-check Troubleshooting before launch, then enable Webhooks or Calendar Sync if your facility owners need them.