Quickstart in 5 minutes

Get a sandbox key, list properties, subscribe, read a calendar, send a reservation and receive your first webhook.

CesiSync gives agencies an open API to owners' calendars and prices. When one agency sends a reservation, those dates close for every subscriber within seconds. This guide builds the whole flow end to end in the sandbox, without touching anything live.

1. Get a sandbox key

  1. Sign up with an agency account (you do not have to wait for approval).
  2. Open the Developer page in the panel, switch to Sandbox and click New key.
  3. The key (bp_test_…) is shown only once; save it.
curl
export BP_KEY=bp_test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
curl -s https://api.cesisync.com/v1/me -H "Authorization: Bearer $BP_KEY"

Your sandbox comes with three sample properties made just for you. None is real and only your test key can see them.

2. Query properties

curl
curl -s "https://api.cesisync.com/v1/properties?guests=4&amenities=pool.private" -H "Authorization: Bearer $BP_KEY"

The answer lists each property's id, name, location and your subscription state. Filters: name, place (geoId), type, guests, bedrooms, bathrooms and amenity keys.

3. Subscribe

curl
curl -s -X POST https://api.cesisync.com/v1/properties/$PROPERTY_ID/subscription \
  -H "Authorization: Bearer $BP_KEY" -H "Content-Type: application/json" -d '{}'

If the owner chose "instant approval" the subscription is ACTIVE at once; otherwise you get REQUESTED and a subscription.approved event when the owner decides. In the sandbox you can trigger that yourself with POST /v1/sandbox/simulate/subscription-approve.

4. Calendar, rates and a quote

curl
curl -s "https://api.cesisync.com/v1/properties/$PROPERTY_ID/calendar?from=2027-07-01&to=2027-07-15" -H "Authorization: Bearer $BP_KEY"
curl -s "https://api.cesisync.com/v1/properties/$PROPERTY_ID/availability?checkIn=2027-07-10&checkOut=2027-07-14&guests=4" -H "Authorization: Bearer $BP_KEY"

A day is a night: 2027-07-10 is the night from 10 to 11 July. Stays are half-open [check-in, check-out); the departure day is not included. Amounts are integers in minor units (cents for EUR).

5. Send a reservation

curl
curl -s -X POST https://api.cesisync.com/v1/reservations \
  -H "Authorization: Bearer $BP_KEY" -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"propertyId":"'$PROPERTY_ID'","checkIn":"2027-07-10","checkOut":"2027-07-14","guests":4,"guestName":"Ali Veli","externalRef":"PMS-1042"}'

On success you get 201 and the dates close for everyone. If someone took them in the meantime the answer is 409 dates_unavailable; if the stay breaks the property's rules (minimum nights, arrival day, guest count) it is 422 stay_rules_violated. The Idempotency-Key makes sure retrying the same request does not book twice.

6. Receive a webhook

curl
curl -s -X POST https://api.cesisync.com/v1/webhook-endpoints \
  -H "Authorization: Bearer $BP_KEY" -H "Content-Type: application/json" \
  -d '{"url":"https://your-server.example/hooks/bookingpool"}'
# kaydedin / save the "secret" in the answer, it is shown only once

curl -s -X POST https://api.cesisync.com/v1/sandbox/simulate/other-agency-booking \
  -H "Authorization: Bearer $BP_KEY" -H "Content-Type: application/json" \
  -d '{"propertyId":"'$PROPERTY_ID'","from":"2027-02-10","to":"2027-02-12"}'

We just pretended another agency booked: a signed calendar.updated event arrives at your address. Verifying the signature is covered in the Webhooks guide.

Before going live: once your agency is approved the Live environment opens on the Developer page and you can create a bp_live_… key. The same code works; only the key changes.