AGENT SKILL

awardwallet

Query AwardWallet for loyalty program balances, elite status, and transaction history. Use when checking points inventory, airline status, or planning trips on points.

License 许可
MIT
最近更新
2026-11-09
Stars
★ 955
Forks
118

01 前言 Front Matter

name
awardwallet
api_key
AwardWallet Business
license
MIT
summary
All loyalty balances, elite status, history.
category
loyalty
description
Query AwardWallet for loyalty program balances, elite status, and transaction history. Use when checking points inventory, airline status, or planning trips on points.

03 SKILL.md 正文

AwardWallet Skill

Query loyalty program balances, elite status, and transaction history via the AwardWallet Business Account Access API.

Source: business.awardwallet.com — Requires a Business account.

Authentication

Set these in your .env file:

All requests use the X-Authentication header.

First-time setup gotcha: AwardWallet enforces an IP allowlist on Business API keys. Without your IP whitelisted, every call returns {"error": "access_denied", "code": "IP_DENIED"}. Whitelist before troubleshooting.

  • Where to whitelist: https://business.awardwallet.com/profile/api
  • How to find your IP: curl ifconfig.me
  • Multi-IP: home, office, hotspot, VPN exit nodes, and any travel locations each need their own entry. Easiest is to whitelist a /24 if you're on a stable residential ISP.

Error signatures

Response Meaning Fix
{"error": "access_denied", "code": "IP_DENIED"} IP not on allowlist Whitelist current IP at the developer portal
Unauthorized / 401 Bad key Regenerate key
Empty accounts array User ID wrong or no connections Verify AWARDWALLET_USER_ID

API Base

https://business.awardwallet.com/api/export/v1

Quick Start: Get All Balances

curl -s -H "X-Authentication: $AWARDWALLET_API_KEY" \
  "https://business.awardwallet.com/api/export/v1/connectedUser/$AWARDWALLET_USER_ID" | jq '.accounts'

Response Fields

Each account object contains:

Field Description
accountId Unique ID for deep dive
code Provider code (e.g., "united", "chase", "amex")
displayName Human name (e.g., "United Airlines (MileagePlus)")
kind Category: Airlines, Hotels, Credit Cards, etc.
balance Formatted balance string
balanceRaw Numeric balance
properties Array with status, account number, expiration, etc.
history Last 10 transactions (call /account/{id} for full history)
errorCode 1 = successfully updated, 2 = invalid creds, etc.

Useful jq Filters

All filters below assume the curl output is piped in. Replace ... with the full curl command above.

# Just airline balances with status
... | jq '[.accounts[] | select(.kind == "Airlines") | {name: .displayName, balance: .balanceRaw, status: ((.properties // [])[] | select(.kind == 3) | .value) // "none"}]'

# Just hotel balances with status
... | jq '[.accounts[] | select(.kind == "Hotels") | {name: .displayName, balance: .balanceRaw, status: ((.properties // [])[] | select(.kind == 3) | .value) // "none"}]'

# Just credit card / transferable points
... | jq '[.accounts[] | select(.kind == "Credit Cards") | {name: .displayName, balance: .balanceRaw}]'

# All balances sorted by amount (descending), non-zero only
... | jq '[.accounts[] | {name: .displayName, kind: .kind, balance: .balanceRaw} | select(.balance > 0)] | sort_by(-.balance)'

# Elite status across all programs
... | jq '[.accounts[] | {name: .displayName, status: ((.properties // [])[] | select(.kind == 3) | .value) // null} | select(.status != null)]'

# Accounts with errors (need password update, etc.)
... | jq '[.accounts[] | select(.errorCode != 1) | {name: .displayName, error: .errorCode}]'

# Combined summary for trip planning (airlines + transferable points, non-zero, sorted)
... | jq '[.accounts[] | select((.kind == "Airlines" or .kind == "Credit Cards") and .balanceRaw > 0) | {name: .displayName, kind: .kind, balance: .balanceRaw, status: ((.properties // [])[] | select(.kind == 3) | .value) // null}] | sort_by(-.balance)'

