WalletPassAPI Docs

Getting started

Introduction

Issue and update Apple Wallet and Google Wallet passes with one API.

WalletPassAPI makes Apple Wallet and Google Wallet passes from one description of the pass. You send its content; we sign it for both wallets, give you an install page that offers each phone the right wallet, and refresh the pass on holders' phones when you change it.

How it works

  1. Describe the pass: its name, fields, barcode, colours and images, as JSON. Or design it once as a template and send only each holder's values.
  2. We build both passes: the signed Apple Wallet pass and the Google Wallet pass, with your Apple and Google credentials (or ours, for testing).
  3. The holder installs it from the install page: Add to Apple Wallet on an iPhone, Add to Google Wallet on Android, and a QR code on a computer.
  4. You update it whenever its content changes, such as a points balance or a seat. Installed passes refresh, and a field you choose can show a notification.

Base URL

Every request goes to:

https://api.walletpassapi.com

Requests and answers are JSON, over HTTPS only. Times are ISO 8601 in UTC.

Authentication

Send your workspace's API key as a bearer token:

Authorization: Bearer wpk_…

Find it in the dashboard under Settings. It's shown once, when it's made; rotating it makes a new one and stops the old one at once. Keep it on your server: anyone with it can issue passes in your workspace.

Test passes

Until you add your own Apple and Google credentials, passes are signed with ours. They're marked as test passes on the pass itself, and your organization has 1,000 operations a month on them, shared by its workspaces. They're for trying the API, never for real customers.

What the API does, and what stays in the dashboard

With an API key you can create, update and revoke passes, notify holders one by one or all at once, make and use templates, upload images and check your usage.

Some things are done in the dashboard instead, by people rather than code: spreadsheet imports, your Apple and Google credentials, webhook endpoints, and your workspace's members.

Errors

Every error answer has the same shape: a stable code to act on, a message to show or log, the field it's about when there is one, and a requestId to quote to us. See Errors for each status and what to do.

{
  "error": {
    "code": "validation_error",
    "message": "Unknown field \"primaryFields.0.lable\" (did you mean \"label\"?)",
    "field": "primaryFields.0.lable",
    "requestId": "req_8393c117…"
  }
}