# Opencals Developer Docs > Documentation for the Opencals Storefront API — REST booking API, TypeScript SDK, and open-source booking website templates for building custom booking experiences. ## Docs - [Get an add-on by ID](https://landing.dev.opencals.com/docs/api-reference/add-ons/get-an-add-on-by-id.md) - [Get an add-on by slug](https://landing.dev.opencals.com/docs/api-reference/add-ons/get-an-add-on-by-slug.md) - [List add-ons for the current store](https://landing.dev.opencals.com/docs/api-reference/add-ons/list-add-ons-for-the-current-store.md) - [Cancel appointment](https://landing.dev.opencals.com/docs/api-reference/appointments/cancel-appointment.md): Cancels an existing appointment. Subject to cancel_gap restrictions defined in the service configuration. - [Create appointment](https://landing.dev.opencals.com/docs/api-reference/appointments/create-appointment.md): Creates a new appointment for a customer. Authentication is optional - if authenticated, the appointment will be associated with the logged-in user. - [Get appointment by external order name](https://landing.dev.opencals.com/docs/api-reference/appointments/get-appointment-by-external-order-name.md): Returns a single appointment by its external order name. Useful for integrations with external payment or ordering systems. - [Get appointment by ID](https://landing.dev.opencals.com/docs/api-reference/appointments/get-appointment-by-id.md): Returns a single appointment by ID for the authenticated customer - [Get customer booking preferences](https://landing.dev.opencals.com/docs/api-reference/appointments/get-customer-booking-preferences.md): Returns frequently booked services, locations, and staff members based on customer booking history. Results are cached for 24 hours to optimize performance. - [List customer appointments](https://landing.dev.opencals.com/docs/api-reference/appointments/list-customer-appointments.md): Returns all appointments for the authenticated customer with pagination - [Reschedule appointment](https://landing.dev.opencals.com/docs/api-reference/appointments/reschedule-appointment.md): Reschedules an existing appointment to a new time. Subject to reschedule_gap restrictions defined in the service configuration. - [Submit appointment feedback](https://landing.dev.opencals.com/docs/api-reference/appointments/submit-appointment-feedback.md): Allows customers to submit feedback for a completed appointment - [Customer OAuth sign in](https://landing.dev.opencals.com/docs/api-reference/auth/customer-oauth-sign-in.md): Authenticate or register a storefront customer using an OAuth provider (e.g. Google) - [Customer sign in with credentials](https://landing.dev.opencals.com/docs/api-reference/auth/customer-sign-in-with-credentials.md): Authenticate a storefront customer using email and password - [Refresh customer tokens](https://landing.dev.opencals.com/docs/api-reference/auth/refresh-customer-tokens.md): Exchange a valid customer refresh token for a new pair of access and refresh tokens - [Register a new customer](https://landing.dev.opencals.com/docs/api-reference/auth/register-a-new-customer.md): Create a new customer account on the storefront and send a verification email - [Request customer email verification](https://landing.dev.opencals.com/docs/api-reference/auth/request-customer-email-verification.md): Send a verification email to the customer for account activation within the store context - [Request customer password reset](https://landing.dev.opencals.com/docs/api-reference/auth/request-customer-password-reset.md): Send a password reset email to the customer within the store context - [Reset customer password](https://landing.dev.opencals.com/docs/api-reference/auth/reset-customer-password.md): Reset the customer password using a valid reset token received via email - [Verify customer email](https://landing.dev.opencals.com/docs/api-reference/auth/verify-customer-email.md): Confirm customer email ownership using the verification token and return auth tokens - [Add an add-on to a cart item](https://landing.dev.opencals.com/docs/api-reference/cart/add-an-add-on-to-a-cart-item.md) - [Add appointment to cart](https://landing.dev.opencals.com/docs/api-reference/cart/add-appointment-to-cart.md) - [Create or fetch cart](https://landing.dev.opencals.com/docs/api-reference/cart/create-or-fetch-cart.md) - [Extend cart expiration by 5 minutes](https://landing.dev.opencals.com/docs/api-reference/cart/extend-cart-expiration-by-5-minutes.md) - [Fetch cart](https://landing.dev.opencals.com/docs/api-reference/cart/fetch-cart.md) - [Remove a cart add-on item](https://landing.dev.opencals.com/docs/api-reference/cart/remove-a-cart-add-on-item.md) - [Remove cart item](https://landing.dev.opencals.com/docs/api-reference/cart/remove-cart-item.md) - [Update quantity of a cart add-on item](https://landing.dev.opencals.com/docs/api-reference/cart/update-quantity-of-a-cart-add-on-item.md) - [List checkout questions translations for a product](https://landing.dev.opencals.com/docs/api-reference/checkout-questions/list-checkout-questions-translations-for-a-product.md) - [Get all checkout questions for current cart](https://landing.dev.opencals.com/docs/api-reference/checkout/get-all-checkout-questions-for-current-cart.md) - [Save checkout question answers to appointments](https://landing.dev.opencals.com/docs/api-reference/checkout/save-checkout-question-answers-to-appointments.md) - [Save customer information to cart and appointments](https://landing.dev.opencals.com/docs/api-reference/checkout/save-customer-information-to-cart-and-appointments.md) - [Start checkout for cart (create payment, validate items)](https://landing.dev.opencals.com/docs/api-reference/checkout/start-checkout-for-cart-create-payment-validate-items.md) - [Submit checkout (capture payment, create order, auto-authenticate customer)](https://landing.dev.opencals.com/docs/api-reference/checkout/submit-checkout-capture-payment-create-order-auto-authenticate-customer.md): Creates order and returns auth tokens for automatic customer authentication - [List feedback questions translations](https://landing.dev.opencals.com/docs/api-reference/feedback-questions/list-feedback-questions-translations.md) - [Get image by ID](https://landing.dev.opencals.com/docs/api-reference/images/get-image-by-id.md) - [API Reference](https://landing.dev.opencals.com/docs/api-reference/introduction.md): Base URL, authentication, and conventions for the Opencals Storefront API — plus an interactive playground for every endpoint. - [Get location by ID](https://landing.dev.opencals.com/docs/api-reference/locations/get-location-by-id.md): Retrieve a location by its internal ID for current store - [Get location by slug](https://landing.dev.opencals.com/docs/api-reference/locations/get-location-by-slug.md): Retrieve a location by its URL-friendly slug for current store - [List store locations](https://landing.dev.opencals.com/docs/api-reference/locations/list-store-locations.md): Retrieve a paginated list of locations for the current store - [Get order by ID](https://landing.dev.opencals.com/docs/api-reference/orders/get-order-by-id.md): Returns a single order by ID for the authenticated customer - [List customer orders](https://landing.dev.opencals.com/docs/api-reference/orders/list-customer-orders.md): Returns all orders for the authenticated customer with pagination - [Get available payment providers for checkout](https://landing.dev.opencals.com/docs/api-reference/payment/get-available-payment-providers-for-checkout.md): Returns the list of active, eligible payment providers configured for this store. Only providers that are properly configured and enabled will be returned. - [Get public payment settings](https://landing.dev.opencals.com/docs/api-reference/payment/get-public-payment-settings.md): Returns public payment configuration like currency and capture method. - [Get product collection by slug](https://landing.dev.opencals.com/docs/api-reference/product-collections/get-product-collection-by-slug.md): Retrieve a product collection by its URL-friendly slug for the current store - [List store product collections](https://landing.dev.opencals.com/docs/api-reference/product-collections/list-store-product-collections.md): Retrieve a paginated list of product collections for the current store - [Get a product by external variant ID](https://landing.dev.opencals.com/docs/api-reference/products/get-a-product-by-external-variant-id.md): Retrieve a product by its external variant ID (e.g., Shopify variant ID) for the current store - [Get current availabilities for a product](https://landing.dev.opencals.com/docs/api-reference/products/get-current-availabilities-for-a-product.md): Retrieve individual bookable time slots for a product on a given date. - [Get merged availability ranges for a product](https://landing.dev.opencals.com/docs/api-reference/products/get-merged-availability-ranges-for-a-product.md): Retrieve merged availability ranges (broad time windows) for a product. Useful for calendar date highlighting. - [Get product by ID](https://landing.dev.opencals.com/docs/api-reference/products/get-product-by-id.md): Retrieve a product by its internal ID for the current store - [Get product by slug](https://landing.dev.opencals.com/docs/api-reference/products/get-product-by-slug.md): Retrieve a product by its URL-friendly slug for the current store - [Get products by external ID](https://landing.dev.opencals.com/docs/api-reference/products/get-products-by-external-id.md): Retrieve products by their external platform ID (e.g., Shopify product ID) for the current store - [Get the nearest available slot for a product](https://landing.dev.opencals.com/docs/api-reference/products/get-the-nearest-available-slot-for-a-product.md): Find the nearest upcoming availability slot for a product. Returns null/204 if no slot exists within the advance schedule window. - [List available add-ons for a product](https://landing.dev.opencals.com/docs/api-reference/products/list-available-add-ons-for-a-product.md): Returns active add-ons available for the given product, filtered by location and staff member assignments. - [List available add-ons for a product by slug](https://landing.dev.opencals.com/docs/api-reference/products/list-available-add-ons-for-a-product-by-slug.md): Returns active add-ons available for the given product slug, filtered by location and staff member assignments. - [List store products](https://landing.dev.opencals.com/docs/api-reference/products/list-store-products.md): Retrieve a paginated list of active products for the current store, for the current store - [Change current customer password](https://landing.dev.opencals.com/docs/api-reference/self-service/change-current-customer-password.md) - [Get current customer profile](https://landing.dev.opencals.com/docs/api-reference/self-service/get-current-customer-profile.md) - [Update current customer profile](https://landing.dev.opencals.com/docs/api-reference/self-service/update-current-customer-profile.md) - [Get staff member by slug](https://landing.dev.opencals.com/docs/api-reference/staff-members/get-staff-member-by-slug.md): Retrieve a staff member by their URL-friendly slug for current store - [List store staff members](https://landing.dev.opencals.com/docs/api-reference/staff-members/list-store-staff-members.md): Retrieve a paginated list of staff members for the current store - [Get store public settings](https://landing.dev.opencals.com/docs/api-reference/store/get-store-public-settings.md) - [Authentication](https://landing.dev.opencals.com/docs/authentication.md): How authentication works in the Opencals Storefront API: Storefront API keys, customer JWT tokens, refresh flows, and error responses. - [Changelog](https://landing.dev.opencals.com/docs/changelog.md): What's new in the Opencals developer platform — Storefront API, TypeScript SDK, open-source templates, and developer docs. - [Build a booking page](https://landing.dev.opencals.com/docs/guides/build-a-booking-page.md): Step-by-step tutorial: use the Opencals Storefront API with Next.js and the TypeScript SDK to list services, pick a time slot, manage a cart, and complete checkout. - [Storefront SDK](https://landing.dev.opencals.com/docs/guides/storefront-sdk.md): Install and use @opencals/storefront-sdk — the type-safe TypeScript client for the Opencals booking API, generated from the OpenAPI spec with Zod schemas and helpers included. - [Webhooks](https://landing.dev.opencals.com/docs/guides/webhooks.md): The planned Opencals webhook event catalog for booking automations — and how to keep a headless booking site in sync today with polling and revalidation. - [Introduction](https://landing.dev.opencals.com/docs/introduction.md): The Opencals Storefront API is booking infrastructure for builders — a REST API for services, real-time availability, carts, checkout, and payments, so you can build a fully custom booking experience on any stack. - [Haar — salon booking template](https://landing.dev.opencals.com/docs/open-source/haar.md): Free, open-source beauty salon booking website template. Next.js 15, Stripe checkout, staff and multi-location booking, customer accounts — built on the Opencals Storefront API. - [Open-source templates](https://landing.dev.opencals.com/docs/open-source/templates.md): Free, open-source booking website templates built on the Opencals Storefront API. Clone, customize, and deploy a production booking site in minutes. - [Quickstart](https://landing.dev.opencals.com/docs/quickstart.md): What the Opencals Storefront API is, how to get an API key, and how to make your first request. ## OpenAPI Specs - [openapi](https://landing.dev.opencals.com/docs/api-reference/openapi.json)