Build on top of Property Management Network. Automate your workflows, sync with external tools, or build custom dashboards using our REST API.
https://propertymanagement.network/api/v1All API requests require a Bearer API key in the Authorization header. Keys look like pmn_live_… and are generated from Settings → API keys inside your dashboard. The plaintext key is shown only once at creation, so store it securely.
# Example request
curl https://propertymanagement.network/api/v1/properties \
-H "Authorization: Bearer pmn_live_..."
/propertiesList all properties for the authenticated account
/propertiesCreate a new property
/tenantsList tenants with their unit and lease status
/paymentsList rent payments (filter by status, tenant_id, from/to date range)
/paymentsRecord a rent payment
/maintenanceList maintenance requests (filter by status, priority, property_id)
/maintenanceCreate a maintenance request
/maintenance/:idUpdate a maintenance request's status or fields
/webhooksList webhook subscriptions
/webhooksCreate a webhook subscription (Zapier REST Hook subscribe)
/webhooks/:idDelete a webhook subscription (Zapier REST Hook unsubscribe)
All responses are JSON. List endpoints return a data array with a count. Single-record and create responses return a data object (create returns HTTP 201). Errors return an error object with a numeric code and a message.
// Success (list)
{ "data": [...], "count": 12 }
// Success (single / create)
{ "data": { ... } }
// Error
{ "error": { "code": 401, "message": "Unauthorized" } }
Subscribe to real-time events instead of polling. Add endpoints in Settings → Webhooks (or via the /webhooksAPI), and we'll POST a signed JSON payload the moment something happens. This is the same mechanism that powers our Zapier integration — Zapier subscribes and unsubscribes through the POST /webhooks and DELETE /webhooks/:id endpoints (the REST Hook pattern).
Available events
property.createdA property was added to the portfolio.
tenant.createdA new tenant was added.
maintenance.createdA maintenance request was submitted (dashboard, API, or tenant portal).
maintenance.updatedA maintenance request moved to a new status (e.g. resolved).
payment.recordedA rent payment record was created.
payment.paidA rent payment was marked as paid.
lease.createdA lease was created for a tenant.
Payload & signature
Each request body is a JSON envelope. Every delivery carries an X-PMN-Signature header — t=<unix>,v1=<hex> — where v1 is the HMAC-SHA256 of `${t}.${rawBody}`keyed with your endpoint's signing secret. Recompute it and compare in constant time; reject if the timestamp is stale.
// POST body
{
"id": "evt_9f2c…",
"event": "tenant.created",
"created_at": "2026-07-02T12:00:00.000Z",
"data": { "tenant": { … } }
}
# Headers
X-PMN-Event: tenant.created
X-PMN-Delivery: <delivery id>
X-PMN-Signature: t=1751457600,v1=1a2b3c…
Respond with any 2xx to acknowledge. Non-2xx or timeouts are retried with exponential backoff (up to 5 attempts); a test event is available from the dashboard.
Official client SDKs are not yet available. Call the endpoints directly over HTTP with any language or HTTP client.