v1 · stable

KeyNest API

REST endpoints to manage properties, tenants, rent, maintenance and Ontario forms. All requests use JSON. Authenticate with a bearer token.

Base URL
https://api.keynest.app/v1
Authorization
Authorization: Bearer kn_live_•••••••••••••••

Authentication

POST/v1/auth/session

Create a session for a workspace role.

Example response
{ "token": "kn_…", "user": { "id": "u_…", "role": "landlord" } }
DELETE/v1/auth/session

Revoke the current session.

Example response
{ "ok": true }

Properties

GET/v1/properties

List properties scoped to the caller.

Example response
[{ "id": "p_…", "name": "Maple Court", "units": 6 }]
POST/v1/properties

Create a property.

Example response
{ "id": "p_…", "name": "…", "createdAt": "2026-05-26" }
GET/v1/properties/{id}

Retrieve a single property with units.

Example response
{ "id": "p_…", "units": [ … ] }
PATCH/v1/properties/{id}

Partially update a property.

Example response
{ "id": "p_…", "updatedAt": "…" }
DELETE/v1/properties/{id}

Remove a property from the portfolio.

Example response
{ "ok": true }

Tenants

GET/v1/tenants

List tenants, filterable by property and status.

Example response
[{ "id": "t_…", "name": "Sarah Thompson", "status": "Active" }]
POST/v1/tenants

Create a tenant and attach to a unit.

Example response
{ "id": "t_…" }
PATCH/v1/tenants/{id}

Update tenant or lease details.

Example response
{ "id": "t_…", "leaseEnd": "2026-12-01" }

Payments

GET/v1/payments

List payments. Filter by tenant, period, status.

Example response
[{ "id": "pay_…", "amount": 2400, "status": "Paid" }]
POST/v1/payments

Record a manual payment.

Example response
{ "id": "pay_…", "status": "Paid" }
PATCH/v1/payments/{id}

Change a payment's status.

Example response
{ "id": "pay_…", "status": "Overdue" }

Maintenance

GET/v1/tickets

List maintenance tickets across properties.

Example response
[{ "id": "tk_…", "title": "Furnace…", "status": "Open" }]
POST/v1/tickets

Open a new ticket.

Example response
{ "id": "tk_…" }
PATCH/v1/tickets/{id}

Update status, contractor, or cost.

Example response
{ "id": "tk_…", "status": "Scheduled" }

Ontario forms

POST/v1/forms/{type}

Generate an LTB form (N4, N5, N12, N9, entry, lease).

Example response
{ "id": "f_…", "pdfUrl": "https://files.keynest.app/…" }
GET/v1/forms/{id}

Retrieve a generated form record.

Example response
{ "id": "f_…", "status": "Served" }

© 2026 KeyNest API · v1 · Stable