Simulation Data

Manage simulation data used to test localization.

Simulation data lets you test the localization pipeline without being physically present at the mapped site. Each simulation data record is a zip file containing pre-recorded camera frames and metadata that can be replayed against the localization APIs.

A typical workflow is:

  1. Record simulation data at the site.

  2. Upload the resulting zip via POST /v1/simulation-data, the response gives you a unique simulationCode.

  3. Reference the simulationCode when replaying the captured frames against your maps.

  4. Update, download, or delete the simulation as your test set evolves.

Max upload size is 10 MB and the file must be a .zip. The uploaded part's Content-Type must be application/zip or application/x-zip-compressed, any other value (including the application/octet-stream default that some HTTP clients send) is rejected with Only zip files are allowed. The returned simulationCode is an 8-character alphanumeric identifier, use it in all subsequent calls.

Zip File Format

The uploaded .zip represents a single capture session, a small set of AR camera frames plus the device pose and camera intrinsics at the moment each frame was captured. Replaying this archive against a map reproduces a real-world localization session offline.

What a capture contains

Each capture session contains exactly one dataset:

  1. A fixed number of camera frames (4–6, default 5) stored as JPEGs.

  2. The 6-DoF camera pose at the instant each frame was acquired, (x, y, z) position and (qx, qy, qz, qw) quaternion rotation, in a left-handed (LHS) world coordinate system (Unity convention). See Coordinate system below if your capture pipeline is right-handed.

  3. The camera intrinsics for the session, focal length (fx, fy), principal point (px, py), and the image dimensions (width, height). Captured once and assumed constant for the rest of the session.

Coordinate system

All poses in the manifest must be expressed in a left-handed coordinate system (LHS), the same convention the MultiSet Unity SDK and the localization replay pipeline use. Uploading right-handed (RHS) poses without converting them first will produce poses that look mirrored along the X axis when replayed, and localization will not match the original capture.

If your capture pipeline produces RHS poses (for example, native iOS / Android, ARKit / ARCore raw transforms, or any OpenGL-style stack), convert each pose to LHS before writing it into the manifest. The full conversion is: negate position.x, negate rotation.qy and rotation.qz, keep the rest unchanged.

Captures produced by the MultiSet Unity SDK are already LHS, no conversion is needed.

Zip layout

Entries inside the zip are flat, there is no top-level folder:

  • Image filenames follow Image_<index>_<timestamp>.jpg, where <index> is the zero-based capture order. Images must appear in the same order as the entries in the JSON manifest's imageDataList so they can be paired positionally.

  • The timestamp suffix <yyyyMMdd_HHmmss> is identical for every file in the session.

  • JPEGs should be encoded at quality ~80.

SimulationData_<timestamp>.json manifest

The single JSON manifest at the root of the zip describes the intrinsics and the per-frame pose, in capture order:

Field
Type
Notes

width, height

int

Working image resolution in pixels (must match the JPEGs).

fx, fy

float

Camera focal length in pixels, scaled to match width/height.

px, py

float

Camera principal point in pixels, scaled to match width/height.

imageDataList

array

One entry per image. Same order as Image_0, Image_1, …

imageDataList[].x, .y, .z

float

Camera position at frame acquisition.

imageDataList[].qx, .qy, .qz, .qw

float

Camera rotation as a quaternion.

Example:

Upload Simulation Data

Upload a new simulation data zip. Returns a simulationCode you use to reference it later.

Upload simulation data

post

Upload a zip file containing simulation data for testing localization APIs. On success the response returns a unique simulationCode that you use to reference the simulation in all subsequent calls.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Body
namestring · max: 255Required

Name for the simulation data

Example: Test Simulation 1
descriptionstring · max: 1000Optional

Optional description for the simulation data

Example: Simulation data for AR localization testing
filestring · binaryRequired

Zip file containing simulation data (max 10 MB). The part's Content-Type header must be application/zip or application/x-zip-compressed. From curl, append ;type=application/zip to the -F file=@... value to set it.

Responses
post
/simulation-data

List Simulation Data

Paginated list of simulation data for the authenticated account. Supports search by name and filtering by status.

List simulation data

get

Get a paginated list of simulation data for the authenticated account with optional filtering.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Query parameters
pageinteger · min: 1Optional

Page number for pagination

Default: 1
limitinteger · min: 1 · max: 100Optional

Number of items per page

Default: 10
querystring · max: 255Optional

Case-insensitive partial match against the simulation name

statusstring · enumOptional

Filter by simulation data status

Possible values:
Responses
200

List of simulation data retrieved successfully

application/json
get
/simulation-data

Get Simulation Data by Code

Retrieve details (name, description, status, file size, timestamps) for a single simulation data record.

Get simulation data by code

get

Retrieve details (name, description, status, file size, timestamps) for a single simulation data record.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
simulationCodestringRequired

The 8-character code that identifies the simulation data

Example: A1B2C3D4
Responses
200

Simulation data details retrieved successfully

application/json
simulationCodestringOptionalExample: A1B2C3D4
namestringOptionalExample: Test Simulation 1
descriptionstringOptionalExample: Simulation data for AR localization testing
fileSizenumberOptionalExample: 1024000
originalFilenamestringOptionalExample: test_simulation.zip
statusstring · enumOptionalExample: activePossible values:
createdAtstring · date-timeOptional
updatedAtstring · date-timeOptional
get
/simulation-data/{simulationCode}

Update Simulation Data

Update the name and/or description of an existing simulation data record. At least one of the two fields must be supplied.

Update simulation data

put

Update the name and/or description of an existing simulation data record. At least one of name or description must be provided in the request body.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
simulationCodestringRequired

The 8-character code that identifies the simulation data to update

Example: A1B2C3D4
Body
anyOptional
or
anyOptional
Responses
200

Simulation data updated successfully

application/json
messagestringOptionalExample: Simulation data updated successfully
simulationCodestringOptionalExample: A1B2C3D4
put
/simulation-data/{simulationCode}

Delete Simulation Data

Removes the simulation data record and deletes the underlying zip file from storage. This action is irreversible.

Delete simulation data

delete

Delete a simulation data record and remove the underlying file from storage.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
simulationCodestringRequired

The 8-character code that identifies the simulation data to delete

Example: A1B2C3D4
Responses
200

Simulation data deleted successfully

application/json
messagestringOptionalExample: Simulation data deleted successfully
simulationCodestringOptionalExample: A1B2C3D4
delete
/simulation-data/{simulationCode}

Download Simulation Data

Generates a short-lived pre-signed URL for downloading the zip. The response includes the URL, the original filename, and the file size.

Download simulation data

get

Generate a secure pre-signed download URL for the simulation data zip file.

Authorizations
AuthorizationstringRequired
Bearer authentication header of the form Bearer <token>.
Path parameters
simulationCodestringRequired

The 8-character code that identifies the simulation data to download

Example: A1B2C3D4
Responses
200

Download URL generated successfully

application/json
messagestringOptionalExample: Download URL generated successfully
downloadUrlstring · uriOptionalExample: https://s3.amazonaws.com/bucket/path/to/file.zip?X-Amz-Algorithm=...
filenamestringOptionalExample: test_simulation.zip
fileSizenumberOptionalExample: 1024000
get
/simulation-data/{simulationCode}/download

Last updated

Was this helpful?