Loading, please wait

UAESY.comOAK IT Solutions L.L.C.
UAESY

UAESY API

Read your properties, tenants, contracts, payments and expenses from your own programs: accounting, a CRM or a spreadsheet. The API is read-only and answers in JSON.

Access and price

API access is an add-on for owners: AED 100 a month, charged daily from the balance. The owner switches it on in Settings → API and makes keys there. A key is shown once; keep it secret.

Authentication

Send the key in the Authorization header of every request. A key reads the companies its owner owns, or only those picked for it, and never writes. Changing or resetting the owner's password stops every key made before it.

curl https://uaeasy.ae/api/public/v1/companies \
  -H "Authorization: Bearer uaesy_live_..."

Lists and paging

Lists return an object with data (the rows) and nextCursor. Ask for up to 200 rows with limit (100 by default); pass nextCursor as cursor for the next page until it comes back null. updatedSince returns only rows changed since a moment, for a nightly sync. Deleted rows simply stop appearing, so re-read the full list now and then.

{
  "data": [ { "id": "…", … } ],
  "nextCursor": "6f1d…"
}

Money, dates and ids

Amounts are whole numbers in fils: 100 fils = 1 AED. VAT is given apart from the net amount. Dates are YYYY-MM-DD, moments are ISO 8601 with a time zone, ids are UUIDs.

Limits and errors

Each key may make 60 requests a minute and 10,000 a day. An error comes back as an object with detail, and one of these codes:

401No key, or the key is unknown, revoked or expired.
402API access is switched off, or the balance has run out.
403The key reaches no company its owner still owns.
404No such record in the key's companies.
422A parameter is not valid: detail says which.
429Over a limit: wait the seconds in the Retry-After header.

Methods

List companies

GET/api/public/v1/companies

The companies this key reads: those you own, or the ones you picked for the key, whose account has API access on. Use their id as companyId to narrow the other lists to one company.

Response

A list of Company:

FieldTypeDescription
iduuidCompany id; pass it as companyId to other lists.
namestringCompany name.

Example

curl "https://uaeasy.ae/api/public/v1/companies" \
  -H "Authorization: Bearer uaesy_live_..."

List buildings

GET/api/public/v1/buildings

Buildings registered as a whole, with their number of units and floors. Units inside a building carry its id as buildingId in the properties list.

Parameters

FieldTypeDescription
companyIduuid optionalOnly this company; default all of the key's companies
updatedSincedate-time optionalOnly rows changed at or after this moment (ISO 8601)
cursoruuid optionalnextCursor from the previous page
limitinteger optionalRows per page, 1 to 200; 100 by default.

Response

A page: data holds the Building rows, nextCursor the next page. Each Building:

FieldTypeDescription
iduuidBuilding id.
companyIduuidCompany the building belongs to.
numberintegerThe building's number in UAESY.
namestringBuilding name.
buildingNumberstring or nullBuilding number from the title deed or Makani, if entered.
emiratestringEmirate.
unitCountintegerUnits the building has.
floorCountinteger or nullFloors, if entered.
updatedAtdate-timeLast change.

Example

curl "https://uaeasy.ae/api/public/v1/buildings" \
  -H "Authorization: Bearer uaesy_live_..."

List properties

GET/api/public/v1/properties

Units and stand-alone properties, with their address, size, status and prices. Properties in the trash are left out. wholeBuilding marks the hidden unit that stands for a building leased as one.

Parameters

FieldTypeDescription
companyIduuid optionalOnly this company; default all of the key's companies
updatedSincedate-time optionalOnly rows changed at or after this moment (ISO 8601)
buildingIduuid optionalOnly units of this building.
cursoruuid optionalnextCursor from the previous page
limitinteger optionalRows per page, 1 to 200; 100 by default.

Response

A page: data holds the Property rows, nextCursor the next page. Each Property:

