REST API · v1

API Documentation

Build on top of Property Management Network. Automate your workflows, sync with external tools, or build custom dashboards using our REST API.

Base URL:https://propertymanagement.network/api/v1

Authentication

All 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_..."

Endpoints

GET
/properties

List all properties for the authenticated account

POST
/properties

Create a new property

GET
/tenants

List tenants with their unit and lease status

GET
/payments

List rent payments (filter by status, tenant_id, from/to date range)

POST
/payments

Record a rent payment

GET
/maintenance

List maintenance requests (filter by status, priority, property_id)

POST
/maintenance

Create a maintenance request

PATCH
/maintenance/:id

Update a maintenance request's status or fields

GET
/webhooks

List webhook subscriptions

POST
/webhooks

Create a webhook subscription (Zapier REST Hook subscribe)

DELETE
/webhooks/:id

Delete a webhook subscription (Zapier REST Hook unsubscribe)

Response Format

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" } }

Webhooks

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.created

A property was added to the portfolio.

tenant.created

A new tenant was added.

maintenance.created

A maintenance request was submitted (dashboard, API, or tenant portal).

maintenance.updated

A maintenance request moved to a new status (e.g. resolved).

payment.recorded

A rent payment record was created.

payment.paid

A rent payment was marked as paid.

lease.created

A 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.