IntentLink Travel Search API
The travel-search API from IntentLink — 3 operation(s) for travel-search.
The travel-search API from IntentLink — 3 operation(s) for travel-search.
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/intentlink-io:intentlink-io-travel-search-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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: Affiliate Recommendation Service Travel Search API
version: 0.1.0
tags:
- name: travel-search
paths:
/api/v1/travel/search:
post:
tags:
- travel-search
summary: Search
description: 'Search travel offers by ``type`` + ``city`` and get trackable links (grouped by type). Each
link''s ``buy_url`` is a ready-to-use trackable link (CJ sid + redirect-wrapped) — hand it to the
traveler directly. ``type=hotel`` runs a live Trip.com search; other types (or a failed hotel
search) return that type''s default links (``status="fallback"``, see ``reason``).'
operationId: search_api_v1_travel_search_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TravelSearchRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/TravelSearchResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/travel/categories:
get:
tags:
- travel-search
summary: Categories
description: 'List the travel product ``type`` values (code + label). Static per deploy:
hotel / flights / bundle / airport_transfer / car_rental.'
operationId: categories_api_v1_travel_categories_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
additionalProperties: true
type: object
title: Response Categories Api V1 Travel Categories Get
/api/v1/travel/cities:
get:
tags:
- travel-search
summary: Cities
description: 'List the supported cities (with an upstream Trip.com city id) that hotel search accepts as
the request ``city``. Static per deploy (data/trip_city_ids.csv).'
operationId: cities_api_v1_travel_cities_get
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/TripCityListResponse'
components:
schemas:
TravelLink:
properties:
title:
type: string
title: Title
network:
type: string
title: Network
platform:
type: string
title: Platform
brand:
type: string
title: Brand
commerce_l1:
type: string
title: Commerce L1
commerce_l2:
type: string
title: Commerce L2
buy_url:
anyOf:
- type: string
- type: 'null'
title: Buy Url
destination_url:
type: string
title: Destination Url
type: object
required:
- title
- network
- platform
- brand
- commerce_l1
- commerce_l2
- destination_url
title: TravelLink
description: 'One curated, trackable travel link. ``buy_url`` is the ready-to-use tracking link (hand it to
the traveler / intentlink jump layer); ``destination_url`` is the plain merchant page.'
TripCity:
properties:
state:
type: string
title: State
abbr:
type: string
title: Abbr
place:
type: string
title: Place
query:
type: string
title: Query
city_id:
type: string
title: City Id
dest_name:
type: string
title: Dest Name
type: object
required:
- state
- abbr
- place
- query
- city_id
- dest_name
title: TripCity
TravelSearchRequest:
properties:
type:
$ref: '#/components/schemas/TravelSearchType'
description: Travel product type (酒店/机票/租车/…).
city:
type: string
minLength: 1
title: City
description: City name from the supported list (data/…).
hotel:
anyOf:
- $ref: '#/components/schemas/TravelHotelParams'
- type: 'null'
query:
anyOf:
- type: string
- type: 'null'
title: Query
description: Optional free-text trip context.
country:
type: string
title: Country
default: US
caller:
$ref: '#/components/schemas/Caller'
tracking:
$ref: '#/components/schemas/TrackingContext'
limit:
type: integer
maximum: 50.0
minimum: 1.0
title: Limit
default: 10
type: object
required:
- type
- city
- caller
title: TravelSearchRequest
description: 'Travel search request. ``type`` and ``city`` are REQUIRED. ``type=hotel`` also reads the
nested ``hotel`` stay params; if the city can''t be resolved or those are missing/invalid, the
service returns the type''s default links instead of failing.'
Caller:
properties:
agent_id:
type: string
title: Agent Id
developer_id:
anyOf:
- type: string
- type: 'null'
title: Developer Id
agent_name:
anyOf:
- type: string
- type: 'null'
title: Agent Name
agent_version:
anyOf:
- type: string
- type: 'null'
title: Agent Version
developer_account_id:
anyOf:
- type: string
- type: 'null'
title: Developer Account Id
app_id:
anyOf:
- type: string
- type: 'null'
title: App Id
integration_id:
anyOf:
- type: string
- type: 'null'
title: Integration Id
type: object
required:
- agent_id
title: Caller
TripCityListResponse:
properties:
count:
type: integer
minimum: 0.0
title: Count
cities:
items:
$ref: '#/components/schemas/TripCity'
type: array
title: Cities
type: object
required:
- count
title: TripCityListResponse
TrackingContext:
properties:
agent_session_id:
anyOf:
- type: string
- type: 'null'
title: Agent Session Id
end_user_id_hash:
anyOf:
- type: string
- type: 'null'
title: End User Id Hash
sub_id:
anyOf:
- type: string
- type: 'null'
title: Sub Id
channel:
anyOf:
- type: string
- type: 'null'
title: Channel
type: object
title: TrackingContext
Attribution:
properties:
attribution_id:
type: string
title: Attribution Id
click_id:
type: string
title: Click Id
agent_id:
type: string
title: Agent Id
developer_id:
anyOf:
- type: string
- type: 'null'
title: Developer Id
developer_account_id:
anyOf:
- type: string
- type: 'null'
title: Developer Account Id
revenue_share_policy_id:
anyOf:
- type: string
- type: 'null'
title: Revenue Share Policy Id
settlement_status:
$ref: '#/components/schemas/SettlementStatus'
default: pending_click
type: object
required:
- attribution_id
- click_id
- agent_id
title: Attribution
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError
SettlementStatus:
type: string
enum:
- pending_click
- pending_conversion
- eligible
- rejected
- paid
title: SettlementStatus
TravelHotelParams:
properties:
check_in:
anyOf:
- type: string
format: date
- type: 'null'
title: Check In
check_out:
anyOf:
- type: string
format: date
- type: 'null'
title: Check Out
rooms:
type: integer
minimum: 1.0
title: Rooms
default: 1
adults:
type: integer
minimum: 1.0
title: Adults
default: 2
children:
type: integer
minimum: 0.0
title: Children
default: 0
state:
anyOf:
- type: string
- type: 'null'
title: State
description: US state name/abbr to disambiguate duplicate city names.
type: object
title: TravelHotelParams
description: 'Hotel-only stay params. Grouped here (not flattened onto the request) since they apply to a
live hotel search only. Missing/invalid values → the service returns default hotel links.'
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
TravelSearchResponse:
properties:
request_id:
type: string
title: Request Id
status:
type: string
title: Status
reason:
anyOf:
- type: string
- type: 'null'
title: Reason
links:
additionalProperties:
items:
$ref: '#/components/schemas/TravelLink'
type: array
type: object
title: Links
attribution:
anyOf:
- $ref: '#/components/schemas/Attribution'
- type: 'null'
agent_message:
type: string
title: Agent Message
errors:
items:
additionalProperties: true
type: object
type: array
title: Errors
type: object
required:
- request_id
- status
- agent_message
title: TravelSearchResponse
description: 'Travel search response. ``links`` is grouped by type (commerce_l2), e.g. ``{"hotel": […]}``.
``status`` is "ok" for a live result, "fallback" when default links are returned (unimplemented
type or a failed hotel search — ``reason`` explains it), "error" for a rejected agent,
"no_results" when nothing is available.'
TravelSearchType:
type: string
enum:
- hotel
- flights
- bundle
- airport_transfer
- car_rental
title: TravelSearchType
description: 'Travel product type (commerce_l2). ``hotel`` has a live search; the rest currently return
curated default links.'
securitySchemes:
HTTPBearer:
type: http
scheme: bearer