Real Estate template

UAE Tenancy Contract

Bilingual EN/AR Dubai-style tenancy contract aligned with RERA / Ejari fields — parties, premises, term, rent + cheque schedule, standard obligations.

Pro, Business & Scale plansCountry: AELanguage: ar+enUAE-RERA
slug: uae-tenancy-contractRendered with sample data
01

Quick start

Reference the template by its slug and pass your data. The same call works from any language; pick whichever fits your stack. Replace $KAMY_API_KEY with a key from the dashboard.

curl
curl https://kamy.dev/api/v1/render \
  -H "Authorization: Bearer $KAMY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "templateSlug": "uae-tenancy-contract",
    "data": {
      "contractNumber": "TC-2026-00184",
      "issueDate": "2026-04-15",
      "ejariPropertyId": "EJ-DXB-1102-04-1801",
      "landlord": {
        "name": "Khalid bin Ahmed Al-Falasi",
        "idType": "Emirates ID",
        "idNumber": "784-1981-1234567-8",
        "phone": "+971 50 555 0184",
        "email": "[email protected]",
        "address": "Villa 12, Jumeirah 1, Dubai"
      },
      "tenant": {
        "name": "Sara M. Reyes",
        "idType": "Passport",
        "idNumber": "P12345678",
        "phone": "+971 56 444 0190",
        "email": "[email protected]",
        "nationality": "Filipino"
      },
      "premises": {
        "propertyType": "Apartment",
        "usage": "Residential",
        "plot": "1102-1801",
        "address": "Tower 1, Apt 1801, Burj Khalifa Boulevard, Downtown Dubai",
        "areaSqft": 1240,
        "rooms": "2 BR + maid",
        "parking": 1,
      // …
    }
  }'
node.js
import { Kamy } from "@kamydev/sdk";

const kamy = new Kamy({ apiKey: process.env.KAMY_API_KEY! });

