---
title: "Get Booking Sync State Endpoint"
method: GET
path: "/api/v1/bookings/sync-state"
tags: ["bookings"]
---

# Get Booking Sync State Endpoint

`GET /api/v1/bookings/sync-state`

## Response `200`

Successful Response

- BookingSyncStateResponse — Per-property ingestion/backfill progress (PR 8 state model). The UI derives pre-sync / backfilling / populated states from THESE rows plus query status — never from an empty items array (settled ledger). No rows at all = the integration has never synced (pre-sync).
  - `properties` BookingSyncStateRead[], required
    - `id` string, uuid, required
    - `property_code` string, required
    - `cursor_last_mod` string, date-time, nullable, required
    - `last_synced_at` string, date-time, nullable, required
    - `last_error` string, nullable, required
    - `backfill_started_at` string, date-time, nullable, required
    - `backfill_completed_at` string, date-time, nullable, required
    - `backfill_imported_count` integer, required
    - `tenant_id` string, uuid, required
  - `feed` BookingFeedRead, required — The connected integration that delivers this tenant's bookings. Identity only. Freshness is deliberately NOT repeated here: the same response carries per-property ``last_synced_at``, and a second answer to "how current is this?" is a second thing to keep in sync.
    - `integration_key` string, required
    - `display_name` string, required

---

[API](https://skmtc.dev/getanana/apis/cleon-api.md) · [All operations](https://skmtc.dev/getanana/apis/cleon-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/getanana/cleon-api/revisions/c0f54348e251/schema)
