Map Upload
Map metadata
The source object
Standard upload
1. Create the map
2. Upload the parts
3. Complete the upload
Creates the map and initialises a multipart upload. In the standard
flow the response includes presigned URLs for every part. In the
resumable flow (?resumable=true) the response returns only the
mapId/mapCode; request part URLs on demand with Sign Upload Parts.
JWT token obtained from the authentication endpoint.
Set true for resumable mode (sign parts on demand).
Ground FloorTotal upload size in bytes (must be > 0).
734003200Optional part size in bytes. When provided, the upload is verified complete before finalizing.
8388608Optional compass heading in degrees.
Map created and upload initialised.
Map created successfullyMAP_QQYKIBHXZE01Presigned part URLs (standard flow only; omitted in resumable mode).
Bad Request. Missing/invalid fields, maps limit reached, or plan expired.
Unauthorized. Invalid or expired token.
POST /v2/vps/map HTTP/1.1
Host: api.multiset.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 231
{
"mapName": "Ground Floor",
"fileSize": 734003200,
"partSize": 8388608,
"heading": 1,
"coordinates": {
"latitude": 12.997,
"longitude": 77.7679,
"altitude": 0
},
"source": {
"provider": "unity",
"fileType": "zip",
"coordinateSystem": "LHS",
"metadata": {}
}
}{
"message": "Map created successfully",
"mapCode": "MAP_QQYKIBHXZE01",
"mapId": "text",
"uploadUrls": [
"text"
]
}Finalizes the multipart upload and queues the map for processing. In the
resumable flow send an empty body {}, the server assembles the
upload from the parts it received. In the standard flow send the
parts array (each part's ETag and PartNumber).
JWT token obtained from the authentication endpoint.
Upload completed; map queued for processing.
Map uploaded successfullyUnauthorized.
No active upload
POST /v2/vps/map/complete-upload/{id} HTTP/1.1
Host: api.multiset.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 42
{
"parts": [
{
"ETag": "text",
"PartNumber": 1
}
]
}{
"message": "Map uploaded successfully",
"mapId": "text"
}Resumable upload
1. Create the map in resumable mode
2. Request URLs for the parts you are about to send
3. Upload the parts
4. Resume after an interruption
5. Complete the upload
Cancel an upload
Returns presigned URLs for the requested part numbers of an in-progress upload (resumable flow).
JWT token obtained from the authentication endpoint.
1–100 unique part numbers to sign.
[1,2,3,4]Signed URLs keyed by part number.
Unauthorized.
Forbidden. The map does not belong to your account.
Map not found.
No active upload for this map.
POST /v2/vps/map/sign-part HTTP/1.1
Host: api.multiset.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Content-Type: application/json
Accept: */*
Content-Length: 40
{
"mapId": "text",
"partNumbers": [
1,
2,
3,
4
]
}{
"signedUrls": {
"ANY_ADDITIONAL_PROPERTY": "text"
}
}Lists the part numbers already received by the server, so a resumed upload can skip them.
JWT token obtained from the authentication endpoint.
Map id.
Uploaded parts.
true[1,2,3,5]Unauthorized.
Forbidden.
Map not found.
GET /v2/vps/map/list-parts/{id} HTTP/1.1
Host: api.multiset.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"active": true,
"uploadedPartNumbers": [
1,
2,
3,
5
]
}Cancels an in-progress upload and removes the map.
JWT token obtained from the authentication endpoint.
Upload aborted.
Upload abortedUnauthorized.
Forbidden.
Map not found.
No in-progress upload to abort for this map.
POST /v2/vps/map/abort-upload/{id} HTTP/1.1
Host: api.multiset.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"message": "Upload aborted",
"mapId": "text"
}Choosing a part size
Errors worth handling
Last updated
Was this helpful?

