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.

Playing

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 created

Your 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"}]}'
Your platformAPI keys, one webhook endpoint, every event
  • Soho Hairacct_01m40e0q
  • Fade Barbersacct_01m4063z
  • Riverside Padelacct_01m40c7y
  • Lumen Yogaacct_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.

  1. 01

    Get a test key

    Sign up and your platform comes with a test key, shown once. No card, no call.

    Create your platform
  2. 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" }
    
  3. 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