Changelog
2026-10-10
Developer docs, and slot dates that mean what they say
docs.clndr.pro is live. Guides for the embed, @clndr-pro/react, @clndr-pro/sdk and the REST API, six tutorials (shadcn widgets, server actions, approvals, syncing bookings), an OpenAPI 3.1 spec at /openapi.json, and prompts you can paste into Claude Code. Every page is also Markdown at its own URL plus .md, indexed at /llms.txt, and there's an MCP server and a Claude Code skill: see Docs for AI tools.
API: GET /booking-pages/{slug}/slots
date=YYYY-MM-DDnow means that calendar day in the host's timezone. It used to be read as UTC midnight, so hosts west of UTC got the previous day's slots. Full ISO timestamps still work as before.- Slots that have already started are no longer returned, and days past the page's
max_days_aheadreturn an empty list. - An unparseable
datereturns400instead of500.
API: POST /bookings
- Bookings made with a publishable key must match a slot the slots endpoint offers right now: future, inside the host's hours, within
max_days_ahead. Anything else is a409. Secret keys can still book any time that doesn't overlap another booking. - A taken slot is now
409(was400), the guest-email limit429(was400), and failures on our side500(were400). - Bad emails, unparseable or reversed timestamps, and a
responsesthat isn't an array get a400that names the field.
Slots. A busy block that started inside a slot and ended with it (slot 9:00–10:00, meeting 9:30–10:00) was offered as free. Fixed for the API, the hosted page and the embed. Slots now come back sorted by start.
Embed. https://www.clndr.pro/embed.js loads on third-party pages. It used to redirect to the sign-in page, so Clndr.inline, Clndr.modal and Clndr.floatingButton never ran.
Dashboard. The API Keys page now names the real packages (@clndr-pro/sdk and @clndr-pro/react, not @clndr/*), shows an iframe embed snippet, tells you which env var each key belongs in, and links here.