Seats.aero Award Flight Search
Search award flight availability across 24 mileage programs using the seats.aero partner API.
Setup
Before searching, you need a seats.aero API key:
- 1. If the user hasn't provided an API key, prompt them:
- "Please provide your seats.aero API key. You can get one at https://seats.aero/partner"
- 2. Store the key in conversation context for subsequent requests
- All requests require the header: INLINECODE0
Core Capabilities
1. Search Routes (/search)
Search cached availability across all mileage programs for a specific origin-destination pair.
2. Bulk Availability (/availability)
Explore all availability from a single mileage program, optionally filtered by region.
3. Route Discovery (/routes)
Get all routes monitored for a specific mileage program.
4. Trip Details (/trips/{id})
Get detailed flight segments and booking links for a specific availability.
Quick Reference
| Item | Value |
|---|
| Base URL | INLINECODE5 |
| Auth Header |
Partner-Authorization: Bearer {key} |
| Date Format |
YYYY-MM-DD |
Cabin Codes
- -
Y = Economy - INLINECODE9 = Premium Economy
- INLINECODE10 = Business
- INLINECODE11 = First
Regions
North America, South America, Europe, Africa, Middle East, Asia, Oceania
Supported Programs
CODEBLOCK0
Common Workflows
Find availability on a specific route
User: "Find business class SFO to Tokyo next month"
- 1. Use
/search endpoint with:
-
origin_airport=SFO
-
destination_airport=NRT,HND (both Tokyo airports)
-
cabin=J
-
start_date and
end_date for the date range
Explore program availability
User: "What United awards are available from Europe?"
- 1. Use
/availability endpoint with:
-
source=united
- INLINECODE20
Get booking details
User: "Show me details for that flight"
- 1. Use
/trips/{id} with the availability ID from previous search - Response includes flight segments, times, and booking links
Check what routes a program covers
User: "What routes does Aeroplan monitor?"
- 1. Use
/routes endpoint with INLINECODE23
API Parameters Quick Guide
/search
| Parameter | Required | Description |
|---|
| originairport | Yes | 3-letter IATA code |
| destinationairport |
Yes | 3-letter IATA code(s), comma-separated |
| cabin | No | Y, W, J, or F (comma-separated for multiple) |
| start_date | No | YYYY-MM-DD |
| end_date | No | YYYY-MM-DD |
| sources | No | Program name(s), comma-separated |
| only_direct | No | true/false |
| take | No | Results per page (default 100) |
| cursor | No | Pagination cursor |
/availability
| Parameter | Required | Description |
|---|
| source | Yes | Single program name |
| cabin |
No | Single cabin code |
| origin_region | No | Filter by origin region |
| destination_region | No | Filter by destination region |
| start_date | No | YYYY-MM-DD |
| end_date | No | YYYY-MM-DD |
| take | No | Results per page |
Script Usage
For complex or repeated searches, use the Python helper:
CODEBLOCK1
See scripts/seats_api.py for full API client implementation.
Response Handling
Availability Object Fields
- -
ID - Use for /trips/{id} lookup - INLINECODE27 - Origin-Destination pair
- INLINECODE28 - Flight date
- INLINECODE29 ,
WAvailable, JAvailable, FAvailable - Boolean availability - INLINECODE33 , etc. - Points required per cabin
- INLINECODE34 , etc. - Number of direct flights available
- INLINECODE35 - Program name
- INLINECODE36 - Data freshness timestamp
Error Handling
- - 401: Invalid or missing API key
- 429: Rate limited, wait and retry
- 404: No results or invalid availability ID
Tips
- 1. Date ranges: Keep to 30-60 days for faster results
- Multiple cabins: Search J,F together for premium options
- Direct flights: Use
only_direct=true to filter connections - Pagination: Use
cursor from response for more results - Data freshness: Check
ComputedLastSeen - older data may be stale
Reference Documentation
For complete API specification including all fields and response schemas, see references/api-spec.md.
Seats.aero 奖励航班搜索
使用 seats.aero 合作伙伴 API,跨 24 个里程计划搜索奖励航班可用性。
设置
搜索前,您需要一个 seats.aero API 密钥:
- 1. 如果用户未提供 API 密钥,请提示他们:
- 请提供您的 seats.aero API 密钥。您可以在 https://seats.aero/partner 获取
- 2. 将密钥存储在对话上下文中,用于后续请求
- 所有请求都需要包含请求头:Partner-Authorization: Bearer {api_key}
核心功能
1. 搜索航线 (/search)
跨所有里程计划搜索特定出发地-目的地对的缓存可用性。
2. 批量可用性 (/availability)
探索单个里程计划的所有可用性,可选择按区域筛选。
3. 航线发现 (/routes)
获取特定里程计划监控的所有航线。
4. 行程详情 (/trips/{id})
获取特定可用性的详细航班段和预订链接。
快速参考
| 项目 | 值 |
|---|
| 基础 URL | https://seats.aero/partnerapi/ |
| 认证请求头 |
Partner-Authorization: Bearer {key} |
| 日期格式 | YYYY-MM-DD |
舱位代码
- - Y = 经济舱
- W = 高级经济舱
- J = 商务舱
- F = 头等舱
区域
北美洲、南美洲、欧洲、非洲、中东、亚洲、大洋洲
支持的里程计划
aeroplan, alaska, american, aeromexico, azul, copa, delta, emirates,
ethiopian, etihad, finnair, flyingblue, gol, jetblue, lufthansa,
qantas, qatar, sas, saudia, singapore, turkish, united,
virginatlantic, virginaustralia
常见工作流程
查找特定航线的可用性
用户:查找下个月旧金山到东京的商务舱
- 1. 使用 /search 端点,参数为:
- origin_airport=SFO
- destination_airport=NRT,HND(东京两个机场)
- cabin=J
- start
date 和 enddate 用于日期范围
探索里程计划可用性
用户:美联航从欧洲出发有哪些奖励航班?
- 1. 使用 /availability 端点,参数为:
- source=united
- origin_region=Europe
获取预订详情
用户:显示该航班的详细信息
- 1. 使用 /trips/{id},传入之前搜索中的可用性 ID
- 响应包含航班段、时间和预订链接
查看里程计划覆盖的航线
用户:加拿大航空监控哪些航线?
- 1. 使用 /routes 端点,参数为 source=aeroplan
API 参数快速指南
/search
| 参数 | 必填 | 描述 |
|---|
| originairport | 是 | 3字母IATA代码 |
| destinationairport |
是 | 3字母IATA代码,多个用逗号分隔 |
| cabin | 否 | Y、W、J或F(多个用逗号分隔) |
| start_date | 否 | YYYY-MM-DD |
| end_date | 否 | YYYY-MM-DD |
| sources | 否 | 里程计划名称,多个用逗号分隔 |
| only_direct | 否 | true/false |
| take | 否 | 每页结果数(默认100) |
| cursor | 否 | 分页游标 |
/availability
| 参数 | 必填 | 描述 |
|---|
| source | 是 | 单个里程计划名称 |
| cabin |
否 | 单个舱位代码 |
| origin_region | 否 | 按出发区域筛选 |
| destination_region | 否 | 按目的地区域筛选 |
| start_date | 否 | YYYY-MM-DD |
| end_date | 否 | YYYY-MM-DD |
| take | 否 | 每页结果数 |
脚本使用
对于复杂或重复的搜索,使用 Python 辅助工具:
python
from scripts.seatsapi import searchavailability, format_results
results = search_availability(
apikey=yourkey,
origin=SFO,
destination=NRT,
start_date=2024-03-01,
end_date=2024-03-31,
cabins=J,F
)
print(format_results(results[data], cabin=J))
完整 API 客户端实现请参见 scripts/seats_api.py。
响应处理
可用性对象字段
- - ID - 用于 /trips/{id} 查询
- Route - 出发地-目的地对
- Date - 航班日期
- YAvailable、WAvailable、JAvailable、FAvailable - 布尔型可用性
- YMileageCost 等 - 各舱位所需积分
- YDirects 等 - 可用直飞航班数量
- Source - 里程计划名称
- ComputedLastSeen - 数据新鲜度时间戳
错误处理
- - 401:API 密钥无效或缺失
- 429:请求频率受限,请等待后重试
- 404:无结果或可用性 ID 无效
提示
- 1. 日期范围:保持30-60天以获得更快结果
- 多舱位:同时搜索J、F以获取高端选项
- 直飞航班:使用 only_direct=true 筛选中转航班
- 分页:使用响应中的 cursor 获取更多结果
- 数据新鲜度:检查 ComputedLastSeen - 较早的数据可能已过时
参考文档
完整 API 规范(包括所有字段和响应模式)请参见 references/api-spec.md。