Setting Up the KeyData Connector

Connect KeyData Dashboard into Wazzi via a subscription key — pull portfolio KPIs, OTA channel data, and market benchmarks for your short-term rentals.

May 22, 2026
7 min read

Path: Connectors → KeyData → Configuration

What this connector does

The KeyData connector exposes the KeyData Dashboard public API to Wazzi as MCP tools — portfolio property KPIs (ADR, RevPAR, occupancy, nights sold), per-property calendars, reservations, OTA listing and market data, and compset benchmarking. KeyData reads from your existing PMS (Streamline, Track, etc.) and overlays its own analytics, so the connector gives your AI assistants direct access to KeyData's enriched metrics without going through the dashboard UI.

Wazzi authenticates via a single subscription key. The KeyData public API sits behind Azure API Management — the same key value is sent in both the x-api-key and Ocp-Apim-Subscription-Key headers so it works regardless of which one Azure APM is configured to accept.

The Wazzi connector exposes 16 typed tools plus a universal escape hatch, organized into three groups that mirror KeyData's official Postman collection:

  • Property Manager Data (8 tools) — your portfolio's properties, reservations, calendars, and KPIs at property / portfolio / market levels.
  • OTA Data (6 tools) — Airbnb / Vrbo / Booking listing- and market-level KPIs and availability.
  • Market Data (1 tool) — benchmarking analytics by guest arrival window.

Before you start — getting your subscription key

You'll need:

  • An active KeyData Dashboard subscription tied to your property-manager account.
  • Admin permissions on that KeyData account (or the cooperation of someone who has them).
  1. Sign in to your KeyData Dashboard at pm.keydatadashboard.com as an admin user.
  2. Navigate to your account settings and find the API Keys (or Developer / Subscription Keys) section. If you can't find it, ask your KeyData CSM — for some plan tiers, KeyData provisions the key on request rather than self-serve.
  3. Generate (or copy) the Primary subscription key. The key is a long opaque string. Treat it like a password — it grants read access to all your portfolio data that the subscription tier includes.
  4. If your KeyData plan includes Market Data (OTA listings, market KPIs, benchmarking), confirm that's enabled on this specific key — see Troubleshooting below for the symptom when it isn't.

Reference: KeyData's published API docs live at developer.keydatadashboard.com. The full endpoint surface (including request/response shapes) is documented there, but it's gated behind their Postman documenter and requires JavaScript to render.

What this connector unlocks for your team

Once configured, members with the right MCP permissions can ask Claude / ChatGPT / Cursor things like:

  • "What was our portfolio-wide ADR and occupancy last quarter?"
  • "Show me the top 10 properties by RevPAR for the trailing 12 months."
  • "List reservations for property X over the next 90 days."
  • "How does our market's nightly rate compare to the compset for August?"
  • "Pull the nightly calendar (pricing + availability) for property Y for the next 60 days."

The Market Data and OTA endpoints require a market-data subscription on top of the base property-manager tier. The exact set of available actions depends on (a) your KeyData plan and (b) which MCP toggles are flipped on for the user's group in Wazzi — see Managing Permissions.

Steps — configuring KeyData in Wazzi

1. From the Connectors catalog, click Configure on the KeyData tile.

You'll land on KeyData's Configuration tab:

KeyData connector Configuration tab

2. Fill in the API key field.

  • API Key — the subscription key (Primary key) from your KeyData developer portal. Encrypted at rest in Wazzi.

That's the only required field. The base URL defaults to https://api.keydata.co and works for all standard tenants — leave it alone unless KeyData support has explicitly given you a different host.

3. Click Test Connection.

Wazzi calls GET /api/v1/pm/session on your behalf. On success the health check returns the tenant name attached to the key (e.g. "Connected — Casago Southwest") along with the upstream PMS provider KeyData is reading from (e.g. STREAMLN for Streamline).

4. Click Save Configuration.

KeyData moves to the Active section of the catalog and the dot turns green.

