IndoorAtlas Positioning REST API allows tracking of any devices that are able to scan their surrounding Wi-Fi and/or BLE beacon environment. This service is ideal for devices that are not able to run the full IndoorAtlas SDK such as wearables, IoT devices or even PCs.


The Positioning API uses the same mapping data and the same radio positioning technology (WiFi, BLE beacons) that our full blown SDKs use in the sensor fusion together with geomagnetic data and other sensor data. This means that with the same mapping work, you can now mix smartphones running our SDKs and other devices such as wearables or IoT devices using our Positioning API. 


The positioning accuracy depends on the richness of the surrounding radio environment and typically ranges from 5 to 15 meters. You can freely select the position update frequency -- e.g. from 3s between positions to checking position every hour or once a day.



Note!
For tracking of mobile phones, it is highly recommended to use the IndoorAtlas SDKs for better accuracy.


Prerequisites

  • The relevant premises are mapped with Map Creator 2
  • The API key used is created with Positioning API scope enabled.


Example


To use the positioning API, the application must be able to read a Wi-Fi scan from the device. It is a list of observed Wi-Fi access point MAC addresses (BSSIDs) and the corresponding signal strengths (RSSIs in dBm).

To find the location of the device, the Wi-Fi scan is sent to the /locateendpoint of the API as the JSON payload of an HTTP POST request, for example:


curl -X POST "https://positioning-api.indooratlas.com/v1/locate?key=$APIKEY" \
  -H "Content-Type: application/json" \
  -d '{"wifis":[
    {"macAddress":"06:18:d6:c1:c0:89","signalStrength":-55},
    {"macAddress":"de:99:ad:37:be:1c","signalStrength":-82}
  ]}'



which returns the corresponding coordinates, floor number and accuracy (uncertainty radius):


{
  "location": {
    "floorNumber": 7,
    "coordinates": {
      "lat": 60.17066855531062,
      "lon": 24.945905116025607
    },
    "accuracy": 10
  },
  "context": {
    "indooratlas": {
      "floorPlanId": "a314b673-d27d-4bd1-a9bf-bc0cdbd7147c",
      "venueId": "9760790b-4069-41d0-949a-3ed28ad2dbe8"
    }
  }
}



The response also includes the associated floor plan and location contexts as floorPlanId and venueId.


The complete API reference with WiFi and BLE input format specs is available here.


See more about accessing Venue metadata from Venue REST API.