canonical: https://jentic.com/apis/googleapis.com/walletobjects

# Google Wallet API

The Google Wallet API lets issuers create and manage saveable passes including event tickets, boarding passes, loyalty cards, gift cards, offers, and generic passes. Each pass is modeled as a Class (the template) and an Object (the per-user instance), with separate endpoints for creating, updating, expiring, and posting messages to passes. Issuers also smart-tap signing keys, manage Jose JWT formats for the Add to Google Wallet button, and can fan out updates to all holders of a class.

## For AI agents

Create and update Google Wallet passes for tickets, boarding passes, loyalty cards, gift cards, and offers so an agent can issue saveable passes and push updates to holders.

## Scope

Does not handle payment processing, card-on-file storage, or Apple Wallet passes - use for issuing and updating Google Wallet pass classes and objects only.

## Capabilities

- Create and manage event ticket classes and per-user objects with seat and section data
- Issue boarding pass classes and objects including flight, gate, and seat updates
- Operate loyalty program classes and member objects with point balances and tier metadata
- Issue gift card classes and objects with balances and barcode redemption codes
- Distribute offers and coupon classes redeemable in-store or online
- Push messages to all holders of a class for delays, expirations, or promotions
- Manage smart-tap merchant configuration for in-person tap-to-pay redemption

## Use cases

### Event Ticketing Add to Google Wallet

Ticketing platforms create an event ticket Class for each event and an Object for each ticket buyer, then expose an Add to Google Wallet button that opens the pass directly. The Wallet API supports seat, section, row, and gate metadata and lets the issuer push real-time updates such as gate changes or delays via the addMessage endpoint. This replaces email-only confirmations with a saveable pass that surfaces on the user's lock screen near the venue.

Example prompt: Create an event ticket class for Concert-2026-07-04 and insert ticket objects for each buyer with seat metadata

### Airline Boarding Pass Distribution

Airlines issue Google Wallet boarding passes alongside email and app delivery so travelers have a backup that updates in real time. The Wallet API exposes flightClass and flightObject endpoints with rich flight, gate, and seat fields, plus addMessage for delay notifications. Smart-tap signing keys enable boarding pass scanning at the gate without the user opening the app.

Example prompt: Update the gate field on every flightObject for flight UA123 and post a message to all holders

### Loyalty Program in Google Wallet

Retailers issue loyalty cards as Google Wallet passes so members can redeem in-store via smart-tap or scan a QR code. The Wallet API supports loyaltyClass and loyaltyObject with points balances, tier names, and program-wide messaging, letting the issuer push updates when a member's status changes. The Add to Google Wallet flow keeps the card synced without manual updates by the cardholder.

Example prompt: Create a loyaltyObject for member 12345 with 1,200 points and Gold tier and link it to the loyalty class

### AI Agent Pass Issuance

An AI agent integrated through Jentic responds to merchant prompts like 'issue a digital ticket to this customer' by discovering the Google Wallet API by intent search, creating an event ticket Object linked to an existing Class, and returning the JWT used by the Add to Google Wallet button. Because the API uses OAuth 2.0 with the wallet_object.issuer scope, Jentic isolates the token in your Jentic One instance and exposes only a scoped reference.

Example prompt: Search Jentic for issue an event ticket pass and call the eventTicketObject insert operation with seat metadata

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /walletobjects/v1/eventTicketClass | List event ticket classes for an issuer |
| POST | /walletobjects/v1/eventTicketClass/{resourceId}/addMessage | Send a message to all holders of an event ticket class |
| GET | /walletobjects/v1/eventTicketObject | List event ticket objects for a class |
| GET | /walletobjects/v1/eventTicketObject/{resourceId} | Get a specific event ticket object |

## Key resources

