Scheduling infrastructure for booking platforms
Your platform sells the service. Tiempo keeps the time.
One API for availability, holds and bookings across every business you host. Exactly one customer wins each slot, and every change reaches you as a signed webhook.
No card, no call. A test key the moment you sign up.
Each resource gets working hours. Ann works 9 to 12, Bob 10 to 1. Everything outside them is closed.
Your platform sends
POST /v1/schedules{ "resource": "res_ann", "effective_from": "2026-11-16", "weeks": [{ "monday": [ { "start": "09:00", "end": "12:00" } ]}]}Tiempo answers
200 OK schedule sch_01m4h2v9 createdYour webhook receives
schedule.createdsignature verified
The hard parts of time, already handled.
Scheduling looks simple until two customers want the same slot. These are the problems every booking platform meets, and what Tiempo does about each.
- race
Two customers tap the same slot
Placing a booking locks the resource first, so exactly one wins and the other gets a clear 409. We test it with 24 simultaneous requests for one slot.
- anyone
“Anyone available”
Send candidates in your order of preference. Tiempo books the first one that’s free, in the same transaction.
- rotas
Rotas, overrides and time off
Weekly or multi-week rotations, dated changes, one-off overrides, holidays and closures, per resource and location, in local time.
- holds
Holding a slot while they pay
Bookings start as holds that expire on their own. Extend, confirm or let them lapse; the time is free again the moment they do.
- seats
Classes and group sessions
Give a booking seats and let attendees take them, with the same hold-then-confirm flow. Never oversold.
- series
Every other Tuesday at 10
Recurring series from standard RRULEs, kept to wall-clock time through daylight saving. A clash skips that one date and tells you.
- conflicts
The rota changed under a booking
Tiempo re-checks the bookings a change affects and flags the ones that no longer fit, with a webhook, so your team can move them.
- events
Keeping your product in step
Every change is an event, recorded in the same transaction and delivered to your webhook signed, retried for three days.
One key for your platform. One account per business.
Your platform holds the API keys and one webhook endpoint. Each business you onboard becomes an account: send its id in the Tiempo-Account header to act on its behalf. Accounts never see each other’s resources or bookings, not even by id.
curl https://api.tiempo.one/v1/bookings \
-H "Authorization: Bearer tpt_…" \
-H "Tiempo-Account: acct_01m40c7y…" \
-d '{"segments": [{"resources": ["res_ann", "res_bob"],
"start": "2026-11-16T10:00:00Z", "end": "2026-11-16T10:45:00Z"}]}'
- Soho Hair
acct_01m40e0q - Fade Barbers
acct_01m4063z - Riverside Padel
acct_01m40c7y - Lumen Yoga
acct_01m40ibx - and every business you onboard next
From sign-up to first booking in three calls.
Test mode is open the moment you sign up. Live mode unlocks when you tell us about your company.
- 01
Get a test key
Sign up and your platform comes with a test key, shown once. No card, no call.
Create your platform - 02
Add a business and its people
POST /v1/accounts { "name": "Soho Hair", "timezone": "Europe/London" } POST /v1/resources Tiempo-Account: acct_… { "name": "Ann", "type": "worker" } - 03
Find a time and book it
POST /v1/availability { "from": "…", "to": "…", "segments": [{ "resources": ["res_ann"], "duration_minutes": 45 }] } POST /v1/bookings
Tiempo does time. Everything else stays yours.
Services, prices, payments, customers and messages live in your product, under your brand. Attach your own ids as metadata, react to webhooks, and run your business your way.
Get test keys