WalletWallet API
Generate Apple Wallet passes with one API call.
No certificates or complexity. Just JSON in, .pkpass out.
Starts free for up to 1000 passes per month
$0.00019 per pass on Pro
curl -X POST https://api.walletwallet.dev/api/pkpass \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ww_live_<your_key>" \
-d '{
"barcodeValue": "LOYALTY-98765",
"barcodeFormat": "QR",
"logoText": "Bayroast Coffee",
"primaryFields": [{"label": "CARD", "value": "Coffee Rewards"}],
"secondaryFields": [{"label": "TIER", "value": "Gold Status"}],
"colorPreset": "green",
"expirationDays": 365,
"stripURL": "https://example.com/coffee-strip.jpg"
}' \
-o rewards.pkpass Returns a valid .pkpass file ready for Apple Wallet
Why WalletWallet API?
Single Endpoint
One POST request, instant .pkpass file. No multi-step flows or Apple developer account needed.
Live Pass Editor
Design your pass visually, then grab the exact API call to reproduce it. Preview first, code second.
Free for 1,000 passes/mo
No credit card required. Start generating passes immediately and only upgrade when you need to.
No Setup Required
We handle Apple certificates and signing. You just send JSON, we return a ready-to-use .pkpass.
Fully Customizable Fields
Add as many fields as you need. Headers, primary, secondary, back-of-pass — all configurable via simple JSON arrays.
Your Branding
Custom colors, logos, thumbnails, and strip images to match your brand.
Everything is configurable
Edit any field and see the pass update live
Text next to the logo (top-left)
No header fields
No primary fields
No secondary fields
No back fields
Overrides color preset
Wide banner image. Use secondary fields for readable text when using this option.
API Reference
Everything you need to generate passes
Endpoint
POST https://api.walletwallet.dev/api/pkpass
Authentication
Include your API key in the Authorization header using the Bearer scheme.
Headers
| Header | Value |
|---|---|
| Content-Type | application/json |
| Authorization | Bearer ww_live_<your_key> |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| barcodeValue | string | Yes | The data encoded in the barcode (e.g., member ID, ticket number) |
| barcodeFormat | string | Yes |
One of:
QR PDF417 Aztec Code128 |
| logoText | string | No | Text next to the logo (top-left of pass). |
| description | string | No | Accessibility text (not visible). Defaults to logoText. |
| primaryFields | array | No | Main content fields. Array of {label, value} objects. |
| secondaryFields | array | No | Fields below primary. Array of {label, value} objects. |
| headerFields | array | No | Top-right header area. Array of {label, value} objects. |
| backFields | array | No | Back of pass. Array of {label, value} objects. |
| colorPreset | string | No |
Color theme:
dark blue green red purple orange |
| color | string | No |
Custom hex color (Pro only)
e.g.,
#1e40af |
| logoURL | string | No |
URL to custom logo image (Pro
only). Supports HTTPS URLs or a
PNG data URI
(data:image/png;base64,...).
|
| title | string | No | Legacy shortcut. Sets primaryFields[0].value and logoText if those aren't set. |
| cardLabel | string | No | Legacy shortcut. Sets primaryFields[0].label. Defaults to CARD. |
| label | string | No | Legacy shortcut. Sets secondaryFields[0].label. |
| value | string | No | Legacy shortcut. Sets secondaryFields[0].value. |
| thumbnailURL | string | No | Top-right image. HTTPS URL or PNG data URI. Pro only. |
| stripURL | string | No | Banner behind the primary field. Switches to store card layout. HTTPS URL or PNG data URI. Pro only. |
| expirationDays | number | No |
Pass expires after this many days. Common presets:
30,
90,
365. Any integer between
1 and
3650 is accepted.
|
Response
application/vnd.apple.pkpass
binary file (save as
.pkpass) Examples
curl -X POST https://api.walletwallet.dev/api/pkpass \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ww_live_<your_key>" \
-d '{
"barcodeValue": "MEMBER-12345",
"barcodeFormat": "QR",
"logoText": "Membership Card"
}' \
-o membership.pkpass curl -X POST https://api.walletwallet.dev/api/pkpass \
-H "Content-Type: application/json" \
-H "Authorization: Bearer ww_live_<your_key>" \
-d '{
"barcodeValue": "LOYALTY-98765",
"barcodeFormat": "QR",
"logoText": "Bayroast Coffee",
"description": "Loyalty card for Bayroast Coffee",
"primaryFields": [{"label": "CARD", "value": "Coffee Rewards"}],
"secondaryFields": [{"label": "TIER", "value": "Gold Status"}],
"headerFields": [{"label": "BALANCE", "value": "$25.00"}],
"colorPreset": "dark",
"expirationDays": 365,
"logoURL": "https://example.com/logo.png",
"thumbnailURL": "https://example.com/photo.png",
"stripURL": "https://example.com/banner.png"
}' \
-o rewards.pkpass Barcode Formats
| Format | Best For |
|---|---|
| QR | General purpose, high data capacity |
| PDF417 | Boarding passes, IDs |
| Aztec | Transit tickets, compact spaces |
| Code128 | Retail, inventory |
Rate Limits
| Plan | Monthly Limit | Custom Colors | Custom Logo |
|---|---|---|---|
| Free | 1,000 | No | No |
| Pro | 100,000 | Yes | Yes |
Priced for scale
$0.00019 per pass. No certificate fees.
Free
For testing & hobby projects
- 1,000 passes/month
- All barcode formats
- 6 color presets
- Primary & secondary fields
- Signed .pkpass delivery
- Global edge via Cloudflare
- No Apple Developer account needed
Your first month is Pro, automatically
Pro
For production apps
- 100,000 passes/month
- Everything in Free
- Custom colored passes
- Custom logo, thumbnail & strip images
- Header & back fields
- Priority support
$0.00019 per pass
Need more? Contact us for unlimited pricing.