Accuware provides the Indoor “locate” API call that can be used to integrate the indoor tracking/navigation capabilities of the Accuware Indoors engine inside your application/firmware for:

  • any smartphone, tablet, smartwatch not equipped with Android/iOS (e.g. Windows 10 Mobile, BlackBerry 10 etc..)
  • any kind of embedded device (e.g. drones, laptops, medical equipment, vehicles etc..) with a Wi-Fi and/or Bluetooth chip

Android and iOS development: if you want to develop an App for Android/iOS then you must use the Indoors SDK.


Your application/firmware must be developed to do these 2 things:

  1. make scans in real-time of the radio signals in the environment at the device’s current location.
  2. upload the ambient radio signals collected to the Accuware server calling the “locate” API call described below

Pattern-matching the real-time radio signals detected against the database of radio signals created during the fingerprinting phase (fingerprints database), the Indoors engine on the Accuware server will estimate the device’s location with an average accuracy of 3 meters. Once computed the location of the device can be retrieved calling the the “station” API described at this link.

Indoor “locate” API call



This is the POST call used to upload the ambient radio signals collected and receive back the location from the Indoor server. The URI for this query is composed by combining the siteID with the MAC address of the station, plus a list of pairs of access points identifiers and RSSIs detected by the station during a scan of the environment. Pattern-matching the ambient radio signals against the database of fingerprint (previously created during the fingerprinting), the Accuware Indoors engine on the cloud server is able to estimate the station’s location as latitude, longitude and levelID.

Resource-wide template parameters:

  • {siteId}: site identification string.
  • {mac}: the MAC address of the station.

Accepted representations:

  • application/x-www-form-urlencoded


scans: a list of access points MAC addresses and Received Signal Strength (RSS) values according to the following structure:


The 0 fields at the beginning and end of each scan are reserved and should not be changed.

(optional) mv: this parameter instructs the server about the status of the device. The accepted values for this parameter, which are typically inferred by monitoring the accelerometer/vibration sensor of the device, are the following:

  • mv = 0 (no motion)
  • mv = 1 (motion – default)
  • mv = 2 (unknown)

Passing this parameter to the server will improve the location accuracy when the device is static! The mv parameter could be included according to the following structure:



Simulate the upload of a “scan” array with 3 access point detected by a station with MAC address EEZZYYRR1122 inside site 1001:

curl -u username:password -X POST -d "scans=0,AABBCCDDEE11,-39,0;0,AABBCCDDEE22,-15,0;0,AABBCCDDEE33,-20,0;"

The result is the updated device’s location:


If the scans supplied don’t match any of the fingerprints, the result will be an empty JSON object

[ ]