FieldTypeDescription
iduuidProperty id.
companyIduuidCompany the property belongs to.
buildingIduuid or nullThe building it is in, when it is a unit of one.
numberintegerThe property's number in UAESY.
namestringName shown in UAESY.
kindstringResidential or commercial.
typestringApartment, villa, office and so on.
wholeBuildingbooleanThe unit that stands for a whole building leased as one
statusstringVacant, occupied and so on.
emiratestringEmirate.
communitystringCommunity or district.
areastring or nullArea within the community.
buildingstring or nullBuilding name as written on the property.
unitNumberstring or nullUnit number.
floorstring or nullFloor.
sizeSqftnumber or nullSize in square feet.
sizeSqmnumber or nullSize in square metres.
bedroomsinteger or nullBedrooms.
bathroomsinteger or nullBathrooms.
furnishedstringFurnished, semi-furnished or unfurnished.
dldTitleDeedNostring or nullDLD title deed number.
dewaPremiseNostring or nullDEWA premise number.
makaniNostring or nullMakani number.
purchasePriceFilsinteger or nullPurchase price, fils.
purchaseDatedate or nullPurchase date.
forRentbooleanListed for rent.
rentPriceFilsinteger or nullAsking rent a year, fils.
forSalebooleanListed for sale.
salePriceFilsinteger or nullAsking price, fils.
createdAtdate-timeWhen it was added.
updatedAtdate-timeLast change.

Example

curl "https://uaeasy.ae/api/public/v1/properties" \
  -H "Authorization: Bearer uaesy_live_..."

Get a property

GET/api/public/v1/properties/{property_id}

One property by its id; 404 when it is not in your companies or is in the trash.

Parameters

FieldTypeDescription
property_iduuid requiredThe id of the record, from its list.

Response

One Property:

FieldTypeDescription
iduuidProperty id.
companyIduuidCompany the property belongs to.
buildingIduuid or nullThe building it is in, when it is a unit of one.
numberintegerThe property's number in UAESY.
namestringName shown in UAESY.
kindstringResidential or commercial.
typestringApartment, villa, office and so on.
wholeBuildingbooleanThe unit that stands for a whole building leased as one
statusstringVacant, occupied and so on.
emiratestringEmirate.
communitystringCommunity or district.
areastring or nullArea within the community.
buildingstring or nullBuilding name as written on the property.
unitNumberstring or nullUnit number.
floorstring or nullFloor.
sizeSqftnumber or nullSize in square feet.
sizeSqmnumber or nullSize in square metres.
bedroomsinteger or nullBedrooms.
bathroomsinteger or nullBathrooms.
furnishedstringFurnished, semi-furnished or unfurnished.
dldTitleDeedNostring or nullDLD title deed number.
dewaPremiseNostring or nullDEWA premise number.
makaniNostring or nullMakani number.
purchasePriceFilsinteger or nullPurchase price, fils.
purchaseDatedate or nullPurchase date.
forRentbooleanListed for rent.
rentPriceFilsinteger or nullAsking rent a year, fils.
forSalebooleanListed for sale.
salePriceFilsinteger or nullAsking price, fils.
createdAtdate-timeWhen it was added.
updatedAtdate-timeLast change.

Example

curl "https://uaeasy.ae/api/public/v1/properties/3f2c9a1e-5b7d-4c21-9e0a-1d2b3c4d5e6f" \
  -H "Authorization: Bearer uaesy_live_..."

List tenants

GET/api/public/v1/tenants

People and companies who rent from you, with their contact details. Emirates ID and passport numbers are never sent.

Parameters

FieldTypeDescription
companyIduuid optionalOnly this company; default all of the key's companies
updatedSincedate-time optionalOnly rows changed at or after this moment (ISO 8601)
cursoruuid optionalnextCursor from the previous page
limitinteger optionalRows per page, 1 to 200; 100 by default.

Response

A page: data holds the Tenant rows, nextCursor the next page. Each Tenant:

