# Floor plan management APIs
Source: [https://docs.qualcomm.com/doc/80-42204-2/topic/floor-plan-management-apis.html](https://docs.qualcomm.com/doc/80-42204-2/topic/floor-plan-management-apis.html)
The following table lists the indoor APIs to manage the floor plans of a venue.
| Method | Endpoint | Description | Success code | Error codes |
| --- | --- | --- | --- | --- |
| [POST](https://docs.qualcomm.com/doc/80-42204-2/topic/floor-plan-management-apis.html#post-venues-venueid-floors-floorid-plan) | `/venues/{venueId}/floors/{floorId}/plan` | Upload a floor plan | 201 Created |
- 400 Bad Request
- 401 Unauthorized
- 403 Forbidden
- 404 Floor Not Found
- 409 Conflict (floor plan already exists)
- 413 Request Entity Too Large
- 500 Internal Server Error
|
| [GET](https://docs.qualcomm.com/doc/80-42204-2/topic/floor-plan-management-apis.html#get-venues-venueid-floors-floorid-plan) | `/venues/{venueId}/floors/{floorId}/plan` | Retrieve the floor plan | 200 OK |
- 401 Unauthorized
- 403 Forbidden
- 404 Floor Plan Not Found
- 500 Internal Server Error
|
| [PUT](https://docs.qualcomm.com/doc/80-42204-2/topic/floor-plan-management-apis.html#put-venues-venueid-floors-floorid-plan) | `/venues/{venueId}/floors/{floorId}/plan` | Update the floor plan | 200 OK |
- 400 Bad Request
- 401 Unauthorized
- 403 Forbidden
- 404 Floor Plan Not Found
- 413 Request Entity Too Large
- 500 Internal server error
|
| [DELETE](https://docs.qualcomm.com/doc/80-42204-2/topic/floor-plan-management-apis.html#delete-venues-venueid-floors-floorid-plan) | `/venues/{venueId}/floors/{floorId}/plan` | Delete the floor plan | 200 OK |
- 401 Unauthorized
- 403 Forbidden
- 404 Floor Plan Not Found
- 500 Internal Server Error
|
## POST /venues/{venueId}/floors/{floorId}/plan
Source: [https://docs.qualcomm.com/doc/80-42204-2/topic/floor-plan-management-apis.html](https://docs.qualcomm.com/doc/80-42204-2/topic/floor-plan-management-apis.html)
Uploads a floor plan image with metadata for a floor.
**Path parameters**
| Parameter | Type | Values | Description |
| --- | --- | --- | --- |
| `venueId` | Integer | | The ID of the venue. |
| `floorId` | Integer | | The ID of the floor. |
**Request headers**
Content-Type: multipart/form-dataCopy to clipboard
**Request body parameters (multipart/form-data)**
| Parameter | Type | Values | Description |
| --- | --- | --- | --- |
| `image` | File (PNG or JPEG) | Maximum size: 10 MB | Floor plan image file |
| `metadata` | String | | JSON string containing floor plan metadata |
**Request body (metadata json structure)**
{
"latitude": 37.7749,
"longitude": -122.4194,
"width": 100.5,
"height": 75.3,
"bearing": 45.0
}Copy to clipboard
**Metadata parameters**
| Parameter | Type | | Description |
| --- | --- | --- | --- |
| `latitude` | Float | -90 to 90 | Latitude of the floor plan center |
| `longitude` | Float | -180 to 180 | Longitude of the floor plan center |
| `width` | Float | | Width of the floor plan in meters |
| `height` | Float | | Height of the floor plan in meters |
| `bearing` | Float | 0 to 360 | Bearing or rotation angle in degrees |
**Response**
- Success response: 201 Created
{
"floorPlanId": 789,
"message": "Floor plan successfully created."
}Copy to clipboard
- Error responses:
- 400 Bad Request
{
"message": "Image file is required."
}
{
"message": "Image data is required."
}
{
"message": "Metadata is required."
}
{
"message": "Invalid JSON metadata."
}
{
"message": "Invalid image type. Allowed types are: png, jpeg, jpg."
}
{
"message": "bearing: Bearing must be within the range [0, 360)."
}Copy to clipboard
- 401 Unauthorized: Missing or invalid Skyhook-Auth-Key
header
{
"message": "Missing Skyhook-Auth-Key."
}
{
"message": "Invalid Skyhook-Auth-Key."
}Copy to clipboard
- 403 Forbidden: Valid API key but insufficient permissions for the
requested resource
{
"message": "Access Denied."
}Copy to clipboard
- 404 Not Found
{
"message": "Venue id 123/floor id 456 is not found or not associated with this project."
}
{
"message": "The requested resource was not found."
}Copy to clipboard
- 409 Conflict
{
"message": "Floor plan already exists for this floor."
}Copy to clipboard
- 413 Request Entity Too Large
{
"message": "Image file size (11.61MB) exceeds maximum allowed size of 10.0MB."
}Copy to clipboard
- 500 Internal Server Error
{
"message": "An unexpected error occurred while creating floor plan."
}Copy to clipboard
## GET /venues/{venueId}/floors/{floorId}/plan
Source: [https://docs.qualcomm.com/doc/80-42204-2/topic/floor-plan-management-apis.html](https://docs.qualcomm.com/doc/80-42204-2/topic/floor-plan-management-apis.html)
Retrieves the floor plan with metadata and image.
**Path parameters**
| Parameter | Type | Values | Description |
| --- | --- | --- | --- |
| `venueId` | Integer | | The ID of the venue |
| `floorId` | Integer | | The ID of the floor |
**Request headers**
Content-Type: application/jsonCopy to clipboard
**Response**
- Success response: 200 OK
Returns a multipart or mixed response with two
parts:
- Part 1: JSON metadata
{
"latitude": 37.7749,
"longitude": -122.4194,
"width": 100.5,
"height": 75.3,
"bearing": 45.0
}Copy to clipboard
- Part 2: Binary image
data
image: Copy to clipboard
- Error responses:
- 401 Unauthorized: Missing or invalid Skyhook-Auth-Key
header
{
"message": "Missing Skyhook-Auth-Key."
}
{
"message": "Invalid Skyhook-Auth-Key."
}Copy to clipboard
- 403 Forbidden: Valid API key but insufficient permissions for the
requested resource
{
"message": "Access Denied."
}Copy to clipboard
- 404 Not Found
{
"message": "No floor plan found for floor 456."
}
{
"message": "Venue id /floor id not found or not associated with this project."
}
{
"message": "The requested resource was not found."
}Copy to clipboard
- 500 Internal Server Error
{
"message": "An unexpected error occurred while retrieving floor plan."
}Copy to clipboard
## PUT /venues/{venueId}/floors/{floorId}/plan
Source: [https://docs.qualcomm.com/doc/80-42204-2/topic/floor-plan-management-apis.html](https://docs.qualcomm.com/doc/80-42204-2/topic/floor-plan-management-apis.html)
Updates the floor plan metadata and/or image.
**Path parameters**
| Parameter | Type | Values | Description |
| --- | --- | --- | --- |
| `venueId` | Integer | | The ID of the venue |
| `floorId` | Integer | | The ID of the floor |
**Request headers**
Content-Type: multipart/form-dataCopy to clipboard
**Request body parameters (multipart/form-data)**
| Parameter | Type | Values | Description |
| --- | --- | --- | --- |
| `image` | File (PNG or JPEG) | Maximum size: 10 MB | Floor plan image file |
| `metadata` | String | | JSON string containing floor plan metadata |
**Request body (metadata json structure)**
Note: Either image or metadata must be provided.
{
"latitude": 37.7750,
"longitude": -122.4195,
"width": 101.0,
"height": 76.0,
"bearing": 46.0
}Copy to clipboard
**Metadata parameters**
| Parameter | Type | | Description |
| --- | --- | --- | --- |
| `latitude` | Float | -90 to 90 | Latitude of the floor plan center |
| `longitude` | Float | -180 to 180 | Longitude of the floor plan center |
| `width` | Float | | Width of the floor plan in meters |
| `height` | Float | | Height of the floor plan in meters |
| `bearing` | Float | 0 to 360 | Bearing or rotation angle in degrees |
**Response**
- Success response: 200 OK
{
"message": "Floor plan successfully updated."
}Copy to clipboard
- Error responses:
- 400 Bad Request
{
"message": "Either image or metadata must be provided."
}
{
"message": "latitude: Latitude must be between -90 and 90."
}
{
"message": "longitude: Longitude must be between -180 and 180."
}
{
"message": "bearing: Bearing must be within the range [0, 360)."
}Copy to clipboard
- 401 Unauthorized: Missing or invalid Skyhook-Auth-Key
header
{
"message": "Missing Skyhook-Auth-Key."
}
{
"message": "Invalid Skyhook-Auth-Key."
}Copy to clipboard
- 403 Forbidden: Valid API key but insufficient permissions for the
requested resource
{
"message": "Access Denied."
}Copy to clipboard
- 404 Not Found
{
"message": "No floor plan found for floor ."
}
{
"message": "The requested resource was not found."
}Copy to clipboard
- 413 Request Entity Too Large
{
"message": "Image file size (11.61MB) exceeds maximum allowed size of 10.0MB."
}Copy to clipboard
- 500 Internal Server Error
{
"message": "An unexpected error occurred while creating floor plan."
}Copy to clipboard
## DELETE /venues/{venueId}/floors/{floorId}/plan
Source: [https://docs.qualcomm.com/doc/80-42204-2/topic/floor-plan-management-apis.html](https://docs.qualcomm.com/doc/80-42204-2/topic/floor-plan-management-apis.html)
Deletes a floor plan.
**Response**
- Success response: 200 OK
{
"message": "Floor plan for floor in venue deleted."
}Copy to clipboard
- Error responses:
- 401 Unauthorized: Missing or invalid Skyhook-Auth-Key
header
{
"message": "Missing Skyhook-Auth-Key."
}
{
"message": "Invalid Skyhook-Auth-Key."
}Copy to clipboard
- 403 Forbidden: Valid API key but insufficient permissions for the
requested resource
{
"message": "Access Denied."
}Copy to clipboard
- 404 Not Found
{
"message": "No floor plan found for floor ."
}
{
"message": "Venue id /floor id not found or not associated with this project."
}
{
"message": "The requested resource was not found."
}Copy to clipboard
- 500 Internal Server Error
{
"message": "An unexpected error occurred while deleting floor plan."
}Copy to clipboard
Last Published: May 19, 2026
[Previous Topic
Floor management APIs](https://docs.qualcomm.com/bundle/publicresource/80-42204-2/topics/floor-management-apis.md) [Next Topic
Survey session management APIs](https://docs.qualcomm.com/bundle/publicresource/80-42204-2/topics/survey-session-management-api.md)