- **EventTicketClass and EventTicketObject** — Templates and per-holder ticket instances for events and venues
- **FlightClass and FlightObject** — Boarding pass templates and per-passenger instances with flight, gate, and seat data
- **LoyaltyClass and LoyaltyObject** — Loyalty program templates and member cards with points, tiers, and messaging
- **GiftCardClass and GiftCardObject** — Gift card templates and per-recipient instances with balances and barcodes
- **OfferClass and OfferObject** — Coupon and offer templates and per-recipient instances with redemption codes
- **TransitClass and TransitObject** — Transit ticket templates and per-rider instances for buses, trains, and ferries
- **SmartTap and Issuer** — Smart-tap merchant configuration and issuer-level account management

## Why Jentic

- **Setup:** Wiring the Google Wallet API by hand means setting up OAuth 2.0 with the wallet_object.issuer scope, managing token refresh, and matching class and object calls against the walletobjects.googleapis.com host. Through Jentic you install once, import the Google Wallet API from the API Directory, store the issuer credential once, and your agent calls it.
- **Permission scoping:** The Google Wallet API puts the pass identifier in the URL path (/walletobjects/v1/eventTicketObject/{resourceId}), so a rule can pin your agent to one pass class or object: it can read that resource and add messages to it and nothing else. You choose the operations it may call, so class creation or object updates are not included unless you add them.
- **Credential handling:** Your Google Wallet issuer credential is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'issue an event ticket pass' or 'add a message to a loyalty object', and Jentic returns the matching class or object operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Cloud Vision API** — OCR scanned receipts or barcodes used in pass redemption flows
- **Gmail API** — Send the email containing the Add to Google Wallet button after pass issuance
- **Cloud Monitoring API** — Track Wallet API call volume, error rates, and pass issuance funnel metrics
- **Cloud Translation API** — Localize pass copy fields like issuerName, eventName, and message body

## FAQ

### What authentication does the Google Wallet API use?

The Google Wallet API uses OAuth 2.0 with the https://www.googleapis.com/auth/wallet_object.issuer scope, typically authorized via a service account on the registered issuer ID. Through Jentic, the OAuth token is stored encrypted in your Jentic One instance and only a scoped reference is exposed to the agent at execution time.

### Can I push real-time updates to passes already saved in Google Wallet?

Yes. Update the relevant Object (for example, a flightObject) with the new field values, or call addMessage on the parent Class to fan out a message to every holder. Updates propagate to saved passes the next time the user's device syncs with Google.

### What are the rate limits for the Google Wallet API?

Default issuer quotas allow 600 requests per minute and roughly 25,000 requests per day, with bulk insert operations counting as a single call regardless of object count. Higher quotas are available on request through the Wallet issuer console.

### How do I issue an event ticket pass through Jentic with the Google Wallet API?

Install Jentic with pip install jentic, search for issue an event ticket pass, load the schema for the eventTicketObject insert operation, then call it with classId, objectId, seatInfo, and barcode. Generate the JWT for the Add to Google Wallet button using your issuer signing key and reference the inserted object.

### Does the Google Wallet API support smart-tap for in-person redemption?

Yes. The smartTap resource manages merchant smart-tap configuration including key version and merchant identifiers. Passes that include smartTapRedemptionValue and a registered merchant key can be redeemed by tapping the device against an NFC reader without opening the Wallet app.

### Why does my insert call fail with 403 even with a valid token?

The Google Wallet API enforces issuer-level access on top of OAuth scopes. Confirm your issuer ID is approved for the relevant pass type in the Wallet issuer console, and that the service account is added as an authorized account on the issuer. Pass type approval can take several days for first-time issuers.

### Can I limit what my agent is allowed to do with the Google Wallet API?

Yes. Because you run Jentic One self-hosted, your own rules decide which Google Wallet operations and credentials the agent may use, and the pass identifier sits in the URL path (for example /walletobjects/v1/eventTicketObject/{resourceId}), so you can pin the agent to a single pass class or object. Scoped that way, the agent can read that resource and post an addMessage to it and nothing else. Operations like class creation or object updates stay off limits unless you explicitly grant them, and the encrypted issuer credential is injected only at execution time.