Troubleshooting

  • "Access denied due to invalid subscription key. Make sure to provide a valid key for an active subscription." Azure API Management didn't accept the key value. Most common causes: (a) you pasted a different value (tenant ID, account UUID, etc.) instead of the subscription key; (b) the subscription on that key is inactive / trial-expired; (c) trailing whitespace on the key. Try the value with curl first to isolate: curl -i 'https://api.keydata.co/api/v1/pm/session' -H 'Ocp-Apim-Subscription-Key: <your-key>' — a 200 means the key is good, a 401 means the value is wrong.
  • "You don't have access to these markets" / 403 on OTA or Market Data calls. Your KeyData plan doesn't include market-data access. The Property Manager endpoints work standalone; the OTA listings, OTA market KPIs, and benchmarking endpoints require an upgraded subscription. Contact your KeyData CSM to enable market-data access on your key.
  • "Resource not found" on a path you expect to exist. The path is wrong (KeyData strict-matches paths) — double-check the casing and prefix (/api/v1/pm/..., /api/v1/ota/..., /api/v1/direct/...). Use the call_keydata_endpoint escape-hatch tool to verify the exact path before assuming a bug.
  • KPI endpoints return 400 with "The KpiTypes field is required". KeyData's KPI endpoints (property, portfolio, market) require a kpi_types array specifying which metrics to compute. Common values: ADR, NightsSold, UnitRevenue, PaidOccupancy, RevPAR, TotalRevenue, AverageBookingWindow, AdjustedRevPAR, AdjustedPaidOccupancy. The Wazzi typed tools enforce this in the schema so AI clients can't omit it.
  • Test Connection works but a specific tool returns empty / zero values. Usually means the property or market ID you passed exists in KeyData's universe but doesn't have any reservations / KPIs in the date range. Try a wider range or a known-active property ID from get_pm_lookups.

Best practices

  • Rotate the subscription key periodically. Regenerate in the KeyData portal every quarter and update Wazzi. Old keys can be revoked from the portal.
  • Don't expose the key in browser-side code. The KeyData key has read access to your full portfolio's KPIs — keep it server-side only. Wazzi already does this (encrypted at rest, sent only on outbound calls).
  • Start with the Property Manager endpoints if you're on a base subscription. Those work for every KeyData customer. Add Market Data later if/when your subscription tier is upgraded.
  • Use get_pm_lookups first when scripting. It returns valid property IDs, market UUIDs, and other reference values you'll need to feed into the other tools.
  • Restrict who can invoke KeyData tools in Wazzi. The data isn't destructive, but it includes revenue and occupancy figures sensitive to your portfolio. See Managing Permissions.

Frequently asked questions

Does Wazzi store my API key in plaintext?
No. The subscription key is encrypted at rest with per-org keys and only decrypted at the moment an outbound call is made.

Why does Wazzi send two auth headers?
KeyData's published Postman docs use x-api-key, but the API actually runs behind Azure API Management, which expects Ocp-Apim-Subscription-Key. The Wazzi adapter sends both headers with the same value to ensure compatibility regardless of which one the upstream Azure APM policy is configured to read.

Can I run multiple KeyData accounts?
KeyData is a single-instance connector. If you need to connect more than one KeyData tenant from the same Wazzi org, file a feature request for multi-instance support (similar to how the High Level connector works).

How fresh is the data?
KeyData refreshes its analytics from your PMS overnight. Reservations placed today typically show up in KPI rollups the following morning. The session and lookup endpoints reflect changes in near real-time.

What if I need an endpoint that doesn't have a typed tool?
The call_keydata_endpoint tool is a universal escape hatch — call any KeyData REST path with GET or POST and arbitrary query / body. Useful for new endpoints KeyData ships before we typed-wrap them.

The "deliberate 404" sanity-test result is alarming — is that a bug?
No. The Wazzi smoke-test script intentionally hits a nonexistent path to confirm the connector surfaces real Sage / KeyData errors instead of silently swallowing them. A clean 404 from KeyData proves error propagation works end-to-end.

What's next

Was this article helpful?