Introducing the Opencals Storefront API & SDK

Stanislav TyshchenkoProduct Update7 min readJun 6, 2026
Opencals Storefront API and SDK — build custom booking websites

Every screen inside Opencals has always been powered by an API. Today that API is public.

The Opencals Storefront API is now generally available — a clean REST API, backed by a typed TypeScript SDK, that lets you build a fully custom booking website on top of the same engine that runs the Opencals dashboard. If you've ever wanted booking, availability, staff and location logic, payments, and customer accounts as composable building blocks instead of a closed widget, that's what shipped today.

This is the release we've been most impatient to make. Here's what's in it and how to start.

The Storefront API turns Opencals into booking infrastructure: every customer-facing action — browse services, check availability, build a cart, take payment, manage appointments — is now an API call. Pair it with the typed SDK and the free open-source template, and a developer can ship a custom booking site in an afternoon.

What shipped today

Three things, designed to be used together.

Storefront API — REST, public, GA

Resource-oriented endpoints with predictable URLs, JSON, and standard HTTP verbs. Authenticate with a single Storefront API key (starts with sfk_). It covers the full storefront surface: products and collections, real-time availability, locations, staff members, carts, checkout with Stripe or cash, appointments, and customer accounts. Rate limited at 120 requests per minute per key.

@opencals/storefront-sdk — typed TypeScript SDK

A fully typed SDK, auto-generated from the OpenAPI spec, so every endpoint and response is type-safe in your editor. Install it with npm install @opencals/storefront-sdk and you're making booking calls in minutes. Python and PHP SDKs are planned.

Haar — a free, open-source template

A production-ready Next.js 15 booking site for salons and service businesses, built on the SDK and licensed MIT. Online booking, staff and location selection, Stripe checkout, customer accounts, and SEO out of the box. Clone it, add your API key, deploy to Vercel — or read it as the reference implementation for the API.

Your first booking call

Install the SDK, drop in a key, and you're talking to the booking engine:

ts
import { setupOpencals, ProductService } from "@opencals/storefront-sdk"; setupOpencals({ apiKey: process.env.OPENCALS_API_KEY }); // List your services const { data: products } = await ProductService.list(); // Check availability for one of them const { data: slots } = await ProductService.getCurrentAvailabilities({ path: { productId: products.items[0].id }, query: { date: "2026-06-15", timezone: "America/New_York" }, });

From there, a complete booking is six calls — create an appointment from a chosen slot, create a cart, add the appointment, start checkout, save the customer, submit. The same flow handles single time slots, date ranges for rentals, group appointments with multiple attendees, and staff- or location-first booking, because the product configuration tells your UI what to render. The full sequence, with real request and response shapes, is in the docs.

Why storefront-first

A fair question: why open the storefront surface before the admin one?

Because it's where the leverage is. The thing people repeatedly ask Opencals to do — and the thing generic scheduling tools can't — is power a custom-branded booking experience that still has real multi-staff, multi-location, deposit, and rescheduling logic underneath. That's a storefront problem. Merchants who've outgrown a hosted booking page, agencies building sites for service-business clients, and developers who want booking as a backend rather than an embed all need the same set of calls. So that's what we shipped first.

Admin operations — editing your catalog, managing schedules programmatically — stay in the dashboard for now, with an Admin API on the roadmap. Opening the storefront first means you can build the thing customers actually touch today.

Who this is for

Developers building a booking flow into an existing app. Agencies shipping custom booking sites for salon, fitness, rental, or clinic clients. Merchants who want their own front end but Opencals' booking brain underneath. If you've been stretching a closed booking widget to fit, this is the composable version.

Start from a working template, not a blank file

You don't have to learn the API to use it. The fastest path is to clone Haar, our open-source salon template, and rebrand it:

bash
npx create-next-app -e https://github.com/letsopencals/template-haar

It's a real, deployable site — homepage, service listing, date/time/staff picker, multi-step Stripe checkout, customer dashboard with reschedule and cancel, mobile-first, SEO-ready with JSON-LD and a sitemap. All the salon-specific copy lives in one site-config.ts file and the colors are CSS variables, so rebranding is an afternoon, not a rebuild. Add your sfk_ key, deploy to Vercel, done.

It also doubles as the reference implementation: if you want to know how to wire the availability picker or the checkout, read how Haar does it.

What's next

This is the first release, not the last. On the roadmap: the Admin API and webhooks (Q3), Python and PHP SDKs (Q4), and React embeddable components — a <BookingFlow /> you drop into any page — currently in development. The live roadmap on the developers page tracks it all, and it moves based on what developers actually ask for.

If you build something on the API, we'd love to see it.

Frequently asked questions

Frequently Asked Questions

Early Access — 3 Months Free

Ready to transform your service business?

Join 150+ businesses already using Opencals. Get 3 months completely free with all features unlocked.

No credit card required
Setup in 10 minutes
Cancel anytime