PlanScan REST API Reference
v1.0 LiveProgrammatic interface for automated architectural floor plan ingestion, wall segmentation, room calculations, and CAD takeoff exports.
Base Endpoint
All API requests must be directed to the canonical root URI:
https://planscan.ethix.io/api/
Authentication
Requests require active session cookies or standard HTTP authorization headers:
Available Endpoints
/api/pdfs/
Upload a single-sheet or multi-sheet architectural drawing PDF for automated computer-vision wall detection, room enclosure calculation, and scale extraction.
Request Body (multipart/form-data)
| Field | Type | Required | Description |
|---|---|---|---|
file |
File (binary) | Required | Architectural drawing set in PDF format (up to 20MB). |
Example cURL Request
curl -X POST "https://planscan.ethix.io/api/pdfs/" \
-H "Authorization: Bearer YOUR_TOKEN" \
-F "file=@/path/to/floorplan.pdf"
Sample Response (201 Created)
{
"id": 3,
"status": "processing",
"file": "https://planscan.ethix.io/media/pdfs/floorplan.pdf",
"detail_url": "https://planscan.ethix.io/api/pdfs/3/"
}
/api/pdfs/
Returns a chronological list of all plans submitted by the authenticated user, including current status and detection counts.
Sample Response (200 OK)
[
{
"id": 3,
"name": "INDACO-Walls-Blank_Set.pdf",
"status": "completed",
"uploaded_at": "2026-10-23T08:50:00Z",
"sheets_count": 2,
"detail_url": "https://planscan.ethix.io/api/pdfs/3/"
}
]
/api/pdfs/{id}/
Fetches comprehensive analysis data for a plan: detected sheet names, calibrated scales, individual wall coordinates with linear lengths, and room enclosures with square footages.
Sample Response (200 OK)
{
"id": 3,
"filename": "INDACO-Walls-Blank_Set.pdf",
"status": "completed",
"sheets": [
{
"id": 12,
"name": "Sheet 2",
"scale": "1/4\" = 1'-0\"",
"wall_summary": [
{
"wall_type": "A",
"description": "Standard partition",
"total_length_ft": 22.1,
"confidence_score": 0.61
}
],
"rooms": [
{
"area_sf": 153.6,
"confidence": 0.89,
"bbox": [530, 890, 810, 1120]
}
]
}
]
}
/pdf/status/{id}/
Lightweight polling endpoint to verify whether background computer vision inference has completed, is still processing, or encountered an error.
{
"status": "completed"
}