Landlords
The agency’s view of its landlords: master data, every tenure (which unit, which share, which commission, from when to when) and the statement builder that the landlord portal and the printed PDF use. Useful for an accounting export or a portfolio dashboard on the agency’s side.
A landlord who wants their own figures does not need the agency’s key: the Landlord API gives them a key bound to themselves.
GET /partner/v1/landlords
Section titled “GET /partner/v1/landlords”Scope read:landlords.
{ "landlords": [ { "id": "0188a…", "name": "Hassan Al Mansoori", "email": "hassan@example.com", "phone": "+971 50 987 6543", "locale": "en", "commissionPct": null, "units": [ { "unitSlug": "marina-loft-2br", "unitName": "Marina Loft · 2BR", "sharePct": 100, "commissionPct": 18, "validFrom": "2024-03-01", "validTo": null, "current": true }, { "unitSlug": "jbr-studio-sea", "unitName": "JBR Studio · Sea", "sharePct": 100, "commissionPct": null, "validFrom": "2023-01-01", "validTo": "2025-06-30", "current": false } ] } ]}| Field | Notes |
|---|---|
commissionPct (landlord) | Landlord-level agency fee override; null = the agency default applies |
units[].commissionPct | Unit-level override; null = inherit (landlord override → agency default). The fee that applies to a stay is resolved on the statement |
units[].validFrom / validTo | The tenure [validFrom, validTo); a sale closes one row and opens another for the buyer |
units[].current | Held today |
Internal notes about a landlord are not returned.
GET /partner/v1/landlords/:id
Section titled “GET /partner/v1/landlords/:id”Scope read:landlords. One landlord, same shape. 404 NOT_FOUND otherwise.
GET /partner/v1/landlords/:id/statement
Section titled “GET /partner/v1/landlords/:id/statement”Scope read:landlords. The landlord’s statement for [from, to] — both dates
inclusive, from ≤ to. Stays are attributed to the landlord whose tenure covers
the arrival date.
curl "https://api.myrentalcalendar.com/partner/v1/landlords/0188a…/statement?from=2026-08-01&to=2026-08-31" \ -H "Authorization: Bearer $KEY"{ "owner": { "id": "0188a…", "name": "Hassan Al Mansoori", "email": "hassan@example.com" }, "period": { "from": "2026-08-01", "to": "2026-08-31" }, "currency": "AED", "units": [ { "id": "0190c…", "name": "Marina Loft · 2BR", "area": "Dubai Marina" } ], "revenue": { "lines": [ { "bookingId": "0191a…", "unitId": "0190c…", "unitName": "Marina Loft · 2BR", "arrival": "2026-08-10", "departure": "2026-08-17", "nights": 7, "source": "airbnb", "status": "closed", "gross": 315000, "systemGross": 330000, "deviation": -15000, "adjustments": [ { "kind": "discount", "label": "Returning guest", "amount": -15000, "reasonCategory": "loyalty", "promoId": null, "promoName": null } ], "commissionPct": 18, "commissionAmount": 56700, "ownerShare": 258300 } ], "byUnit": [ { "unitId": "0190c…", "unitName": "Marina Loft · 2BR", "bookings": 3, "nights": 19, "gross": 812000, "agencyFees": 146160, "ownerShare": 665840 } ] }, "costs": { "lines": [ { "costId": "…", "unitName": "Marina Loft · 2BR", "date": "2026-08-01", "category": "Electricity", "categoryGroup": "utilities", "label": "DEWA August", "recurrence": "monthly", "amount": 42000, "chargedTo": "owner", "origin": "unit", "source": "owner" } ], "byCategory": [ { "category": "Electricity", "owner": 42000, "agency": 0 } ], "ownerTotal": 42000, "agencyCoveredTotal": 35000 }, "payouts": [ { "id": "…", "bookingId": "0191a…", "amount": 258300, "paidOn": "2026-08-25", "reference": "AUG-1" } ], "kpis": { "cancellations": 1, "cancelledLostShare": 41000, "rejectedBookings": 0, "expiredHolds": 2, "requestsRejected": 1, "requestsUnanswered": 0, "complaints": 0, "ownerStays": 1, "ownerStayNights": 4 }, "totals": { "gross": 812000, "agencyFees": 146160, "ownerShare": 665840, "ownerCosts": 42000, "agencyCoveredCosts": 35000, "netRent": 623840, "paidOut": 258300, "openBalance": 365540, "deviationTotal": -15000, "discountsByCategory": { "loyalty": -15000 }, "campaigns": [] }}The shape is the statement engine’s own and may gain fields; the ones shown are
stable. totals.openBalance = netRent − paidOut is the figure a landlord asks
about. 400 VALIDATION when from is after to, 404 NOT_FOUND for an
unknown landlord.