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
- Sign up with an agency account (you do not have to wait for approval).
- Open the Developer page in the panel, switch to Sandbox and click New key.
- The key (bp_test_…) is shown only once; save it.
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 -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 -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 -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 -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 -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.