FieldTypeDescription
iduuidTenant id.
companyIduuidCompany the tenant rents from.
typestringperson or company
namestringFull name or company name.
phonestring or nullPhone in international format.
emailstring or nullEmail.
nationalitystring or nullNationality, for a person.
companyRegNostring or nullTrade licence number, for a company.
createdAtdate-timeWhen it was added.
updatedAtdate-timeLast change.

Example

curl "https://uaeasy.ae/api/public/v1/tenants" \
  -H "Authorization: Bearer uaesy_live_..."

Get a tenant

GET/api/public/v1/tenants/{tenant_id}

One tenant by its id.

Parameters

FieldTypeDescription
tenant_iduuid requiredThe id of the record, from its list.

Response

One Tenant:

FieldTypeDescription
iduuidTenant id.
companyIduuidCompany the tenant rents from.
typestringperson or company
namestringFull name or company name.
phonestring or nullPhone in international format.
emailstring or nullEmail.
nationalitystring or nullNationality, for a person.
companyRegNostring or nullTrade licence number, for a company.
createdAtdate-timeWhen it was added.
updatedAtdate-timeLast change.

Example

curl "https://uaeasy.ae/api/public/v1/tenants/3f2c9a1e-5b7d-4c21-9e0a-1d2b3c4d5e6f" \
  -H "Authorization: Bearer uaesy_live_..."

List contracts

GET/api/public/v1/contracts

Leases with their term, rent, VAT, deposit and status. Filter by status, propertyId or tenantId. Contracts of properties in the trash are left out.

Parameters

FieldTypeDescription
companyIduuid optionalOnly this company; default all of the key's companies
updatedSincedate-time optionalOnly rows changed at or after this moment (ISO 8601)
statusstring optionalOnly rows in this status. draft · pending_signature · active · expired · terminated · renewed
propertyIduuid optionalOnly rows of this property.
tenantIduuid optionalOnly rows of this tenant.
cursoruuid optionalnextCursor from the previous page
limitinteger optionalRows per page, 1 to 200; 100 by default.

Response

A page: data holds the Contract rows, nextCursor the next page. Each Contract:

FieldTypeDescription
iduuidContract id.
companyIduuidCompany of the contract.
propertyIduuidThe property leased.
tenantIduuidThe tenant.
numberstringContract number shown in UAESY.
statusstringWhere the lease stands.
startDatedateFirst day of the lease.
endDatedateLast day of the lease, rent-free days included.
graceDaysintegerRent-free days at the start.
annualRentFilsintegerRent a year before VAT, fils.
vatRateBpsintegerVAT in basis points: 500 = 5%
securityDepositFilsintegerSecurity deposit, fils.
chequeCountintegerNumber of payments the rent is split into.
archivedbooleanHistory entered after the fact
ownerUsebooleanThe owner uses the unit: a term only, no rent
renewedFromIduuid or nullThe contract this one renews.
terminatedAtdate-time or nullWhen it was ended early.
createdAtdate-timeWhen it was added.
updatedAtdate-timeLast change.

Example

curl "https://uaeasy.ae/api/public/v1/contracts" \
  -H "Authorization: Bearer uaesy_live_..."

Get a contract

GET/api/public/v1/contracts/{contract_id}

One contract with its whole payment schedule in payments, ordered by due date.

Parameters

FieldTypeDescription
contract_iduuid requiredThe id of the record, from its list.

Response

One ContractDetail:

FieldTypeDescription
iduuidContract id.
companyIduuidCompany of the contract.
propertyIduuidThe property leased.
tenantIduuidThe tenant.
numberstringContract number shown in UAESY.
statusstringWhere the lease stands.
startDatedateFirst day of the lease.
endDatedateLast day of the lease, rent-free days included.
graceDaysintegerRent-free days at the start.
annualRentFilsintegerRent a year before VAT, fils.
vatRateBpsintegerVAT in basis points: 500 = 5%
securityDepositFilsintegerSecurity deposit, fils.
chequeCountintegerNumber of payments the rent is split into.
archivedbooleanHistory entered after the fact
ownerUsebooleanThe owner uses the unit: a term only, no rent
renewedFromIduuid or nullThe contract this one renews.
terminatedAtdate-time or nullWhen it was ended early.
createdAtdate-timeWhen it was added.
updatedAtdate-timeLast change.
paymentsarray of PaymentThe payment schedule, by due date.

