awardwallet

GitHub

通过AwardWallet API查询忠诚度计划余额、精英状态及交易历史,支持按航空、酒店等类别筛选数据,适用于积分管理和旅行规划。

plugins/travel-hacking-toolkit/skills/awardwallet/SKILL.md borski/travel-hacking-toolkit

Trigger Scenarios

查询积分余额 检查航空公司精英身份 查看交易记录

Install

npx skills add borski/travel-hacking-toolkit --skill awardwallet -g -y
More Options

Non-standard path

npx skills add https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/awardwallet -g -y

Use without installing

npx skills use borski/travel-hacking-toolkit@awardwallet

指定 Agent (Claude Code)

npx skills add borski/travel-hacking-toolkit --skill awardwallet -a claude-code -g -y

安装 repo 全部 skill

npx skills add borski/travel-hacking-toolkit --all -g -y

预览 repo 内 skill

npx skills add borski/travel-hacking-toolkit --list

SKILL.md

Frontmatter
{
    "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."
}

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.

Version History

  • 8c12eda Current 2026-07-25 05:45

Same Skill Collection

plugins/travel-hacking-toolkit/skills/alliances/SKILL.md
plugins/travel-hacking-toolkit/skills/american-airlines/SKILL.md
plugins/travel-hacking-toolkit/skills/amex-travel/SKILL.md
plugins/travel-hacking-toolkit/skills/atlas-obscura/SKILL.md
plugins/travel-hacking-toolkit/skills/award-calendar/SKILL.md
plugins/travel-hacking-toolkit/skills/award-holds/SKILL.md
plugins/travel-hacking-toolkit/skills/award-sweet-spots/SKILL.md
plugins/travel-hacking-toolkit/skills/bilt/SKILL.md
plugins/travel-hacking-toolkit/skills/booking-guidance/SKILL.md
plugins/travel-hacking-toolkit/skills/cabin-codes/SKILL.md
plugins/travel-hacking-toolkit/skills/chase-travel/SKILL.md
plugins/travel-hacking-toolkit/skills/compare-flights/SKILL.md
plugins/travel-hacking-toolkit/skills/compare-hotels/SKILL.md
plugins/travel-hacking-toolkit/skills/deutsche-bahn/SKILL.md
plugins/travel-hacking-toolkit/skills/duffel/SKILL.md
plugins/travel-hacking-toolkit/skills/fallback-and-resilience/SKILL.md
plugins/travel-hacking-toolkit/skills/flight-search-strategy/SKILL.md
plugins/travel-hacking-toolkit/skills/getting-started/SKILL.md
plugins/travel-hacking-toolkit/skills/google-flights/SKILL.md
plugins/travel-hacking-toolkit/skills/hotel-chains/SKILL.md
plugins/travel-hacking-toolkit/skills/ignav/SKILL.md
plugins/travel-hacking-toolkit/skills/lessons-learned/SKILL.md
plugins/travel-hacking-toolkit/skills/partner-awards/SKILL.md
plugins/travel-hacking-toolkit/skills/plan-trip/SKILL.md
plugins/travel-hacking-toolkit/skills/points-valuations/SKILL.md
plugins/travel-hacking-toolkit/skills/premium-hotels/SKILL.md
plugins/travel-hacking-toolkit/skills/rapidapi/SKILL.md
plugins/travel-hacking-toolkit/skills/round-the-world/SKILL.md
plugins/travel-hacking-toolkit/skills/scandinavia-transit/SKILL.md
plugins/travel-hacking-toolkit/skills/seatmaps/SKILL.md
plugins/travel-hacking-toolkit/skills/seats-aero/SKILL.md
plugins/travel-hacking-toolkit/skills/serpapi/SKILL.md
plugins/travel-hacking-toolkit/skills/southwest/SKILL.md
plugins/travel-hacking-toolkit/skills/status-match/SKILL.md
plugins/travel-hacking-toolkit/skills/stopovers/SKILL.md
plugins/travel-hacking-toolkit/skills/ticketsatwork/SKILL.md
plugins/travel-hacking-toolkit/skills/transfer-bonuses/SKILL.md
plugins/travel-hacking-toolkit/skills/transfer-partners/SKILL.md
plugins/travel-hacking-toolkit/skills/trip-calculator/SKILL.md
plugins/travel-hacking-toolkit/skills/trip-log/SKILL.md
plugins/travel-hacking-toolkit/skills/trip-planner/SKILL.md
plugins/travel-hacking-toolkit/skills/tripadvisor/SKILL.md
plugins/travel-hacking-toolkit/skills/vrbo/SKILL.md
plugins/travel-hacking-toolkit/skills/wheretocredit/SKILL.md
plugins/travel-hacking-toolkit/skills/wikipedia-airports/SKILL.md
plugins/travel-hacking-toolkit/skills/gardening/SKILL.md
plugins/travel-hacking-toolkit/skills/sutochno/SKILL.md

Metadata

Files
0
Version
ffd04a2
Hash
02cdc557
Indexed
2026-07-25 05:45

ホーム - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-22 07:20
浙ICP备14020137号-1 $お客様$