Getting started
Authentication
Every Properly Platform API request except the health probe carries your API key in a header.
The x-api-key header
Send x-api-key: <secret> on every request. The only route without it is
GET /v1/health. Do not put the key in URLs; header only.
A missing or invalid key returns:
401 Unauthorized detail: "Missing or invalid x-api-key"
A valid key on an account whose Properly subscription has expired, or whose plan doesn't
include the API, gets 403 subscription_inactive, not 401. Access returns with the same key once the subscription is reactivated.
Issuing a key
Keys are issued in the Properly web app under Settings → API & AI assistants, to accounts on the Platform Pro and Real-Time Inspection plans.
- The key is shown once at creation. Store it then.
- Revocation is immediate from the same page.
- An assisted path also exists: email api@getproperly.com.
Key lifecycle
- Keys issued from the web app authenticate the Platform API only. Keys issued before self-serve key management ("legacy keys") work on both APIs until the legacy API retires on April 7, 2027, so create a Platform API key before then.
- Rate limits are applied per key. See Rate limits.
Example first request
curl "https://platform.getproperly.com/v1/properties?limit=50" \
-H "x-api-key: $PROPERLY_API_KEY" {
"data": [
{
"propertyId": "8jL2mQxT4a",
"sourceId": "pms-100234",
"name": "Seaside Loft 2B",
"address": "12 Ocean Ave, Santa Monica, CA",
"pictureUrls": ["https://res.cloudinary.com/…/prop1.jpg"],
"tags": ["beach"],
"location": { "latitude": 34.0119, "longitude": -118.4916 },
"timeZone": "America/Los_Angeles",
"countryCode": "US",
"bedrooms": 2,
"beds": 3,
"bathrooms": 2,
"bedDetails": [
{ "bedType": "queen", "twinable": false, "displayLabel": "Master bedroom", "quantity": 1 },
{ "bedType": "sofabed", "twinable": false, "displayLabel": "Living room", "quantity": 1 }
],
"details": { "access": "Lockbox code 4821", "wifiName": "SeasideLoft", "wifiPassword": "surf2026" },
"createdAt": "2026-05-02T18:11:04.000Z",
"updatedAt": "2026-08-30T09:20:41.000Z"
}
],
"nextCursor": null,
"hasMore": false
} Liveness probe
GET
/v1/health 200 OK No auth Returns 200 with { status, version } when the service is up. This is the only route that needs no API key.
| Field | Type | Required | Notes |
|---|---|---|---|
status | string | Required | — |
version | string | Required | The deployed API version. |
curl https://platform.getproperly.com/v1/health