Award Travel Finder Agent API
The Agent API from Award Travel Finder — 1 operation(s) for agent.
The Agent API from Award Travel Finder — 1 operation(s) for agent.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/awardtravelfinder-com:awardtravelfinder-com-agent-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Award Travel Finder API V1 Agent API
version: v1
description: 'API for searching award flight availability and pricing across multiple airlines, plus hotel search (city list and property detail with cash rates and major-chain award pricing). Availability searches that are still running return 202 Accepted with status pending, retry_after, and a Retry-After header (previously 503). A request scoped only to an open-breaker source stays 503, names that source, and includes Retry-After. A multi-airline search returns 200 with partial true and a per-source status list when other sources answered. Optional cached_only=1 is opt-in for every tier: a hit is 200, a miss is 202 pending and enqueues one background search. Per-key rate and concurrency limits return 429 with Retry-After. 202, 429, and 503 do not consume the monthly quota. Each hotel list or detail request counts as one call against the monthly quota.'
contact:
name: Award Travel Finder
url: https://awardtravelfinder.com
servers:
- url: https://awardtravelfinder.com
description: Production server
- url: http://localhost:3000
description: Development server
security:
- ApiKeyAuth: []
tags:
- name: Agent
paths:
/api/v1/agent/register:
post:
summary: Self-register an agent account and receive an API key
tags:
- Agent
description: 'The one credential-less endpoint in the API. Provisions a free-tier account and returns an X-API-Key for the REST API plus the MCP OAuth discovery URLs, in a single response. No browser or human consent step. Rate limited per IP.
Send a registration_key (or Idempotency-Key header) that you store once: the api_key is the only way back into the account, because its password is generated server-side and discarded. A repeat call presenting the same key returns the original account with 200 instead of minting a new one. Without a key, every call creates a separate account.'
security: []
requestBody:
required: false
content:
application/json:
schema:
type: object
properties:
operator_email:
type: string
description: Contact address for the human or org operating the agent.
agent_name:
type: string
description: Human-readable name for the agent.
registration_key:
type: string
minLength: 16
description: 'Caller-generated secret, at least 16 characters, stored once by the caller. Presenting it again returns the same account and api_key. Must be your own secret: agent_name and operator_email are never used as the key, so a label cannot claim another operator''s account.'
responses:
'201':
description: Account created; store the api_key securely.
content:
application/json:
schema:
type: object
properties:
message:
type: string
account:
type: object
properties:
user_id:
type: integer
plan:
type: string
example: free
reused:
type: boolean
description: True when an existing account was returned for a known registration_key.
api_key:
type: string
description: Send as the X-API-Key header. Shown once.
rest_api:
type: object
properties:
base_url:
type: string
auth_header:
type: string
example: X-API-Key
docs:
type: string
mcp:
type: object
description: OAuth-only MCP server. The api_key does not authenticate it.
properties:
endpoint:
type: string
auth:
type: string
example: oauth2
scope:
type: string
example: mcp:read
protected_resource_metadata:
type: string
authorization_server_metadata:
type: string
setup_docs:
type: string
usage:
type: object
properties:
tier:
type: string
monthly_limit:
type: integer
remaining_calls:
type: integer
reset_at:
type:
- string
- 'null'
upgrade_url:
type: string
'200':
description: Existing account returned for a known registration_key. No new account was created.
content:
application/json:
schema:
type: object
properties:
message:
type: string
account:
type: object
properties:
user_id:
type: integer
plan:
type: string
example: free
reused:
type: boolean
description: True when an existing account was returned for a known registration_key.
api_key:
type: string
description: Send as the X-API-Key header. Shown once.
rest_api:
type: object
properties:
base_url:
type: string
auth_header:
type: string
example: X-API-Key
docs:
type: string
mcp:
type: object
description: OAuth-only MCP server. The api_key does not authenticate it.
properties:
endpoint:
type: string
auth:
type: string
example: oauth2
scope:
type: string
example: mcp:read
protected_resource_metadata:
type: string
authorization_server_metadata:
type: string
setup_docs:
type: string
usage:
type: object
properties:
tier:
type: string
monthly_limit:
type: integer
remaining_calls:
type: integer
reset_at:
type:
- string
- 'null'
upgrade_url:
type: string
'422':
description: registration_key was shorter than 16 characters.
content:
application/json:
schema:
type: object
properties:
error:
type: string
'429':
description: Per-IP registration throttle exceeded.
parameters:
- name: Idempotency-Key
in: header
required: false
description: Alternative to registration_key in the body. Takes precedence when both are sent.
schema:
type: string
minLength: 16
operationId: postApiV1AgentRegister
x-operation-id-source: derived
components:
securitySchemes:
ApiKeyAuth:
type: apiKey
name: X-API-Key
in: header
description: 'API key for the REST API and CLI, sent as the X-API-Key header. Autonomous agents can self-register for a free-tier key in one unauthenticated call: POST /api/v1/agent/register. The MCP server at https://mcp.awardtravelfinder.com/mcp does NOT accept this key - it is OAuth 2.1 only (scope mcp:read), with Dynamic Client Registration at POST /oauth/register.'
x-service-info:
name: Award Travel Finder
description: 'Award seat availability, award chart pricing and points valuations. Current airline coverage: https://awardtravelfinder.com/coverage.json.'
categories:
- travel
- flight-search
- loyalty-programs
documentation: https://awardtravelfinder.com/developers
pricing_url: https://awardtravelfinder.com/pricing