Pass sessionToken to Place Details to enable Google session billing#52
Merged
sampoyigi merged 2 commits intoMay 15, 2026
Merged
Conversation
Google's Places API (New) bundles Autocomplete + Place Details into a
single billable session only when the same sessionToken is presented on
both calls. The Autocomplete request already sent the token, but
getPlaceCoordinates() omitted it, so every Autocomplete keystroke was
billed as a standalone request instead of as part of a free session
companion to the Details call.
Per the places.get REST reference, sessionToken is an optional query
string parameter on GET /v1/places/{PLACE_ID}. Appending it here lets
Google link the calls and apply session pricing.
Also bumps the local session-token expiry from 3 to 5 minutes to align
with Google's recommended session window, reducing premature token
rotation while a user is still typing.
There was a problem hiding this comment.
Pull request overview
This PR fixes Google Places session billing by sending the same sessionToken to the Place Details endpoint that was already used for Autocomplete, allowing Google to bundle them into a single billable session. The session token's local TTL is also extended from 3 to 5 minutes to better match Google's recommended session window.
Changes:
- Append
?sessionToken=<token>(URL-encoded) to the Place Details GET URL via the existinggetPlacesSessionToken()helper. - Extend the in-session token expiry from 3 minutes to 5 minutes.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
The Google Places provider sends a
sessionTokenon Autocomplete requests but does not send it on the subsequent Place Details call (getPlaceCoordinates). Google only bundles Autocomplete + Place Details into a single billable session when the same token is presented on both calls — so as-is, every Autocomplete keystroke is billed as a standalone request instead of as a free companion to the Details call.Per the
places.getREST reference,sessionTokenis documented as a query-string parameter (URL/filename-safe base64, ≤36 ASCII chars). UUIDv4 fromStr::uuid()satisfies that constraint.This PR:
?sessionToken=<token>to the Place Details GET URL inGoogleProvider::getPlaceCoordinates()using the existinggetPlacesSessionToken(). The existingclearPlacesSessionToken()after a successful Details call continues to end the session correctly.Behavior
sessionTokenin the body.sessionTokenas a query parameter, then clears it on success.Test plan
?sessionToken=…matching the token used for Autocomplete.🤖 Generated with Claude Code