Select platform: [Android](https://developers.google.com/maps/documentation/places/android-sdk/place-session-tokens.md.txt "View this page for the Android platform docs.") [iOS](https://developers.google.com/maps/documentation/places/ios-sdk/place-session-tokens.md.txt "View this page for the iOS platform docs.") [JavaScript](https://developers.google.com/maps/documentation/javascript/session-pricing.md.txt "View this page for the JavaScript platform docs.") [Web Service](https://developers.google.com/maps/documentation/places/web-service/place-session-tokens.md.txt "View this page for the Web Service platform docs.")

<br />

# Session tokens

Session tokens are user-generated strings (or objects) that track [Autocomplete (New)](https://developers.google.com/maps/documentation/places/android-sdk/place-autocomplete.md.txt)
calls as *sessions*. Autocomplete (New) uses session tokens to group the query
and selection phases of a user autocomplete search into a discrete session for
billing purposes.

Users are responsible for creating session tokens for each session. Session
tokens must be URL- and filename-safe base64 strings. Users can generate session
tokens in any manner, although Google recommends using [version 4 universally
unique identifiers (UUIDs)](https://tools.ietf.org/html/rfc4122) for session tokens.

The session begins with a call to Autocomplete (New), and concludes with a call
to [Place Details (New)](https://developers.google.com/maps/documentation/places/android-sdk/details-place.md.txt) or [Address Validation](https://developers.google.com/maps/documentation/address-validation/overview.md.txt). Each session can have
multiple Autocomplete (New) queries, followed by one request to Place Details
(New) or Address Validation. The API key(s) used for each request within a
session must belong to the same Google Cloud Console project.
**Note:** Session tokens cannot be exchanged between Places API (Legacy) endpoints and Places API (New) or Address Validation endpoints. For example, a [Place Autocomplete (Legacy)](https://developers.google.com/maps/documentation/places/android-sdk/autocomplete) request can be followed by a Place Details (Legacy) request in the same session, but it cannot be followed by a Place Details (New) request or an Address Validation request in the same session.

Session tokens terminate in the following ways:

- Place Details (New) is called.
- Address Validation is called.
- The session is abandoned.

**Note:** You can optionally omit the Autocomplete (New) session token from a request. If the session token is omitted, each request is billed separately and charges the [SKU: Autocomplete Requests](https://developers.google.com/maps/billing-and-pricing/sku-details/places.md.txt#places_autocomplete-request-new-ess-sku).

Once a session has concluded, the token is no longer valid; your app must
generate a fresh token for each new session. If the `sessionToken` parameter is
omitted, or if you reuse a session token, the new session is charged as if no
session token was provided (each request is billed separately).

For more information about how Autocomplete (New) requests are billed, see
[Autocomplete (New) and session pricing](https://developers.google.com/maps/documentation/places/android-sdk/session-pricing.md.txt).