const { url } = await kamy.render({
  templateSlug: "uae-tenancy-contract",
  data: {
    "contractNumber": "TC-2026-00184",
    "issueDate": "2026-04-15",
    "ejariPropertyId": "EJ-DXB-1102-04-1801",
    "landlord": {
      "name": "Khalid bin Ahmed Al-Falasi",
      "idType": "Emirates ID",
      "idNumber": "784-1981-1234567-8",
      "phone": "+971 50 555 0184",
      "email": "[email protected]",
      "address": "Villa 12, Jumeirah 1, Dubai"
    },
    "tenant": {
      "name": "Sara M. Reyes",
      "idType": "Passport",
      "idNumber": "P12345678",
      "phone": "+971 56 444 0190",
      "email": "[email protected]",
      "nationality": "Filipino"
    },
    "premises": {
      "propertyType": "Apartment",
      "usage": "Residential",
      "plot": "1102-1801",
      "address": "Tower 1, Apt 1801, Burj Khalifa Boulevard, Downtown Dubai",
      "areaSqft": 1240,
      "rooms": "2 BR + maid",
      "parking": 1,
    // …
  },
});

console.log(url); // signed URL, valid for 1 hour
python
import os, requests

resp = requests.post(
    "https://kamy.dev/api/v1/render",
    headers={"Authorization": f"Bearer {os.environ['KAMY_API_KEY']}"},
    json={
        "templateSlug": "uae-tenancy-contract",
        "data": {
          "contractNumber": "TC-2026-00184",
          "issueDate": "2026-04-15",
          "ejariPropertyId": "EJ-DXB-1102-04-1801",
          "landlord": {
            "name": "Khalid bin Ahmed Al-Falasi",
            "idType": "Emirates ID",
            "idNumber": "784-1981-1234567-8",
            "phone": "+971 50 555 0184",
            "email": "[email protected]",
            "address": "Villa 12, Jumeirah 1, Dubai"
          },
          "tenant": {
            "name": "Sara M. Reyes",
            "idType": "Passport",
            "idNumber": "P12345678",
            "phone": "+971 56 444 0190",
            "email": "[email protected]",
            "nationality": "Filipino"
          },
          "premises": {
            "propertyType": "Apartment",
            "usage": "Residential",
            "plot": "1102-1801",
            "address": "Tower 1, Apt 1801, Burj Khalifa Boulevard, Downtown Dubai",
            "areaSqft": 1240,
            "rooms": "2 BR + maid",
            "parking": 1,
          // …
        },
    },
)
resp.raise_for_status()
print(resp.json()["url"])
02

Sample payload

The full sample data the live preview above renders from. Use it as a starting point for your own integration — every field is optional except those marked required in the schema below.

json
{
  "contractNumber": "TC-2026-00184",
  "issueDate": "2026-04-15",
  "ejariPropertyId": "EJ-DXB-1102-04-1801",
  "landlord": {
    "name": "Khalid bin Ahmed Al-Falasi",
    "idType": "Emirates ID",
    "idNumber": "784-1981-1234567-8",
    "phone": "+971 50 555 0184",
    "email": "[email protected]",
    "address": "Villa 12, Jumeirah 1, Dubai"
  },
  "tenant": {
    "name": "Sara M. Reyes",
    "idType": "Passport",
    "idNumber": "P12345678",
    "phone": "+971 56 444 0190",
    "email": "[email protected]",
    "nationality": "Filipino"
  },
  "premises": {
    "propertyType": "Apartment",
    "usage": "Residential",
    "plot": "1102-1801",
    "address": "Tower 1, Apt 1801, Burj Khalifa Boulevard, Downtown Dubai",
    "areaSqft": 1240,
    "rooms": "2 BR + maid",
    "parking": 1,
    "furnished": "Unfurnished",
    "makaniNumber": "2624 49452"
  },
  "term": {
    "startDate": "2026-05-01",
    "endDate": "2027-04-30",
    "durationMonths": 12,
    "autoRenewal": "Yes (Law 26/2007 default)"
  },
  "rent": {
    "annual": 145000,
    "currency": "AED",
    "numberOfCheques": 4,
    "depositAmount": 7250,
    "cheques": [
      {
        "date": "2026-05-01",
        "bank": "Emirates NBD",
        "amount": 36250
      },
      {
        "date": "2026-08-01",
        "bank": "Emirates NBD",
        "amount": 36250
      },
      {
        "date": "2026-11-01",
        "bank": "Emirates NBD",
        "amount": 36250
      },
      {
        "date": "2027-02-01",
        "bank": "Emirates NBD",
        "amount": 36250
      }
    ]
  },
  "customClauses": [
    "Tenant may not keep pets weighing more than 15 kg without written landlord consent."
  ]
}
03

JSON Schema

The render endpoint validates your payload against this JSON Schema before queuing the render. Validation errors come back with HTTP 400 and a VALIDATION_FAILED code listing every offending path.

json
{
  "type": "object",
  "required": [
    "contractNumber",
    "issueDate",
    "landlord",
    "tenant",
    "premises",
    "term",
    "rent"
  ],
  "properties": {
    "contractNumber": {
      "type": "string",
      "minLength": 1
    },
    "issueDate": {
      "type": "string"
    },
    "ejariPropertyId": {
      "type": "string"
    },
    "landlord": {
      "type": "object",
      "required": [
        "name",
        "idType",
        "idNumber"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "idType": {
          "type": "string"
        },
        "idNumber": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        },
        "email": {
          "type": "string",
          "format": "email"
        },
        "address": {
          "type": "string"
        }
      }
    },
    "tenant": {
      "type": "object",
      "required": [
        "name",
        "idType",
        "idNumber"
      ],
      "properties": {
        "name": {
          "type": "string"
        },
        "idType": {
          "type": "string"
        },
        "idNumber": {
          "type": "string"
        },
        "phone": {
          "type": "string"
        },
        "email": {
          "type": "string",
          "format": "email"
        },
        "nationality": {
          "type": "string"
        }
      }
    },
    "premises": {
      "type": "object",
      "required": [
        "propertyType",
        "address"
      ],
      "properties": {
        "propertyType": {
          "type": "string"
        },
        "usage": {
          "type": "string"
        },
        "plot": {
          "type": "string"
        },
        "address": {
          "type": "string"
        },
        "areaSqft": {
          "type": "number"
        },
        "rooms": {
          "type": "string"
        },
        "parking": {
          "type": "number"
        },
        "furnished": {
          "type": "string"
        },
        "makaniNumber": {
          "type": "string"
        }
      }
    },
    "term": {
      "type": "object",
      "required": [
        "startDate",
        "endDate",
        "durationMonths"
      ],
      "properties": {
        "startDate": {
          "type": "string"
        },
        "endDate": {
          "type": "string"
        },
        "durationMonths": {
          "type": "number"
        },
        "autoRenewal": {
          "type": "string"
        }
      }
    },
    "rent": {
      "type": "object",
      "required": [
        "annual",
        "currency",
        "numberOfCheques"
      ],
      "properties": {
        "annual": {
          "type": "number"
        },
        "currency": {
          "type": "string"
        },
        "numberOfCheques": {
          "type": "number"
        },
        "depositAmount": {
          "type": "number"
        },
        "cheques": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "date": {
                "type": "string"
              },
              "bank": {
                "type": "string"
              },
              "amount": {
                "type": "number"
              }
            }
          }
        }
      }
    },
    "customClauses": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  }
}
UAE Tenancy Contract template — Kamy PDF API — Kamy