# clndr.pro > Documentation for clndr.pro. ## Docs - [Introduction](/): Put clndr.pro booking pages on your own site with an embed, React components, or the REST API. - [Quickstart](/quickstart): A working booking form in a Next.js app in about ten minutes, using @clndr-pro/react and a publishable key. - [Choose an integration](/integration-options): Compare the embed script, the iframe, the React components, the React hooks and the server SDK by what guests see, how much you can style, and what your code can react to. - [API keys](/api-keys): Secret and publishable clndr.pro keys, their scopes, where each one may live, and how to rotate or revoke them without downtime. - [How booking works](/concepts): Booking pages, weekly availability, how open slots are calculated in the host's timezone, the booking lifecycle for direct and approval pages, questions, and private pages. - [Embed script](/embed/script): Add a clndr.pro booking page to any website with one script tag, inline, in a modal or behind a floating button, and get a callback when a guest books. - [Iframe embed](/embed/iframe): Embed a clndr.pro booking page with a plain iframe, configure it with query parameters, and resize it or react to bookings with postMessage events. - [Next.js App Router](/nextjs): Set up clndr.pro in a Next.js App Router app — both keys, the client/server split, a statically generated page per booking page, and a protected route handler for your admin. - [Components](/react/components): Reference for ClndrProvider, BookingInline, BookingForm and BookingModal in @clndr-pro/react — props, what the default booking flow does, prefilling guests, and using several accounts on one site. - [Hooks](/react/hooks): useBookingPage, useAvailableSlots, useCreateBooking and useClndr from @clndr-pro/react — signatures, return values, local dates, refetching, and handling a slot someone else just took. - [Styling and slots](/react/styling): Restyle the @clndr-pro/react booking form with your own components (components prop) and class names (classNames prop), with complete shadcn/ui and plain-CSS examples and Markdown description rendering. - [shadcn booking widget](/tutorials/shadcn-booking-widget): Build a custom clndr.pro booking widget with shadcn/ui and the @clndr-pro/react hooks — a calendar, times grouped in the guest's timezone, the host's questions, and handling for slots someone else just booked. - [Booking dialog with shadcn](/tutorials/shadcn-booking-dialog): Add a "Book a call" button to your site's header that opens the clndr.pro booking form in a shadcn Dialog on desktop and a Drawer on phones, and closes itself after the booking. - [Book through a server action](/tutorials/server-actions): Build a Next.js booking page where the browser only talks to your server, which validates the request and books it with your secret key. - [Approve bookings in your admin](/tutorials/approvals-dashboard): Build a Next.js admin page that lists pending clndr.pro bookings with the guest's answers, and approves or declines them with server actions. - [Sync bookings to your database](/tutorials/sync-bookings): Keep a copy of your clndr.pro bookings in your own Postgres table with a polling cron job, plus an instant update from the booking form. - [Plain JavaScript](/tutorials/vanilla-js): A complete clndr.pro booking form in one HTML file — fetch, a publishable key and the REST API, no framework and no build step. - [TypeScript SDK](/sdk): Reference for @clndr-pro/sdk, the typed client for the clndr.pro API, with every method, the errors it throws, and the plain HTTP calls underneath. - [Data types](/types): Every object the clndr.pro API returns or accepts, as TypeScript interfaces, with enum values, nullability, and how they map to the SDK's exported types. - [Errors and rate limits](/errors): Every error the clndr.pro API returns, with its exact message, what causes it and whether to retry, plus the per-key rate limits and how to back off. - [Prompts for Claude Code](/ai/claude-code): Copy-paste prompts that have Claude Code add clndr.pro booking to a project, from a drop-in Next.js page to a custom shadcn widget, an approvals screen or a database sync. - [Docs for AI tools](/ai/tools): Read these docs from a coding agent through Markdown URLs, llms.txt, an MCP server, a Claude Code skill and the OpenAPI spec. - [Troubleshooting](/troubleshooting): Fixes for the problems people hit integrating clndr.pro, from 401 Missing API key and empty slot lists to dates a day off, client-component errors and embeds that don't resize. ## API Reference - [List booking pages](/api-reference/operations/listBookingPages): GET /booking-pages - [Get a booking page](/api-reference/operations/getBookingPage): GET /booking-pages/{slug} - [List open slots](/api-reference/operations/listSlots): GET /booking-pages/{slug}/slots - [List bookings](/api-reference/operations/listBookings): GET /bookings - [Create a booking](/api-reference/operations/createBooking): POST /bookings - [Get a booking](/api-reference/operations/getBooking): GET /bookings/{id} - [Confirm or cancel a booking](/api-reference/operations/updateBooking): PATCH /bookings/{id} - [Cancel a booking](/api-reference/operations/cancelBooking): DELETE /bookings/{id} - [List a user's profile pages (legacy)](/api-reference/operations/listPublicBookingPages): GET /embed/booking ## Changelog - [Changelog](/changelog)