Skip to main content
The Opencals Storefront API is a REST booking API for developers. It exposes everything a booking website needs — services, real-time availability, staff members, locations, carts, checkout, and payments — so you can build a fully custom booking experience on any stack while Opencals handles scheduling logic, conflict prevention, and order management. Everything you configure in the Opencals dashboard is available over the API.

Base URL

All Storefront API endpoints live under a single base URL:
Endpoint paths are prefixed with /storefront — for example GET /storefront/products lists your bookable services. Responses are JSON with camelCase property names.

Make your first request

1

Get an API key

  1. Sign up at opencals.com and set up your store — services, staff members, locations, and schedules.
  2. In the dashboard, go to Users → your user → API Keys and create a key. Calling the API from a server? Create a private storefront key (spk_). For browser code, create a public storefront key (sfk_).
  3. Each key is scoped to your store. See API keys for the difference.
Keep a private key server-side (for example in an environment variable), never in browser code.
2

List your services

List your store’s active services with a single call:
3

Read the response

The response is a paginated collection:
You can also try every endpoint directly in the interactive API reference.

Pagination

List endpoints accept page (1-indexed) and take (items per page, maximum 100) query parameters and return a meta object with page, take, itemCount, pageCount, hasPreviousPage, and hasNextPage.

Rate limits

Limits are per API key and visitor IP, never a total for your store, so a busy site isn’t capped. The visitor IP is the buyer IP your server forwards with a private key (X-Opencals-Buyer-Ip); otherwise it’s the IP the request comes from, which for a server-side site is your server’s, shared by all your visitors. When you exceed a limit the API responds with 429 Too Many Requests. Back off and retry; the windows are short.

Timezones

All date and time values in requests and responses are in UTC. Availability endpoints accept a timezone query parameter (for example America/New_York) to return slots in the user’s local timezone. Convert user-selected times back to UTC before creating appointments.

Next steps

Authentication

API keys, customer tokens, and error responses.

Build a booking page

The full flow from listing services to a confirmed booking.

Storefront SDK

The typed TypeScript client for this API.

API reference

Every endpoint, parameter, and response shape.
Last modified on October 24, 2026