# Tiempo, Hapio and AvailEngine: headless booking engines compared – Tiempo

> How Tiempo compares with Hapio and AvailEngine, the other booking APIs for developers: resources, holds that expire, multi-resource bookings, recurring series, and creating businesses by API.

Source: https://tiempo.one/docs/vs-headless-engines

Checked against each product’s own docs on 6 October 2026.

These are the APIs that, like Tiempo, schedule _bookable things_ rather than people’s calendars: staff, rooms, tables, courts. If you’re choosing between them, the differences are in the details: what happens to a hold when a customer leaves, whether a service can need two resources at once, and how you add the businesses on your platform.

(Recal, sometimes listed alongside them, is a unified calendar-sync API: it connects people’s Google and Outlook calendars. It belongs with the [calendar APIs](https://tiempo.one/docs/vs-calendar-apis).)

## At a glance

Tiempo

Hapio

AvailEngine

Bookable things

Resources with capacity

Resources with a simultaneous-booking limit

Resources (staff, tables) with party-size capacity

Add a business

By API: one account each

A project per tenant, made in the portal

By API, with a scoped key

Hold while the customer pays

Expires on its own (15 min default)

Temporary bookings, which never expire on their own

Payment holds on deposits; slot holds not documented

Several resources in one booking

Yes, atomic (stylist + room)

Booking groups (coach + court)

Not documented

“Anyone available”

Candidates in your order, chosen atomically

Random, priority or equalised selection

Returned per slot

Recurring bookings

Series (RRULE), edited in place

Not documented

Not documented

Classes with places

Sessions with seats and attendees

Simultaneous-booking limit

Not documented

Test and live

Separate keys and data

Separate free projects

avail_test_ / avail_live_ keys

Signed webhooks

Yes, retried for 3 days

Yes, retried for 24 h

Yes

Each product’s column reflects its own documentation on the date above. See the sources at the end.

## Hapio

The closest to Tiempo’s model: resources, recurring schedules with blocks, services, locations, automatic resource selection, booking groups for things like a coach and a court, and signed webhooks including reminders. It also has flexible and day-based services, React booking components and a PHP SDK, with request-based pricing per project.

Two differences matter for a payment-first checkout. Its temporary bookings occupy time but, in its own words, stay temporary “indefinitely” unless you finalise, cancel or delete them, so your app must expire them. And each tenant is a project created in Hapio’s portal, so onboarding a business isn’t an API call.

## AvailEngine

Aimed at developers serving many businesses: businesses are created by API with scoped keys, and it bundles Stripe deposits, a waitlist, customer records and Google Calendar sync, at a low entry price. Its model leans towards restaurants and party sizes; its “holds” are payment authorisations rather than slot holds. Its own pages disagree on the free tier (25 or 50 bookings a month).

## Where Tiempo fits

Tiempo is only scheduling, done thoroughly: holds that lapse on their own and can’t be confirmed late, atomic multi-resource and “anyone” bookings under per-resource locks, rotas and overrides, buffers, classes, series that survive clock changes, and conflicts flagged when hours change. Payments, customers and reminders stay in your platform.

Read [why scheduling is harder than it looks](https://tiempo.one/docs/double-booking), or try the [quickstart](https://tiempo.one/docs/quickstart).

## Sources

-   [Hapio](https://hapio.io/)
-   [Hapio API definition](https://docs.hapio.io/hapio-api-definition/Hapio-API.v1.yaml)
-   [Hapio pricing](https://hapio.io/pricing/)
-   [AvailEngine llms.txt](https://api.availengine.com/llms.txt)
-   [AvailEngine OpenAPI](https://api.availengine.com/openapi.json)
-   [Recal docs](https://docs.recal.dev/core)

The machine-readable description is at [/openapi.json](https://tiempo.one/openapi.json). Try calls in [Swagger UI](https://tiempo.one/swagger-ui.html).[Tiempo home](https://tiempo.one/)[Dashboard](https://tiempo.one/app)