Example

curl "https://uaeasy.ae/api/public/v1/contracts/3f2c9a1e-5b7d-4c21-9e0a-1d2b3c4d5e6f" \
  -H "Authorization: Bearer uaesy_live_..."

List payments

GET/api/public/v1/payments

Rent payments of every contract, and other incomes of a unit (kind = income, no contract). Filter by status, contract, property or a due-date range: dueFrom=2026-01-01&dueTo=2026-12-31&status=received gives what came in this year.

Parameters

FieldTypeDescription
companyIduuid optionalOnly this company; default all of the key's companies
updatedSincedate-time optionalOnly rows changed at or after this moment (ISO 8601)
statusstring optionalOnly rows in this status. due · received · cleared · returned · bounced · cancelled
contractIduuid optionalOnly rows of this contract.
propertyIduuid optionalOnly rows of this property.
dueFromdate optionalOnly rows due on or after this day.
dueTodate optionalOnly rows due on or before this day.
cursoruuid optionalnextCursor from the previous page
limitinteger optionalRows per page, 1 to 200; 100 by default.

Response

A page: data holds the Payment rows, nextCursor the next page. Each Payment:

FieldTypeDescription
iduuidPayment id.
companyIduuidCompany of the payment.
kindstringrent of a contract, or another income of a unit rent · income
contractIduuid or nullnull for kind=income
propertyIduuidThe property it is for.
numberintegerPayment number shown in UAESY.
dueDatedateDay it is due.
amountNetFilsintegerAmount before VAT, fils.
vatFilsintegerVAT, fils.
methodstring or nullCheque, cash, bank transfer or card, once known.
statusstringWhere the payment stands.
receivedDatedate or nullDay it was received.
receiptNumberstring or nullReceipt number, if one was issued.
updatedAtdate-timeLast change.

Example

curl "https://uaeasy.ae/api/public/v1/payments?status=received&dueFrom=2026-01-01&limit=50" \
  -H "Authorization: Bearer uaesy_live_..."

List expenses

GET/api/public/v1/expenses

Expenses of your units and buildings, planned, pending or paid, with net amount, VAT, payee and invoice. Filter by status, propertyId or a due-date range.

Parameters

FieldTypeDescription
companyIduuid optionalOnly this company; default all of the key's companies
updatedSincedate-time optionalOnly rows changed at or after this moment (ISO 8601)
statusstring optionalOnly rows in this status. planned · pending · paid
propertyIduuid optionalOnly rows of this property.
dueFromdate optionalOnly rows due on or after this day.
dueTodate optionalOnly rows due on or before this day.
cursoruuid optionalnextCursor from the previous page
limitinteger optionalRows per page, 1 to 200; 100 by default.

Response

A page: data holds the Expense rows, nextCursor the next page. Each Expense:

FieldTypeDescription
iduuidExpense id.
companyIduuidCompany of the expense.
propertyIduuid or nullThe property it is for, if any.
buildingIduuid or nullThe building it is for, when it is for a building as a whole.
numberintegerExpense number shown in UAESY.
categorystringCategory, such as maintenance or service charges.
descriptionstringWhat it is for.
payeestring or nullWho is paid.
amountNetFilsintegerAmount before VAT, fils.
vatFilsintegerVAT, fils.
dueDatedateDay it is due.
paidDatedate or nullDay it was paid.
statusstringPlanned, pending or paid.
methodstring or nullHow it was paid.
invoiceNumberstring or nullSupplier's invoice number.
invoiceDatedate or nullSupplier's invoice date.
createdAtdate-timeWhen it was added.
updatedAtdate-timeLast change.

Example

curl "https://uaeasy.ae/api/public/v1/expenses" \
  -H "Authorization: Bearer uaesy_live_..."