MapSet
Overview
Endpoints
Create MapSet using Overlap
Creates a new MapSet from two existing maps that share overlapping scan area, by passing the Map Codes of a source map and a target map. The cloud computes the relative pose between the two maps automatically — you do not need to supply a relativePose.
Both maps must already exist in your account, be in active status, and not already belong to any MapSet. The resulting MapSet uses the source map as the origin (order=0).
JWT token obtained from the authentication endpoint
Name of the new MapSet
Building A - Floors 1 & 2Map Code of the source map (becomes the MapSet origin)
MAP_WUTCLWDXTK6UMap Code of the target map to align against the source
MAP_7HXKP2MSNQ4YSet to true when both maps are already gravity aligned (+Y up). The overlap job then constrains the relative pose to a yaw-only rotation about Y, dropping roll and pitch while keeping the full X/Y/Z translation. Optional, defaults to false.
falseExample: trueMapSet created successfully via overlap
MapSet Processed successfullyUnique code for the new MapSet
MSET_ZIRWP1NV0WBHBad request. Returned when a required field is missing, when the body contains a field that is not allowed, or when the two maps are on different generations.
Unauthorized - Invalid or expired token
Forbidden - One or more maps are not active or do not belong to your account
One or more maps not found
Conflict - One or more maps are already part of a MapSet
POST /v1/vps/map-set/overlap HTTP/1.1
Host: api.multiset.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 130
{
"name": "Building A - Floors 1 & 2",
"sourceMapCode": "MAP_WUTCLWDXTK6U",
"targetMapCode": "MAP_7HXKP2MSNQ4Y",
"isGravityAligned": true
}{
"message": "MapSet Processed successfully",
"mapSetCode": "MSET_ZIRWP1NV0WBH"
}Add Map to MapSet using Overlap
Adds a new map to an existing MapSet. The new map is aligned against the whole MapSet, so you do not pick an overlapping anchor map: send only the new map's Map Code. The cloud computes its relativePose automatically from the overlap, and existing maps in the set are not affected.
targetMapCodemust be anactivemap in your account that is not part of any MapSet yet.- The resulting transform is stored as the new map's
relativePosewithin the MapSet's coordinate system. - The request body accepts only
targetMapCodeand the optionalisGravityAligned. Any other field, includingsourceMapCode, is rejected with400and an error such as"sourceMapCode" is not allowed.
JWT token obtained from the authentication endpoint
MapSet Code of the existing MapSet to extend
MSET_ZIRWP1NV0WBHMap Code of the new map to add to the MapSet
MAP_3HQNB7L9XP2ASet to true when both the MapSet and the new map are already gravity aligned (+Y up). The overlap job then constrains the relative pose to a yaw-only rotation about Y, dropping roll and pitch while keeping the full X/Y/Z translation. Optional, defaults to false.
falseExample: trueMap added to MapSet successfully
MapSet data processed successfullyBad request. Returned when the body contains a field that is not allowed (for example sourceMapCode), when targetMapCode is missing, or when the new map is on a different generation than the MapSet.
Unauthorized - Invalid or expired token
Forbidden - MapSet or the target map is not active, or does not belong to your account
MapSet not found, or target map not found
Conflict - Target map is already part of a MapSet
PUT /v1/vps/map-set/overlap/{mapSetCode} HTTP/1.1
Host: api.multiset.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 60
{
"targetMapCode": "MAP_3HQNB7L9XP2A",
"isGravityAligned": true
}{
"message": "MapSet data processed successfully"
}Create MapSet
Creates a new MapSet with two or more maps. Each map must include a relative pose defining its position and rotation within the MapSet.
JWT token obtained from the authentication endpoint
Name of the MapSet
Building A - Floor 1MapSet created successfully
MapSet created successfullyUnique code for the MapSet
MSET_ZIRWP1NV0WBHBad Request - Invalid input or less than 2 maps provided
Unauthorized - Invalid or expired token
One or more maps not found
Conflict - One or more maps are already part of a MapSet
POST /v1/vps/map-set HTTP/1.1
Host: api.multiset.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 295
{
"name": "Building A - Floor 1",
"maps": [
{
"mapCode": "MAP_WUTCLWDXTK6U",
"relativePose": {
"position": {
"x": 0,
"y": 0,
"z": 0
},
"rotation": {
"qx": 0,
"qy": 0,
"qz": 0,
"qw": 1
}
}
},
{
"mapCode": "MAP_7HXKP2MSNQ4Y",
"relativePose": {
"position": {
"x": 10.5,
"y": 0,
"z": 5.2
},
"rotation": {
"qx": 0,
"qy": 0.7071,
"qz": 0,
"qw": 0.7071
}
}
}
]
}{
"message": "MapSet created successfully",
"mapSetCode": "MSET_ZIRWP1NV0WBH"
}Get MapSet Details
Retrieves details of a MapSet including all associated maps and their relative poses.
JWT token obtained from the authentication endpoint
MapSet Code
MSET_ZIRWP1NV0WBHMapSet details retrieved successfully
Unauthorized - Invalid or expired token
MapSet not found
GET /v1/vps/map-set/{mapSetCode} HTTP/1.1
Host: api.multiset.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"mapSet": {
"name": "Building A - Floor 1",
"mapSetCode": "MSET_ZIRWP1NV0WBH",
"status": "active",
"createdAt": "2026-01-01T00:00:00.000Z",
"updatedAt": "2026-01-01T00:00:00.000Z",
"mapSetData": [
{
"_id": "6756c20336a9794c6effce46",
"order": 0,
"relativePose": {
"position": {
"x": 0,
"y": 0,
"z": 0
},
"rotation": {
"qx": 0,
"qy": 0,
"qz": 0,
"qw": 1
}
},
"map": {
"mapCode": "MAP_WUTCLWDXTK6U",
"mapName": "Lobby Area",
"status": "active",
"hasPano": false
},
"baseMap": {
"mapCode": "MAP_BTTE1MOXYVT8",
"mapName": "Lobby Area (base)",
"status": "active",
"hasPano": false
},
"versionCode": "MVER_W6NTBJ0ALVUN"
}
]
}
}Update MapSet Details
Updates the name of an existing MapSet.
JWT token obtained from the authentication endpoint
MapSet Code
MSET_ZIRWP1NV0WBHNew name for the MapSet
Building A - Updated NameMapSet updated successfully
MapSet updated successfullyUnauthorized - Invalid or expired token
MapSet not found
PUT /v1/vps/map-set/details/{mapSetCode} HTTP/1.1
Host: api.multiset.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 36
{
"name": "Building A - Updated Name"
}{
"message": "MapSet updated successfully"
}Add Map to MapSet
Adds a new map to an existing MapSet with its relative pose.
JWT token obtained from the authentication endpoint
MapSet Code
MSET_ZIRWP1NV0WBHMap Code
MAP_WUTCLWDXTK6UMap added to MapSet successfully
MapSet data added successfullyUnauthorized - Invalid or expired token
MapSet or Map not found
PUT /v1/vps/map-set/{mapSetCode} HTTP/1.1
Host: api.multiset.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 121
{
"mapCode": "MAP_9RNVK3JTPL8X",
"relativePose": {
"position": {
"x": 20,
"y": 0,
"z": 10
},
"rotation": {
"qx": 0,
"qy": 0,
"qz": 0,
"qw": 1
}
}
}{
"message": "MapSet data added successfully"
}Update Map Pose in MapSet
Updates the relative pose of a map within a MapSet. Use the dataId from the MapSet details response.
JWT token obtained from the authentication endpoint
MapSetData ID (obtained from Get MapSet Details response)
6756c20336a9794c6effce46Map pose updated successfully
MapSetData updated successfullyInvalid dataId format
Unauthorized - Invalid or expired token
MapSetData not found
PUT /v1/vps/map-set/data/{dataId} HTTP/1.1
Host: api.multiset.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 93
{
"relativePose": {
"position": {
"x": 15,
"y": 0,
"z": 7.5
},
"rotation": {
"qx": 0,
"qy": 0,
"qz": 0,
"qw": 1
}
}
}{
"message": "MapSetData updated successfully"
}Delete Map from MapSet
Removes a map from a MapSet. Cannot delete the primary map (order=0) or if deletion would leave less than 2 maps in the MapSet.
JWT token obtained from the authentication endpoint
MapSetData ID (obtained from Get MapSet Details response)
6756c20336a9794c6effce46Map removed from MapSet successfully
MapSetData deleted successfullyInvalid dataId format
Unauthorized - Invalid or expired token
MapSetData not found
Cannot delete primary map or would leave less than 2 maps in MapSet
DELETE /v1/vps/map-set/data/{dataId} HTTP/1.1
Host: api.multiset.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"message": "MapSetData deleted successfully"
}Delete MapSet
Deletes a MapSet and all associated map data entries. The maps themselves are not deleted, only their association with the MapSet.
JWT token obtained from the authentication endpoint
MapSet Code
MSET_ZIRWP1NV0WBHMapSet deleted successfully
MapSet and associated MapSetData deleted successfullyUnauthorized - Invalid or expired token
MapSet not found
DELETE /v1/vps/map-set/{mapSetCode} HTTP/1.1
Host: api.multiset.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"message": "MapSet and associated MapSetData deleted successfully"
}Schemas
RelativePose
Last updated
Was this helpful?

