Build integrations on top of the PR365 property rental platform

Authentication

All API requests must be authenticated. PR365 supports both JWT bearer tokens (for user sessions) and API keys (for server-to-server integrations).

JWT Bearer Token

Obtain a token by calling POST /v1/auth/login with email and password. Pass the token in the Authorization header.

POST https://api.pr365.io/v1/auth/login
Content-Type: application/json

{
  "email": "landlord@example.com",
  "password": "yourpassword",
  "orgCode": "YOUR_ORG_CODE"
}

# Response
{
  "success": true,
  "data": {
    "accessToken": "eyJhbG...",
    "expiresIn": 28800
  }
}

API Keys

For server-to-server integrations, generate an API key from the landlord portal or via the API. Pass it in the X-Api-Key header.

curl https://api.pr365.io/v1/properties \
  -H "X-Api-Key: pr365_your_api_key_here"

API Key Management

GET/v1/api-keys

List all API keys for your account.

POST/v1/api-keys

Create a new API key. The key is returned once and cannot be retrieved again.

{
  "name": "My Integration",
  "scopes": ["read", "write"],
  "description": "Used by our CRM system",
  "expiresInDays": 365
}
DELETE/v1/api-keys/{id}

Revoke an API key immediately.

Webhooks

Webhooks allow you to receive real-time notifications when events happen in PR365. Register a URL and PR365 will POST a signed payload to it.

Available events

application.submitted application.approved application.rejected lease.generated lease.signed_by_tenant lease.signed_by_landlord tenancy.activated payment.deposit_received payment.rent_received maintenance.request_created inspection.proposed

Webhook payload shape

{
  "event": "application.submitted",
  "timestamp": "2026-09-26T10:00:00Z",
  "data": {
    "applicationId": "uuid",
    "status": "Submitted",
    "propertyId": "uuid",
    "tenantId": "uuid"
  }
}

Verifying webhook signatures

Every webhook includes an X-PR365-Signature header. Verify it to confirm the payload came from PR365.

// Node.js example
const crypto = require('crypto')

function verifySignature(payload, signature, secret) {
  const expected = 'sha256=' + crypto
    .createHmac('sha256', secret)
    .update(payload)
    .digest('hex')
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expected)
  )
}
GET/v1/webhooks

List registered webhook endpoints.

POST/v1/webhooks

Register a new webhook endpoint.

{
  "url": "https://yourapp.com/webhooks/pr365",
  "events": ["application.submitted", "tenancy.activated"],
  "description": "Main webhook receiver"
}
POST/v1/webhooks/{id}/test

Send a test event to verify your endpoint is receiving correctly.

GET/v1/webhooks/{id}/deliveries

View delivery history and retry status for a webhook endpoint.

Core API Endpoints

Full interactive documentation is available at api.pr365.io/swagger. Below is a summary of key endpoints.

Properties

MethodPathDescription
GET/v1/propertiesSearch properties with filters (city, rent, bedrooms, type)
GET/v1/properties/{id}Get a single property with full details
POST/v1/propertiesCreate a new property listing
PUT/v1/properties/{id}Update a property

Applications

MethodPathDescription
POST/v1/applicationsSubmit a rental application
GET/v1/applications/landlordGet all applications for the authenticated landlord
GET/v1/applications/tenantGet all applications for the authenticated tenant
PATCH/v1/applications/{id}/statusApprove or reject an application
POST/v1/applications/{id}/generate-leaseGenerate a lease agreement
POST/v1/applications/{id}/signSign the lease (tenant or landlord)
GET/v1/applications/{id}/lease/pdfDownload signed lease as PDF

Payments

MethodPathDescription
GET/v1/paymentsGet payment history
GET/v1/payments/scheduleGet upcoming payment schedule
POST/v1/payments/deposit/{leaseId}Pay security deposit into escrow
GET/v1/payments/escrow/{leaseId}Get escrow account details

Response format

All API responses follow a consistent envelope format:

{
  "success": true,
  "data": { ... },
  "meta": { "page": 1, "pageSize": 20, "totalCount": 100 },
  "errors": null
}

PR365 API v1 • hi@pr365.io • Swagger UI