Documentation Index
Fetch the complete documentation index at: https://docs.magicfurnish.com/llms.txt
Use this file to discover all available pages before exploring further.
Endpoint
POST https://api.magicfurnish.com/api/v2/ai/process
This endpoint expects a multipart/form-data POST request with:
| Field | Type | Required | Description |
|---|
image | File | Yes | JPG, PNG, or single-page PDF floor plan |
additionalData | text | No | Optional JSON string echoed back |
X-API-Key: YOUR_API_KEY
X-API-Secret: YOUR_API_SECRET
Optional: X-Request-Id: demo-req-001
Example Request
curl -X POST "https://api.magicfurnish.com/api/v2/ai/process" \
-H "X-API-Key: YOUR_API_KEY" \
-H "X-API-Secret: YOUR_API_SECRET" \
-H "X-Request-Id: demo-req-001" \
-F "image=@floorplan.png" \
-F 'additionalData={"project_id":"demo"}'
Successful Response
If the floor plan is valid and processed successfully, the API returns:
{
"status": "success",
"data": {
"uniqueId": "4959055a-5243-4e1f-8554-4091091f6bdf",
"galleryUrl": "https://app.magicfurnish.com/floor-gallery/69245f96705e17e1e881bf2f",
"furnishedImageUrl": "https://api.magicfurnish.com/api/v2/g/s3-image/59d98258-5da2-4d73-bcc0-667cd9ded501_layout.jpg"
},
"code": 200
}
Field Definitions
| Field | Description |
|---|
uniqueId | Internal processing identifier for the uploaded plan |
galleryUrl | URL to the auto-generated MagicFurnish viewer/gallery |
furnishedImageUrl | Direct link to the furnished layout image |
Validation Rules
The Upload endpoint performs automatic validation before processing.
Floor plans must:
- Be JPG, PNG, or single-page PDF
- Be under 10 MB
- Contain at least one visible dimension
- Use consistent scale (if multiple scales appear, request is rejected)
- Not contain visible furniture (to avoid misinterpretation)
Possible Error Responses
| Status | Code | Meaning |
|---|
| 400 | invalid_file | File is not a supported image/PDF, or cannot be parsed |
| 400 | multiple_pages | PDF contains more than one page |
| 400 | furniture_detected | Floor plan contains visible furniture (remove and re-upload) |
| 400 | dimensions_missing | At least one dimension must be readable |
| 400 | size_unsupported | Dimensions/scale not supported |
| 400 | file_unreadable | Low resolution or corrupted upload |
| 401 | unauthorized | Missing/invalid API key/secret |
| 403 | forbidden | Key not allowed for this endpoint |
| 408 | timeout | Processing exceeded time limit |
| 413 | payload_too_large | File exceeds 10 MB |
| 415 | unsupported_media_type | Unsupported file type |
| 429 | rate_limited | Too many requests |
| 500 | internal_error | Unexpected internal error |
| 503 | service_unavailable | Service temporarily unavailable |
For detailed error shapes, see Errors.
Processing Time
Typical processing times (approximate):
- Upload: ~10 seconds
- Auto-Furnish: ~30–60 seconds
- Gallery Ready: instantly upon completion
Next Steps
The returned galleryUrl can be:
- Embedded in your app
- Opened in a webview
- Linked as part of a workflow (internal dashboards, listing platforms, etc.)