sutempo.

For developers and integrators

A booking API, with an MCP server on top.

Everything the back office does goes through the same public API: availability, appointments, clients, services, resources, schedules, payments. There is no second-class API.

The full OpenAPI description is served in the open, with no account and no form.

Read these first

Authentication is a bearer token in the Authorization header. Every key carries explicit permissions, and a public widget key can only do what a visitor is allowed to do.

  • https://sutempo.com/openapi.json : the complete OpenAPI description of the API, served under /v1
  • https://sutempo.com/.well-known/platform-capabilities.json : the capability manifest of this deployment
  • https://sutempo.com/llms.txt : the same summary, for an assistant
  • https://sutempo.com/console : the console that issues API keys, after sign-in

The shortest path to a booking

Read availability, place a hold while payment happens, then confirm. Slots are never computed on the client: the server only offers starts that are still in the future, and a hold stops two customers taking the same slot.

Availability, then a hold
curl -H "Authorization: Bearer $SUTEMPO_KEY" \
  "https://sutempo.com/v1/business-tenants/$TENANT/availability?serviceId=$SERVICE&from=2026-10-01"

curl -X POST -H "Authorization: Bearer $SUTEMPO_KEY" \
  -H "Content-Type: application/json" -H "Idempotency-Key: $(uuidgen)" \
  -d '{"serviceId":"...","startsAt":"2026-10-01T09:00:00Z"}' \
  "https://sutempo.com/v1/business-tenants/$TENANT/appointments/hold"

The MCP server

The @platform/mcp-server package exposes a business's configuration as tools an agent can call. The contract makes preview mandatory before apply: an agent reads the configuration, proposes a change, shows its effects, and only then applies it.

That is not a formality. The preview returns the list of destructive changes, and the apply is refused if the configuration moved between the two calls.

  • describe_capabilities, list_business_tenants, list_tenant_modules: what this deployment can do
  • get_current_blueprint, get_blueprint_version: the current state and its version
  • preview_blueprint_changes then apply_blueprint_changes: propose, then apply
  • schedule_group_sessions, cancel_group_session: group classes
  • get_translation_status, set_translation_override: the languages of the public page

Putting booking inside a site

Two routes, depending on what you are building. The embeddable widget drops into an existing site with a public key and inherits the page's language. The JavaScript SDK and the underlying API let you build the whole flow yourself, payment included.

Either way, payments go to the business's Stripe account, never to an intermediary.

Frequently asked questions

Is the API charged separately?

No. API access follows the business's subscription. There is no developer tariff and no feature gap against the back office.

How do I get a key?

From the developer console, after signing in to the business account. Keys can be created, rotated and revoked through the API as well as the console.

Are writes idempotent?

Yes. Writes accept an Idempotency-Key header, which makes a retry after a network failure safe.

Can the MCP server change a business without oversight?

No. The contract requires a preview call before an apply, and the apply fails if the configuration changed in between.

Are there webhooks?

Yes. Webhook delivery is part of the platform and is configured like the rest, through the API.

Start for free.

Create an account

Solo is free, no card required. Établissement and Membership come with a 30 day trial; at the end of it the business falls back to Solo with nothing lost.