chronoskin Docs v4.2
All systems normal
Version 4.2 adds recurring holds

Put time on your side of the API

chronoskin turns calendars, time zones and opening hours into one bookable schedule. Start with a guide, or go straight to the endpoint you need.

First request in a minute

curl
curl api.chronoskin.example/v4/slots \
  -H "Authorization: Bearer ck_test_..." \
  -d calendar="studio" \
  -d day="2025-03-14"
Follow the quickstart

Libraries

Typed clients for four languages.

TSPyGoRb

Status

The last 30 days, measured at the edge?Timed from six regions every minute, not from inside our own network.

Slots API 99.98%
Webhooks 99.2%
  • Endpoints42Across six resources
  • Median response38 ms4 ms faster than in 4.1
  • Requests a minute600On a live key; 60 on a test key
  • Guides283 being rewritten for 4.2

Ask the people who wrote it

The forum is answered by the same six people who maintain the API, usually within a working day.

IKTMLORS+2 Open the forum

Change notes

Choose what reaches your inbox.

  • Breaking changes
  • New endpoints
  • Monthly digest

Start with a test key

Free, rate limited, and it cannot touch a real calendar.

  1. Docs
  2. Guides
  3. All guides

Guides

Twenty-eight worked examples, each one task from the first request to the last check.

  • Reserve a time for ten minutes while your customer pays, and confirm or release it afterwards.

    Bookings, 8 minutes, by Ines Kovar
  • Describe a week once and let the API answer in the zone of whoever is asking.

    Calendars, 12 minutes, by Tomas Meier
  • Check the signature, answer within five seconds and handle a delivery that arrives twice.

    Webhooks, 6 minutes, by Lena Okafor
  • Cursors, page sizes and why the last page can be empty.

    Getting started, 5 minutes, by Ravi Sen

Two ways through

If you take bookings

Quickstart, holding a slot, payments in between, then webhooks.

4 guides, about 30 minutes

If you show availability

Quickstart, opening hours, time zones, then caching the answers.

4 guides, about 35 minutes

No migration guides yet

Version 4 has not removed anything, so there is nothing to migrate from.

Show all guides
  1. Docs
  2. Guides
  3. Hold a slot

Hold a slot, then confirm it

A hold reserves a time for a short while without booking it. Use one whenever something has to happen between choosing a time and committing to it, such as a payment.

Create the hold

Send the calendar and the instant you want to POST /v4/holds. The answer carries an id and the moment the hold runs out, ten minutes later unless you ask for less.

const hold = await chronoskin.holds.create({
  calendar: "studio",
  start: "2025-03-14T09:30:00Z",
  minutes: 45,
});

What can go wrong

  • The time was taken a moment ago: the answer is 409 with the next free slot.
  • The calendar is closed that day: the answer is 422.
  • A test key can hold at most five slots at once.

Confirm or release

When the payment succeeds, confirm the hold and it becomes a booking. If it fails, release it at once so the time is free again; do not wait for it to run out. The holds reference lists every field.

A hold is not a booking

It is not sent to the customer's calendar and no webhook fires until you confirm it.

Do not extend a hold in a loop

A hold can be extended once. A second attempt answers 409 and the slot is released.

Keep reading

Questions about holds

How long can a hold last?

Between one and thirty minutes. Ten is the default, and one extension of the same length is allowed.

Does a hold count against my rate limit?

Creating one is a request like any other. Holding it costs nothing.

Can two holds overlap?

Only when the calendar allows more than one booking at a time, such as a class with twelve places.

  1. Docs
  2. API reference
  3. Holds

Holds Stable

Reserve a time for a few minutes before it becomes a booking. Six endpoints, all under /v4/holds.

EndpointWhat it doesStateA minute
POST/holdsCreate a holdStable600
GET/holds/:idRead one holdStable1,200
POST/holds/:id/confirmTurn it into a bookingStable600
POST/holds/:id/extendAdd time, onceBeta120
DELETE/holds/:idRelease itStable600
PUT/holds/:idReplace a holdLeaves in 5.060

Parameters of a new hold

POST/holds
calendar, required

The calendar's short name or id. The key must have the bookings scope for it.

start, required

An instant in UTC. A local time without a zone is refused.

minutes

Length of the slot. Defaults to the calendar's own slot length.

expires_in

How long the hold lasts, in minutes, from 1 to 30.

Answer

201
{
  "id": "hold_8fq2",
  "calendar": "studio",
  "minutes": 45,
  "expires_at": "09:40:00Z"
}
  1. Docs
  2. Account
  3. API keys

API keys

A key is shown once, when it is made. Keep it out of the browser and out of your repository.

New key

Give the full address, starting with https.
Shown beside the key in this list, never sent with a request.
Cancel

Your keys

Last used?Rounded to the hour, in your own time zone.
NameKindLast usedRequests today
Booking pageLiveToday, 14:008,412
Back officeLiveToday, 13:001,096
Old checkoutLive, unused41 days ago0
LaptopTestYesterday, 18:0037