WalletPassAPI Docs

Guides

Limits and usage

What counts as an operation, your monthly allowance, and what happens at the limit.

Each month, your plan includes a number of operations: the changes we make to passes for you. Reads are always free.

What counts

RequestOperations
Create a pass1
Update a pass, when something changes1
Update a pass with the same content0
Send a notification1
Send a broadcast1 a pass
Update a template's passes, on save or later1 a pass
Spreadsheet import (dashboard)1 a pass made or changed
Revoke, delete, read, list, export, templates, images0

A pass that's installed on many phones still costs one operation an update: delivering it to every device is included.

Your allowance

The allowance belongs to your organization, and all its workspaces share it. It resets on the 1st of each month, UTC.

PlanOperations a monthAt the allowance
Free1,000Further operations are refused until the 1st
Starter100,000Further operations are refused until the 1st
Growth1,000,000Operations carry on, billed as extra
Enterprise10,000,000Operations carry on, billed as extra

An operation the allowance doesn't cover is refused with 429 usage_limit_exceeded, and nothing is changed. A broadcast or a template update is checked before it starts: if all its passes won't fit, it's refused as a whole (broadcast_over_allowance, template_update_over_allowance), rather than reaching some holders and not others.

A workspace's own limit

An organization's owners and admins can give a workspace its own monthly limit, such as for a brand, department, client or project, out of the shared allowance. Past it, that workspace's operations are refused with workspace_limit_reached, whatever the plan.

In an organization with more than one workspace, a workspace's API key and its people are told only that workspace's usage and limit, never the organization's plan or what's left of its allowance. If the shared allowance is what stops something, the answer says so without the figures, and remaining is null.

Test passes

Passes signed with our test credentials have their own limit: 1,000 operations a month, shared by your organization's workspaces, on every plan. They also count towards your allowance. Past it, operations on test passes are refused with platform_usage_limit; passes on your own credentials carry on.

Check your usage

Get usage answers with this month's count, the allowance and when it resets:

curl "https://api.walletpassapi.com/v1/usage" \
  -H "Authorization: Bearer $WALLET_API_KEY"
const res = await fetch("https://api.walletpassapi.com/v1/usage", {
  method: "GET",
  headers: {
    Authorization: `Bearer ${process.env.WALLET_API_KEY}`,
  },
});
const data = await res.json();
import os

import requests

res = requests.get(
    "https://api.walletpassapi.com/v1/usage",
    headers={"Authorization": f"Bearer {os.environ['WALLET_API_KEY']}"},
)
data = res.json()
<?php

$ch = curl_init("https://api.walletpassapi.com/v1/usage");
curl_setopt_array($ch, [
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer " . getenv("WALLET_API_KEY"),
    ],
    CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);

We also email your organization's owner and admins when it reaches 80% and 100% of its allowance, and a workspace's owners too when it reaches 80% and 100% of its own limit. The organization's Usage tab shows each workspace's share.

Requests per minute

Apart from operations, one API key can send about 600 requests a minute. Past that, requests are refused with 429 rate_limited and a Retry-After header: wait that many seconds, then carry on. To do a lot at once, such as notify thousands of passes, send one broadcast rather than a request for each.