> For the complete documentation index, see [llms.txt](https://multiset.gitbook.io/multiset/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://multiset.gitbook.io/multiset/quick-access/getting-started.md).

# Getting Started

This page walks the full journey: scan a space, build against it with the SDK of your choice, then layer on MapSets, Map Versions, Object Tracking, and georeferencing as your project needs them. Each step links to the detailed guide.

## Step 1: Create your account

1. Register or log in at the [MultiSet Developer Portal](https://developer.multiset.ai/).
2. Open **Credentials** and copy your **Client ID** and **Client Secret**. Every SDK and every REST call authenticates with this pair. See [Credentials](/multiset/basics/credentials.md).

{% hint style="info" %}
Calling the API from a browser? Whitelist your domain first, see [Configuring Allowed Domains (CORS)](/multiset/basics/credentials/configuring-allowed-domains-cors.md).
{% endhint %}

## Step 2: Scan your space

A **Map** is a single scanned space. You can create one with a phone or bring in data from professional survey hardware, whichever suits the size and accuracy your site needs.

### Option A: Scan with an iPhone or iPad

The fastest way to a working map. Install the MultiSet app on a **LiDAR-equipped iPhone or iPad**, walk the space, and upload. No extra hardware required.

* [**MultiSet on the App Store**](https://apps.apple.com/us/app/multiset/id6737130008) : scanning, localization, content space, and geo-referencing
* [**MultiSet on Google Play**](https://play.google.com/store/apps/details?id=ai.multiset.maps) : localization, content space setup, and geo-referencing

{% hint style="warning" %}
**Scanning is iOS only.** Mapping requires the LiDAR sensor on an iPhone or iPad, so the Android app cannot create maps. Use it to test localization, set up a content space, and geo-reference maps you have already captured.
{% endhint %}

* [Maps](/multiset/basics/maps.md) : create and manage a map from the app
* [Mapping Instruction](/multiset/basics/maps/mapping-instruction.md) : how to walk the space while scanning
* [Mapping Planning](/multiset/basics/maps/mapping-planning.md) : plan your coverage before you start
* [Mapping Equipment](/multiset/basics/maps/mapping-equipment.md) : what to bring for larger sites

### Option B: Upload a third-party scan

Already have survey-grade data, or need to cover a large site at high accuracy? Upload an existing scan instead of rescanning.

| Capture method        | Hardware                     | Guide                                                                  |
| --------------------- | ---------------------------- | ---------------------------------------------------------------------- |
| **360 video**         | Insta360 X4, X5              | [Insta360 Scans](/multiset/basics/third-party-scans/insta360-scans.md) |
| **Terrestrial LiDAR** | Matterport Pro2, Pro3        | [Matterport E57](/multiset/basics/third-party-scans/matterport-e57.md) |
| **Terrestrial LiDAR** | Leica RTC360, BLK360, BLK2GO | [Leica Scans](/multiset/basics/third-party-scans/leica-scans.md)       |
| **Mobile mapping**    | NavVis VLX, M6               | [NavVis Scans](/multiset/basics/third-party-scans/navvis-scans.md)     |
| **Mobile mapping**    | Faro Focus, Orbis, Flash     | [Faro Scans](/multiset/basics/third-party-scans/faro-scans.md)         |
| **SLAM scanner**      | Xgrids L2 Pro, K1            | [Xgrids Scans](/multiset/basics/third-party-scans/xgrids-scans.md)     |
| **Gaussian Splat**    | Xgrids via Lixel CyberColor  | [Gaussian Splat](/multiset/basics/third-party-scans/gaussian-splat.md) |

See [Third Party Scans](/multiset/basics/third-party-scans.md) for the full list of supported vendors, file types, and input requirements. Scanners not on the list usually work too, as long as the `.e57` is structured the same way.

## Step 3: Build your app

Once a map is **Active**, pick the integration path that matches your target platform. Every SDK handles authentication, localization, and content anchoring for you, so you rarely need to touch the REST API directly.

| Platform                    | Use it for                                                              | Docs                                                                     | GitHub                                                                      |
| --------------------------- | ----------------------------------------------------------------------- | ------------------------------------------------------------------------ | --------------------------------------------------------------------------- |
| **Unity**                   | Cross-platform AR on iOS and Android, the most complete SDK             | [Getting Started](/multiset/unity-sdk/getting-started.md)                | [multiset-unity-sdk](https://github.com/MultiSet-AI/multiset-unity-sdk)     |
| **iOS Native (Swift)**      | Native ARKit apps with no Unity dependency                              | [iOS Swift Native](/multiset/native-support/ios-swift-native.md)         | [multiset-ios-sdk](https://github.com/MultiSet-AI/multiset-ios-sdk)         |
| **Android Native (Kotlin)** | Native ARCore apps with no Unity dependency                             | [Android Native](/multiset/native-support/android-native.md)             | [multiset-android-sdk](https://github.com/MultiSet-AI/multiset-android-sdk) |
| **WebXR**                   | Browser-based AR with Three.js or Needle Engine, no install             | [WebXR SDK](/multiset/webxr-sdk/webxr-sdk.md)                            | [@multisetai/vps](https://www.npmjs.com/package/@multisetai/vps) (npm)      |
| **Meta Quest**              | Headset MR experiences on Quest 3 and Quest 3S                          | [Installation Guide](/multiset/multiset-quest-sdk/installation-guide.md) | [multiset-quest-sdk](https://github.com/MultiSet-AI/multiset-quest-sdk)     |
| **Meta Wearables**          | Meta Ray-Ban Smart Glasses via the Meta Wearables Device Access Toolkit | [Meta Ray-Ban Smart Glasses](#meta-ray-ban-smart-glasses)                | [wearable-vps-samples](https://github.com/MultiSet-AI/wearable-vps-samples) |
| **REST API**                | Your own client, robotics, backend services, custom engines             | [REST API Docs](/multiset/basics/rest-api-docs.md)                       | [MultiSet-AI](https://github.com/MultiSet-AI)                               |

All SDKs and samples are published under [github.com/MultiSet-AI](https://github.com/MultiSet-AI).

### Meta Ray-Ban Smart Glasses

Wearables support ships as standalone sample apps rather than a packaged SDK. Both samples use the **Meta Wearables Device Access Toolkit (DAT SDK)** to pair with Meta Ray-Ban Smart Glasses, stream the live camera feed, and run VPS localization from the paired phone:

* [**iOS sample**](https://github.com/MultiSet-AI/wearable-vps-samples/tree/main/iOS) : localization, audio turn-by-turn navigation to Points of Interest, on-lens HUD navigation on Ray-Ban **Display** glasses, and multiplayer pose sharing with a host running the MultiSet iOS SDK.
* [**Android sample**](https://github.com/MultiSet-AI/wearable-vps-samples/tree/main/Android) : localization, audio turn-by-turn navigation, and a live 2D map view.

Both need the **Meta AI app with Developer Mode enabled**, a pair of Meta Ray-Ban Smart Glasses, and your MultiSet Client ID and Secret. For a Unity host sharing a session with a wearable client, see [Multiplayer Sample](/multiset/unity-sdk/sample-scenes/multiplayer-sample.md).

### Going direct with the REST API

If you are working on a platform we do not ship an SDK for, or you want full control on the client side, call the API yourself. [Authenticate](/multiset/basics/rest-api-docs/authentication.md) once for a JWT, then send camera frames to the [Map Query](/multiset/basics/rest-api-docs/map-query.md) endpoint and get a 6-DoF pose back. See [Localization](/multiset/basics/localization.md) for how single frame and multi frame queries differ and which hint parameters narrow the search.

## Step 4: Grow beyond a single map

Two features handle almost every map operation you will run into as a project grows.

### MapSet: cover a larger area

A **MapSet** joins multiple maps into one coordinate frame, so a venue too large for a single scan still behaves as one seamless space. Each map keeps its own detail while the MapSet holds the precise relative transforms between them. Query the `mapSetCode` and the VPS resolves the pose across every map in the set.

Add a map to a MapSet and it aligns against the whole set automatically, existing maps are untouched.

* [MapSet : Multiple Maps](/multiset/basics/mapset-multiple-maps.md)
* [Merging Maps with Overlap](/multiset/basics/mapset-multiple-maps/merging-maps-with-overlap.md) : joining two scans that share physical space
* [Merging Maps without Overlap](/multiset/basics/mapset-multiple-maps/merging-maps-without-overlap.md) : joining scans that do not touch

### Map Version: update a space that changed

A **Map Version** groups two or more scans of the *same* space captured at different times. One scan is the base, and every newer scan is aligned to it by the VPS. Whether you rescan a corner of a room or the entire floor, the update is added as a version instead of replacing the map.

The reason this matters: **your content layer never moves.** Anchors, navigation paths, and AR overlays stay authored against the base map's frame, even when the new scan comes from different hardware with a different coordinate system. MultiSet computes the transform once and translates every query transparently.

* [Map Versioning](/multiset/basics/map-versioning.md)

{% hint style="success" %}
Use a **MapSet** to make a space bigger. Use a **Map Version** to make a space newer.
{% endhint %}

## Step 5: Add Object Tracking

Maps are inside-out: they track where the user is inside a space. **Object Tracking** is outside-in: it tracks a specific physical object while the user moves around it. Reach for it when your use case needs to anchor content to a machine, product, exhibit, or prop rather than to the room.

Upload a textured GLB of the target object, and MultiSet builds a tracking map from its geometry and texture. Object Tracking runs **with or without** a VPS map, in the **same session or a separate one**, so you can localize in a building and track a machine inside it, or track the object on its own with no map at all.

* [Object Tracking](/multiset/basics/object-tracking.md) : concepts and model requirements
* [How to Setup Object Tracking](/multiset/basics/object-tracking/how-to-setup-a-object-tracking.md) : end-to-end setup
* [Object Tracking Query](/multiset/basics/rest-api-docs/object-query.md) : the REST endpoint

## Step 6: Georeference for global pose

By default a localization result is in the map's **local** coordinate frame. If your app needs **global** pose, latitude and longitude rather than local XYZ, georeference the map. Once it is georeferenced you can pass a `geoHint` from device GPS to speed up localization, and convert results back to WGS84 coordinates.

There are three ways to get there:

* **Automatic:** Walk the site with the MultiSet App, localize at several well-spread points, and let the server solve the transform from the paired VPS poses and GPS fixes. Best for outdoor maps with clear sky view. See [Auto Geo-reference a Map](/multiset/basics/georeferencing-maps/auto-georeference-map.md).
* **Manual:** Align the scan against satellite imagery by hand and set the origin and heading yourself. Use this indoors or wherever GPS is unreliable. See [How to Manually Align Scans](/multiset/basics/georeferencing-maps/how-to-align-scans.md).
* **Inherited from the scan:** If the `.e57` you uploaded is already georeferenced, the map arrives georeferenced with no extra step.
* [Georeferencing Maps](/multiset/basics/georeferencing-maps.md) : setup and GeoHint
* [GeoHint in Localization](/multiset/basics/localization/geohint-in-localization.md) : using GPS as a localization prior
* [GeoPose Support](/multiset/basics/localization/geopose-support.md) : getting results back in global coordinates

## Where to go next

* [Localization](/multiset/basics/localization.md) : query types and the hint parameters that make localization faster and more accurate
* [Simulation](/multiset/basics/localization/simulation.md) : test a map in the portal without returning to the site
* [Simulation Data Capture](/multiset/multiset-app/simulation-data-capture.md) : record test data once, replay it anywhere
* [FAQ](/multiset/quick-access/faq.md) : common questions about the platform
* [Support](/multiset/basics/support.md) : get help from the MultiSet team


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://multiset.gitbook.io/multiset/quick-access/getting-started.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
