Autocomplete
The Autocomplete endpoint offers real-time search suggestions for POIs within your venue as users type, facilitating the development of predictive search interfaces that enable users to quickly locate indoor locations.
Most integrations should use a client library. The Map JS API and mobile SDKs handle authentication, map binding, and error handling automatically. Call the REST API directly only when building a backend service or a platform where the JS library is unavailable.
What is the Autocomplete Endpoint?
Returns real-time search suggestions for POIs as users type, enabling fast location discovery within indoor venues.
When to Use This Endpoint
Autocomplete is suited to interactive search inputs — search bars, wayfinding kiosks, and voice interfaces — where users need instant suggestions from partial queries like “coffee” or “exit.” It works across POI names and attributes, can be filtered by building, floor, or category, and supports multiple languages.
For scenarios where you need complete GeoJSON geometry or paginated results, use the Search endpoint instead.
API Endpoint
GET https://api.woosmap.com/indoor/venues/{venueId}/pois/autocomplete
Authentication
Authenticate using either a key (public API key for client-side requests) or private_key (for server-side requests).
Public keys require domain/IP restrictions, while private keys should be kept secret and never exposed in client code.
# Client-side
?query=bakery&key=YOUR_PUBLIC_KEY
# Server-side
?query=bakery&private_key=YOUR_PRIVATE_KEY
For complete authentication details and security best practices, see API Keys Documentation.
Request Parameters Overview
Required Parameters
| Parameter | Type | Description |
|---|---|---|
key or private_key |
string | Your Woosmap API key |
query |
string | User’s search input (e.g., “coffee shop”) |
Key Optional Parameters
| Parameter | Type | Description |
|---|---|---|
building |
string | Filter results to specific building |
level |
integer | Filter results to specific floor level |
category |
string | Filter by POI category |
language |
string | Language code for localized results (e.g., “en”, “fr”) |
limit |
integer | Maximum number of results (default: 5) |
Request Example
GET https://api.woosmap.com/indoor/venues/gdn_doc/pois/autocomplete?query=bakery&key=YOUR_API_KEY
const response = await fetch(
`https://api.woosmap.com/indoor/venues/${venueId}/pois/autocomplete?` +
`query=bakery&key=YOUR_API_KEY`
);
const suggestions = await response.json();
Response Format
The API returns a predictions array with POI suggestions, along with pagination information. Each prediction includes the POI’s identifier, name, building, level, and optional distance/duration if a location was provided.
Response Fields
| Field | Type | Description |
|---|---|---|
predictions |
array | Array of POI suggestions |
predictions[].id |
string | Unique identifier for the POI (use with Details endpoint) |
predictions[].name |
string | Display name of the POI |
predictions[].building |
string | Building identifier |
predictions[].level |
integer | Floor level number |
predictions[].category |
array | POI category classification |
predictions[].distance |
number | Distance in meters from location (if provided) |
predictions[].duration |
number | Duration in seconds from location (if provided) |
pagination |
object | Pagination metadata (page, total, per_page) |
Status Codes
OK: Request successfulZERO_RESULTS: No matching POIs foundINVALID_REQUEST: Missing or invalid parametersREQUEST_DENIED: Invalid API key or unauthorized accessOVER_QUERY_LIMIT: Rate limit exceeded
Implementation Notes
Debounce requests by 300–500 ms so the API is only called once the user has paused typing, and only trigger from 2–3 characters to avoid low-value results. Apply building and level filters whenever the user’s current context is known — this keeps suggestions relevant and reduces noise in large venues. When building on top of the Map JS API, pass results directly to indoorRenderer.highlightFeature() to avoid a redundant Details call.
Usage with Map JS API
const indoorService = new window.woosmap.map.IndoorService();
indoorService.autocomplete(
"gdn_doc", // venueId
"bakery", // query
(predictions) => {
predictions.predictions.forEach((p) => {
console.log(p.name, "— level", p.level);
});
}
);