Deep Dive: Full Account History

For full transaction history (beyond last 10):

curl -s -H "X-Authentication: $AWARDWALLET_API_KEY" \
  "https://business.awardwallet.com/api/export/v1/account/{accountId}" | jq '.account[0].history'

Travel Timeline

Get saved itineraries for a connected user:

curl -s -H "X-Authentication: $AWARDWALLET_API_KEY" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"start": "2026-01-01", "end": "2027-01-01"}' \
  "https://business.awardwallet.com/api/export/v1/travel-timeline/$AWARDWALLET_USER_ID" | jq '.itineraries'

List All Supported Providers

curl -s -H "X-Authentication: $AWARDWALLET_API_KEY" \
  "https://business.awardwallet.com/api/export/v1/providers/list" | jq '.'

Account Property Kinds

When parsing properties arrays, these kind values are standardized:

Kind Meaning
1 Account number
2 Expiration
3 Elite status
4 Lifetime points
5 Member since
6 Expiring balance
7 YTD Miles/Points
8 YTD Segments
9 Next elite level
10 Points needed to next level
11 Segments needed to next level
12 Name
13 Last activity
14 Points needed for next reward
15 Status expiration
16 Points to retain status
17 Segments to retain status
18 Alliance elite level
19 Status miles/points

Error Codes

Code Meaning
0 Never updated
1 Success
2 Invalid credentials
3 Locked out
4 Provider error or user action needed
5 Provider disabled by AwardWallet
6 Parse failure
7 Password missing
8 Disabled to prevent lockouts
9 Success with warning
10 Security question needed
11 Timed out

Workflow: Trip Planning Summary

When planning a trip, run this workflow:

  1. Pull all accounts
  2. Filter to Airlines and Credit Cards (transferable points)
  3. Show a clean summary: program name, balance, elite status
  4. Note any accounts with errors that might need updating
  5. Cross reference with transfer partners for the destination

Notes

  • History in user/member detail responses is capped at 10 records. Use /account/{id} for full history.
  • balanceRaw is the numeric value. balance is formatted with commas.
  • Connected users control their own access level. If data seems limited, they may have restricted sharing.
  • SubAccounts exist for programs like Capital One where one login has multiple cards. Check subAccounts array.

04 同仓库更多 Skills

borski
borski/travel-hacking-toolkit

wikipedia-airports

Discover destinations served from any airport via Wikipedia. Sanity-check whether an airline flies a specific route, find regional service that fare tools miss, identify late-split-return airport options.

★ 955
borski
borski/travel-hacking-toolkit

wheretocredit

Mileage earning rates by airline and booking class via wheretocredit.com. Redeemable and qualifying miles across 50+ programs. Use when deciding where to credit a flight or comparing earning rates.

★ 955
borski
borski/travel-hacking-toolkit

vrbo

Search VRBO (Vrbo / Expedia Group) vacation rentals including entire homes, condos, and cabins via Patchright browser automation. VRBO sits behind Akamai Bot Manager so plain HTTP and standard Playwright get a 429 bot wall. Use for whole-home or group stays, multi-bedroom rentals, and Airbnb-vs-VRBO comparisons. Trigger phrases include search VRBO, Vrbo rentals, vacation rental, cabin rental, whole house, condo for the group.

★ 955
borski
borski/travel-hacking-toolkit

tripadvisor

TripAdvisor Content API for hotel ratings, restaurant search, attraction reviews, rankings, and nearby locations. Use when evaluating hotels or researching destinations. 5K calls/month.

★ 955
borski
borski/travel-hacking-toolkit

trip-planner

Full trip planning orchestration. Combines flight search, hotel search, and points optimization into one cost analysis. Use when the user says "plan a trip" or wants the complete picture for a destination.

★ 955
borski
borski/travel-hacking-toolkit

trip-log

Save flight searches, itineraries, and booked trips to the trips/logs/ directory for future reference. OPT-IN — use when the user asks to log a trip or look up past searches, or on every search only if the user has said they want automatic logging. Also use to update status when a trip is booked or completed.

★ 955