Getting started
The API has three doors. They share one key format, one error convention and one set of budgets, but each has its own base URL, its own scopes and its own contract — a key made for one door cannot open another.
| Door | Who holds the key | Where the key is created | Base URL |
|---|---|---|---|
| Agency | The agency’s own systems and partners | Agency console → Partner API | https://api.myrentalcalendar.com/partner/v1 |
| Landlord | A landlord’s accountant or tools | Landlord portal → API access | https://api.myrentalcalendar.com/partner/v1/landlord |
| Cleaning | A cleaning company’s dispatch software | Cleaning portal → API access | https://api.myrentalcalendar.com/partner/v1/cleaning |
The agency console lists the keys of all three doors and can revoke any of them — the agency pays for the API and answers for the data. It can also create a landlord or cleaning key on someone’s behalf. API access is part of the Pro plan (or the Partner API add-on on Grow).
1. Create an API key
Section titled “1. Create an API key”- Sign in to the portal of your door (see the table above).
- Open the API page and create a key. Pick only the scopes your integration needs — reads are pre-selected, writes and personal data are not.
- Copy the key now — it starts with
hr_live_and is shown exactly once. Only a hash is stored on our side.
2. Make your first request
Section titled “2. Make your first request”Every door answers GET …/me for any valid key — it tells you which agency,
which door, whom the key is bound to and how much budget is left:
curl https://api.myrentalcalendar.com/partner/v1/me \ -H "Authorization: Bearer hr_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"{ "audience": "agency", "tenant": { "id": "0190c…", "name": "Marina Stays", "slug": "marina-stays", "currency": "AED", "timezone": "Asia/Dubai" }, "key": { "id": "0190d…", "name": "Channel sync", "prefix": "hr_live_a4f2…", "scopes": ["read:units", "read:availability", "read:rates", "read:bookings"], "createdAt": "2026-09-01T09:12:44.000Z", "expiresAt": null }, "landlord": null, "cleaningCompany": null, "rateLimit": { "requestsPerMinute": 60, "sharedWith": ["rest", "mcp"] }, "quota": { "month": "2026-09", "used": 12480, "quota": 50000, "remaining": 37520, "resetsAt": "2026-10-01T00:00:00.000Z" }}A landlord key answers the same shape with "audience": "landlord" and the
landlord named; a cleaning key with "audience": "cleaning" and the crew.
3. Then, by door
Section titled “3. Then, by door”Agency — list the units, check availability, price a stay:
curl https://api.myrentalcalendar.com/partner/v1/units -H "Authorization: Bearer $KEY"curl "https://api.myrentalcalendar.com/partner/v1/availability?unit=marina-loft-2br&from=2026-09-01&to=2026-10-01" -H "Authorization: Bearer $KEY"curl https://api.myrentalcalendar.com/partner/v1/quote -H "Authorization: Bearer $KEY" \ -H "Content-Type: application/json" \ -d '{ "unit": "marina-loft-2br", "arrival": "2026-09-10", "departure": "2026-09-14" }'Landlord — the units and last month’s statement:
curl https://api.myrentalcalendar.com/partner/v1/landlord/units -H "Authorization: Bearer $KEY"curl "https://api.myrentalcalendar.com/partner/v1/landlord/statement?from=2026-08-01&to=2026-08-31" -H "Authorization: Bearer $KEY"Cleaning — today’s round, then report the first stop:
curl "https://api.myrentalcalendar.com/partner/v1/cleaning/plan?date=2026-09-03" -H "Authorization: Bearer $KEY"curl -X POST "https://api.myrentalcalendar.com/partner/v1/cleaning/jobs/turnover:0191a…/finish" -H "Authorization: Bearer $KEY"Conventions
Section titled “Conventions”| Convention | Rule |
|---|---|
| Base URL | https://api.myrentalcalendar.com plus the door’s prefix |
| Contract | GET <door>/openapi.json — OpenAPI 3.1, generated from the code, readable without a key |
| Dates | ISO YYYY-MM-DD; a night is the date the guest sleeps, stays are [arrival, departure) |
| Amounts | Integers in the agency currency’s minor unit (fils/cents): 45000 = AED 450.00 |
| Errors | JSON with a stable code and a human-readable title — see errors & limits |
| Rate limit | 60 requests per minute per key, shared between REST and MCP |
| Monthly quota | 50,000 requests per agency per month, all keys of all doors together |
Next steps
Section titled “Next steps”- Authentication & keys — doors, scopes, rotation, revocation
- What is covered — every entity of the product and which door exposes it
- Agency API · Landlord API · Cleaning API
- Connect an AI agent via MCP