Quickstart
This walkthrough assumes an API key for one workspace. If you are building an app that many workspaces connect to, start at Registering an app instead — the calls below are the same, but you get your credential from OAuth rather than from a workspace.
1. Confirm your key works
Code
Check the scopes and property_scope in the response before writing anything
else. Most integration surprises are visible right here.
There is no separate sandbox: every key talks to the workspace's real data, and calendar writes reach the connected OTAs. Build and test with read calls first, then try your first writes on a single property the workspace agrees to use for testing.
2. Read the portfolio
Code
Store each property's id and updated_at. Keep the highest updated_at — it
becomes your sync watermark.
3. Read a calendar
Code
One row per date, with price, minimum stay, arrival/departure rules and
availability already merged. blocked_by tells you why a night is
unavailable — reservation, block or stop_sell.
4. Create a block
Code
This closes the dates on the connected OTA calendars through Noé's normal sync, so it behaves exactly like a block created by staff in the app.
Note editable: true on the response: you can update or delete blocks you
created. Blocks created by the workspace's own staff are readable but not
modifiable by an integration — you should never be able to delete an
owner's personal stay.
5. Update a season of pricing
One call, not ninety:
Code
Returns 207 with a per-item result. Check each one — a failure on range two
does not undo range one.
6. Switch to delta sync
Now that you have a copy, stop re-reading everything:
Code
Page with cursors until has_more is false, then advance your
watermark.
7. Subscribe to webhooks
Code
Save the signing secret from the response — it is shown once. Then read Webhooks for signature verification, which you should not skip.
A production-ready checklist
- Branch on
error.code, never on the message text. - Log
request_idon every failure; it is what support will ask for. - Honour
Retry-Afteron429, and retry5xxwith backoff. - Reuse one
Idempotency-Keyper operation across all of its retries. - Keep an hourly
updated_afterreconciliation running alongside webhooks. - Handle a scope disappearing: a workspace can narrow your access at any time.

