The REST API behind PropDoc — properties, assets, maintenance tasks, health scores, and gentle reminders. Quietly, on your schedule.
$ curl -X GET \ "https://api.getpropdoc.com/api/properties/abc123/health-score" \ -H "Authorization: Bearer ••••••" { "propertyId": "abc123", "score": 87, "grade": "B+", "completedTasks": 14, "openTasks": 2, "overdueTasks": 0 }
Addresses, year built, square footage, rooms — the basics, neatly modeled.
Asset coverage + maintenance compliance, rolled into one number from 0–100.
Daily cron at 09:00 UTC. Push notifications when something's actually due.
All endpoints require a valid JWT in the Authorization: Bearer header.
/api/propertiesList all properties
/api/propertiesCreate a property
/api/properties/:idGet property details
/api/properties/:idUpdate property
/api/properties/:id/health-scoreProperty health score
/api/assetsList assets
/api/assetsCreate an asset
/api/assets/:idUpdate asset
/api/assets/:id/photosUpload asset photo
/api/tasksList maintenance tasks
/api/tasksCreate a task
/api/tasks/:id/completeMark task complete
/api/schedulesList schedules
/api/schedulesCreate schedule
/api/meCurrent user profile
/api/push/registerRegister push token
Authenticate with Supabase, then call any endpoint with the returned access token.
const { data } = await supabase.auth
.signInWithPassword({
email: "[email protected]",
password: "••••••••",
});
const token = data.session?.access_token;const res = await fetch(
"https://api.getpropdoc.com/api/properties",
{
headers: {
Authorization: `Bearer ${token}`,
},
}
);
const { properties } = await res.json();