Autocomplete with Place Detail per Session
Reduce operational costs and improve user experience by providing real-time place suggestions and detailed place information in the same API session.
This guide helps you integrate the autocomplete feature and simultaneously display place details in a single API session. After completing the integration, your users can quickly find their desired place and receive detailed information about it seamlessly.
🛡️ About session token in Autocomplete + Place Detail
When using the Autocomplete feature, you should provide a sessiontoken
(UUID v4) for each user search session. This helps the system recognize related queries in the same session, resulting in:
- Cost optimization: Place Detail queries made after a user selects a suggestion from Autocomplete will not be charged separately, only the initial Autocomplete session is charged.
- Smooth experience: Users can search, select a place, and view details without being charged again for the same result.
How it works
- Step 1: When the user starts typing a search keyword, your app generates a
sessiontoken
(UUID v4) and includes it in every Autocomplete API call. - Step 2: The user can make multiple Autocomplete queries with the same sessiontoken.
- Step 3: When the user finally selects a place and you call Place Detail with the same sessiontoken, all previous Autocomplete queries and this final Place Detail call are considered as one session.
- Step 4: Only this session is charged as a single unit, regardless of the number of Autocomplete queries made before the final Place Detail call.
Note:
sessiontoken
is a UUID v4 string generated by the client (your application) and must be included in every request.- Each sessiontoken is only valid for 5 minutes from creation. After 5 minutes, you must generate a new sessiontoken for the next search session.
- If you call Place Detail without the correct sessiontoken used for Autocomplete, the system will charge it as a separate query.
Example
# 1. Call Autocomplete with sessiontoken
GET /autocomplete?input=Lotte Mall Tay Ho&sessiontoken=576e6543-fbc8-422c-9aad-9884c97df128
# 2. Call Place Detail for a place in the autocomplete result, using the same sessiontoken
GET /place?ids=aQA0KHmLGXVtbpFgpMqFfA0OjpRAAVFgTGaOYDTSgKXVbpiV-A6xZXkuPZgc&sessiontoken=576e6543-fbc8-422c-9aad-9884c97df128
Result:
- Only the Autocomplete query is charged.
- The Place Detail query is not charged extra if the correct sessiontoken is used.
Summary
- Always generate a new sessiontoken for each search session.
- Reuse the same sessiontoken for all Place Detail queries related to the Autocomplete results.
- Only Autocomplete is charged, Place Detail is not charged if using the same sessiontoken.
Base URL
The base URL for all API requests is:
https://mapapis.openmap.vn/v1
Endpoint
GET /autocomplete
Example
Generate a UUID v4 session token: 576e6543-fbc8-422c-9aad-9884c97df128
, keep it in your application's session.
You can generate a UUID v4 session token using UUID v4 Generator
Request:
GET /autocomplete?input=Lotte Mall Tây Hồ&sessiontoken=576e6543-fbc8-422c-9aad-9884c97df128
Response:
{
"predictions": [
{
"description": "Lotte Mall Tây Hồ, 272 Đường Võ Chí Công, phường Phú Thượng, quận Tây Hồ, thành phố Hà Nội",
"distance_meters": null,
"matched_substrings": [
],
"place_id": "aQA0KHmLGXVtbpFgpMqFfA0OjpRAAVFgTGaOYDTSgKXVbpiV-A6xZXkuPZgc",
"structured_formatting": {
"main_text": "Lotte Mall Tây Hồ",
"main_text_matched_substrings": [
],
"secondary_text": "272 Đường Võ Chí Công, phường Phú Thượng, quận Tây Hồ, thành phố Hà Nội",
"secondary_text_matched_substrings": [
]
},
"terms": [
{
"offset": 0,
"value": "Lotte Mall Tây Hồ"
},
{
"offset": 21,
"value": "272 Đường Võ Chí Công"
},
{
"offset": 51,
"value": "phường Phú Thượng"
},
{
"offset": 77,
"value": "quận Tây Hồ"
},
{
"offset": 95,
"value": "thành phố Hà Nội"
}
],
"types": [
"business_center"
]
}
],
"status": "OK"
}
Then, you can use the id
field along with the sessiontoken
parameter to get more details about the place (phone, website, opening hours..),
Request:
GET /place?ids=aQA0KHmLGXVtbpFgpMqFfA0OjpRAAVFgTGaOYDTSgKXVbpiV-A6xZXkuPZgc&sessiontoken=576e6543-fbc8-422c-9aad-9884c97df128&format=google
Response
{
"result": {
"address_components": [
{
"long_name": "Lotte Mall Tây Hồ",
"short_name": "Lotte Mall Tây Hồ"
},
{
"long_name": "272 Đường Võ Chí Công",
"short_name": "272 Đường Võ Chí Công"
},
{
"long_name": "phường Phú Thượng",
"short_name": "Phú Thượng"
},
{
"long_name": "quận Tây Hồ",
"short_name": "Tây Hồ"
},
{
"long_name": "thành phố Hà Nội",
"short_name": "Hà Nội"
}
],
"formatted_address": "Lotte Mall Tây Hồ, 272 Đường Võ Chí Công, phường Phú Thượng, quận Tây Hồ, thành phố Hà Nội",
"geometry": {
"location": {
"lat": 21.075951,
"lng": 105.812662
},
"viewport": null
},
"name": "Lotte Mall Tây Hồ",
"place_id": "aQA0KHmLGXVtbpFgpMqFfA0OjpRAAVFgTGaOYDTSgKXVbpiV-A6xZXkuPZgc",
"types": [
"business_center"
],
"url": "https://openmap.vn/place/aQA0KHmLGXVtbpFgpMqFfA0OjpRAAVFgTGaOYDTSgKXVbpiV-A6xZXkuPZgc"
},
"status": "OK"
}