---
title: "Search"
method: POST
path: "/api/v1/travel/search"
tags: ["travel-search"]
---

# Search

`POST /api/v1/travel/search`

## Request

- Base URL: `https://api.intentlink.io` (the document declares no server; this is the origin it was published from)
- URL: `https://api.intentlink.io/api/v1/travel/search`
- Auth: none declared

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``).

## Request body

- TravelSearchRequest: 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.
  - `type` 'hotel' | 'flights' | 'bundle' | 'airport_transfer' | 'car_rental', required: Travel product type (commerce_l2). ``hotel`` has a live search; the rest currently return curated default links.
  - `city` string, required: City name from the supported list (data/…).
  - `hotel` TravelHotelParams: 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.
    - `check_in` string, date, nullable
    - `check_out` string, date, nullable
    - `rooms` integer
    - `adults` integer
    - `children` integer
    - `state` string, nullable: US state name/abbr to disambiguate duplicate city names.
  - `query` string, nullable: Optional free-text trip context.
  - `country` string
  - `caller` Caller, required
    - `agent_id` string, required
    - `developer_id` string, nullable
    - `agent_name` string, nullable
    - `agent_version` string, nullable
    - `developer_account_id` string, nullable
    - `app_id` string, nullable
    - `integration_id` string, nullable
  - `tracking` TrackingContext
    - `agent_session_id` string, nullable
    - `end_user_id_hash` string, nullable
    - `sub_id` string, nullable
    - `channel` string, nullable
  - `limit` integer

## Response `200`

Successful Response

- TravelSearchResponse: 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.
  - `request_id` string, required
  - `status` string, required
  - `reason` string, nullable
  - `links` object
  - `attribution` Attribution
    - `attribution_id` string, required
    - `click_id` string, required
    - `agent_id` string, required
    - `developer_id` string, nullable
    - `developer_account_id` string, nullable
    - `revenue_share_policy_id` string, nullable
    - `settlement_status` 'pending_click' | 'pending_conversion' | 'eligible' | 'rejected' | 'paid'
  - `agent_message` string, required
  - `errors` object[]

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/intentlink/apis/affiliate-recommendation-service.md) · [All operations](https://skmtc.dev/intentlink/apis/affiliate-recommendation-service/llms.txt) · [OpenAPI document](https://skmtc.dev/intentlink/apis/affiliate-recommendation-service/revisions/95cc11d55fb6?raw)
