{
  "openapi": "3.1.0",
  "info": {
    "title": "TravelPulse API",
    "description": "Global travel intelligence API. AI-synthesized destination guides, visa requirements, currency exchange, health advisories, packing lists, phrasebooks, weather, and travel insurance. Integrates real-time data for 195+ countries. Serves travel agents, digital nomads, backpackers, and AI booking agents. All endpoints support any language via ?lang=. Pricing: $0.05\u2013$0.20 USDC/call via x402 micropayment on Base mainnet.",
    "version": "1.2.0",
    "contact": {
      "url": "https://travelpulse-nu.vercel.app"
    }
  },
  "servers": [
    {
      "url": "https://travelpulse-nu.vercel.app"
    }
  ],
  "components": {
    "securitySchemes": {
      "x402": {
        "type": "apiKey",
        "in": "header",
        "name": "PAYMENT-SIGNATURE"
      }
    }
  },
  "security": [
    {
      "x402": []
    }
  ],
  "paths": {
    "/api/parks/waits": {
      "get": {
        "summary": "Live park wait times",
        "description": "Real-time ride wait times for any theme park globally with visit optimization strategy. Covers Disney, Universal, SeaWorld, Six Flags, Europa-Park, Tokyo Disney, and 100+ more.",
        "operationId": "parksWaits",
        "parameters": [
          {
            "name": "park",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Park name or slug e.g. magic-kingdom, universal-studios-florida, europa-park"
          },
          {
            "name": "lang",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Wait times + strategy"
          },
          "402": {
            "description": "Payment required"
          }
        },
        "x-price-usd": 0.08,
        "x-agent-use-case": "on-demand",
        "x-agent-chaining": "Parks crowd intelligence; Expedia/Hotels.com booking links for nearby accommodation auto-appended"
      }
    },
    "/api/parks/hours": {
      "get": {
        "summary": "Park hours and schedule",
        "description": "Park operating hours, show times, and special events for any theme park globally.",
        "operationId": "parksHours",
        "parameters": [
          {
            "name": "park",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            },
            "description": "YYYY-MM-DD, default today"
          },
          {
            "name": "lang",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Park schedule"
          },
          "402": {
            "description": "Payment required"
          }
        },
        "x-price-usd": 0.05,
        "x-agent-use-case": "on-demand",
        "x-agent-chaining": "Quick lookup \u2014 chain at start of any parks itinerary workflow"
      }
    },
    "/api/parks/crowds": {
      "get": {
        "summary": "Crowd prediction",
        "description": "Crowd level prediction (1-10 scale) for any park on any date, with alternative date recommendations.",
        "operationId": "parksCrowds",
        "parameters": [
          {
            "name": "park",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "date",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "format": "date"
            }
          },
          {
            "name": "lang",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Crowd prediction"
          },
          "402": {
            "description": "Payment required"
          }
        },
        "x-price-usd": 0.08,
        "x-agent-use-case": "on-demand",
        "x-agent-chaining": "Run before /api/parks/waits to pick optimal dates; pairs with /api/travel/plan for full national park itinerary"
      }
    },
    "/api/travel/weather": {
      "get": {
        "summary": "Travel weather forecast",
        "description": "7-day weather forecast for any destination worldwide with travel impact analysis and packing recommendations.",
        "operationId": "travelWeather",
        "parameters": [
          {
            "name": "destination",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lang",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Weather forecast"
          },
          "402": {
            "description": "Payment required"
          }
        },
        "x-price-usd": 0.05,
        "x-agent-use-case": "on-demand",
        "x-agent-chaining": "Run before /api/travel/pack for packing context; pairs with /api/travel/deals to identify optimal weather windows"
      }
    },
    "/api/travel/deals": {
      "get": {
        "summary": "Travel deals",
        "description": "Current hotel deals, attraction discounts, restaurant offers, and money-saving tips for any destination.",
        "operationId": "travelDeals",
        "parameters": [
          {
            "name": "destination",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "lang",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Travel deals"
          },
          "402": {
            "description": "Payment required"
          }
        },
        "x-price-usd": 0.1,
        "x-agent-use-case": "on-demand",
        "x-agent-chaining": "Chain before /api/travel/plan to identify low-season windows; Expedia booking links auto-appended"
      }
    },
    "/api/travel/plan": {
      "get": {
        "summary": "Trip itinerary",
        "description": "Complete day-by-day trip itinerary for any destination. Includes must-dos, what to avoid, budget estimate, and practical info. Supports any travel style and budget tier.",
        "operationId": "travelPlan",
        "parameters": [
          {
            "name": "destination",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "name": "days",
            "in": "query",
            "required": false,
            "schema": {
              "type": "integer",
              "default": 5,
              "maximum": 14
            }
          },
          {
            "name": "style",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "cultural",
                "adventure",
                "relaxation",
                "foodie",
                "mixed"
              ]
            }
          },
          {
            "name": "budget",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "budget",
                "mid-range",
                "luxury"
              ]
            }
          },
          {
            "name": "lang",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "description": "Trip itinerary"
          },
          "402": {
            "description": "Payment required"
          }
        },
        "x-price-usd": 0.2,
        "x-agent-use-case": "on-demand",
        "x-agent-chaining": "Start here for any destination; chain to /api/travel/visa, /api/travel/health, /api/travel/insurance; booking_links (Expedia/Hotels.com/VRBO) auto-appended to response"
      }
    },
    "/api/travel/visa": {
      "get": {
        "summary": "Visa requirements by nationality and destination",
        "description": "AI-synthesized visa requirements for any nationality/destination combination. Returns: visa-on-arrival vs. e-visa vs. consulate visa, processing time, cost, required documents, entry validity and stay duration, multiple-entry options, and visa-free duration if applicable. Covers 195 destinations x 195 nationalities. Also surfaces long-stay and digital nomad visa options. Flags border crossing policies and land-entry rules.",
        "operationId": "travelVisa",
        "x-price-usd": 0.1,
        "x-agent-use-case": "on-demand",
        "x-agent-chaining": "Run before /api/travel/plan to confirm entry is possible; follow with /api/travel/insurance for mandatory travel insurance (Schengen); pairs with ImmigrationPulse /api/status for long-stay visa deep dive",
        "parameters": [
          {
            "name": "nationality",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Passport nationality (e.g. US, UK, India, Brazil, Nigeria)"
          },
          {
            "name": "destination",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Destination country (e.g. Japan, France, Thailand, Kenya)"
          },
          {
            "name": "purpose",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Visit purpose (tourism, business, nomad, transit)"
          },
          {
            "name": "lang",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Response language"
          }
        ],
        "responses": {
          "200": {
            "description": "Visa requirements with processing details, costs, and required documents"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/api/travel/health": {
      "get": {
        "summary": "Destination health advisories and vaccine requirements",
        "description": "Health risk assessment for any destination. Returns: required vaccinations (Yellow Fever, etc.), recommended vaccines, malaria prophylaxis recommendations by region within country, food/water safety, altitude sickness risk, current outbreak alerts (dengue, cholera, etc.), healthcare quality rating, nearest international hospitals, and travel health insurance recommendations. Sources: CDC, WHO, ECDC, UK FCDO travel health. Updated via real-time search.",
        "operationId": "travelHealth",
        "x-price-usd": 0.1,
        "x-agent-use-case": "on-demand",
        "x-agent-chaining": "Run before /api/travel/plan for health-risk destinations; pairs with /api/travel/insurance for medical evacuation coverage; follow with /api/travel/pack for medical supplies packing list",
        "parameters": [
          {
            "name": "destination",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Destination country or region"
          },
          {
            "name": "nationality",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Traveler nationality \u2014 some vaccines required only for specific nationals"
          },
          {
            "name": "trip_duration",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Trip duration (affects prophylaxis recommendations)"
          },
          {
            "name": "lang",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Response language"
          }
        ],
        "responses": {
          "200": {
            "description": "Health advisories, vaccine requirements, and medical preparation checklist"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/api/travel/insurance": {
      "get": {
        "summary": "Travel insurance comparison and recommendation",
        "description": "AI-synthesized travel insurance recommendation for any trip type and destination. Compares: comprehensive trip cancellation (Allianz, InsureMyTrip), adventure sports coverage, medical-only travel insurance (SafetyWing), long-term nomad/expat coverage, and annual multi-trip plans. Surfaces the right product by trip type \u2014 vacation, nomad, backpacker, adventure, cruise, business. Direct purchase links for compared providers included in response.",
        "operationId": "travelInsurance",
        "x-price-usd": 0.08,
        "x-agent-use-case": "on-demand",
        "x-agent-chaining": "Run after /api/travel/plan for trip value protection; pairs with RiskPulse /api/risk/travel for full risk picture; InsureMyTrip + Squaremouth comparison links auto-appended",
        "parameters": [
          {
            "name": "destination",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Trip destination"
          },
          {
            "name": "trip_type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "vacation",
                "nomad",
                "adventure",
                "backpacker",
                "business",
                "cruise"
              ]
            },
            "description": "Trip type \u2014 determines coverage priorities"
          },
          {
            "name": "duration_days",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number"
            },
            "description": "Trip duration in days"
          },
          {
            "name": "trip_cost_usd",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number"
            },
            "description": "Total prepaid trip cost in USD \u2014 for cancellation coverage sizing"
          },
          {
            "name": "lang",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Response language"
          }
        ],
        "responses": {
          "200": {
            "description": "Insurance recommendations with comparison, coverage details, and purchase links"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/api/travel/pack": {
      "get": {
        "summary": "AI packing list by destination, climate, and activities",
        "description": "Personalized packing list optimized for destination climate, planned activities, duration, and bag constraints. Returns categorized lists (clothing, toiletries, electronics, documents, health/safety, activity-specific gear) with quantity recommendations, climate-appropriate substitutions, carry-on-only optimization mode, and Amazon shopping links for recommended items. Accounts for cultural dress codes and activity requirements (diving, trekking, business, beach, winter). Global coverage with seasonal adjustments.",
        "operationId": "travelPack",
        "x-price-usd": 0.08,
        "x-agent-use-case": "on-demand",
        "x-agent-chaining": "Chain after /api/travel/plan with weather + activities context; pairs with /api/travel/health for medical supplies; Amazon affiliate links auto-appended to gear items",
        "parameters": [
          {
            "name": "destination",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Travel destination"
          },
          {
            "name": "duration",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number"
            },
            "description": "Trip duration in days"
          },
          {
            "name": "activities",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Planned activities (e.g. hiking, beach, business, diving, winter sports)"
          },
          {
            "name": "bag_type",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "carry-on",
                "checked",
                "backpack"
              ]
            },
            "description": "Luggage constraint"
          },
          {
            "name": "lang",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Response language"
          }
        ],
        "responses": {
          "200": {
            "description": "Categorized packing list with quantities, alternatives, and Amazon purchase links"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/api/travel/budget": {
      "get": {
        "summary": "Daily travel budget by destination and style",
        "description": "AI-synthesized daily travel budget breakdown for any destination at budget/mid-range/luxury tiers. Returns: accommodation cost range, food cost range, local transport, activities, average daily total, 7-day and 30-day total estimates, and money-saving tips specific to the destination. Covers 195+ countries with current data. Accounts for seasonality, city vs. rural cost differences, and digital nomad-specific costs (coworking, SIM cards, health insurance).",
        "operationId": "travelBudget",
        "x-price-usd": 0.08,
        "x-agent-use-case": "on-demand",
        "x-agent-chaining": "Run after destination is selected; pairs with /api/travel/currency for daily budget in local currency equivalent; pairs with RiskPulse /api/risk/nomad for nomad cost + safety combined view",
        "parameters": [
          {
            "name": "destination",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Destination country or city"
          },
          {
            "name": "style",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string",
              "enum": [
                "budget",
                "mid-range",
                "luxury",
                "nomad"
              ]
            },
            "description": "Travel style (default: mid-range)"
          },
          {
            "name": "duration",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number"
            },
            "description": "Number of days for total estimate"
          },
          {
            "name": "lang",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Response language"
          }
        ],
        "responses": {
          "200": {
            "description": "Daily budget breakdown by category with total estimates and savings tips"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/api/travel/currency": {
      "get": {
        "summary": "Currency exchange rates and money tips for destination",
        "description": "Real-time currency exchange rates plus practical money guidance for any destination. Returns: live exchange rate, ATM availability and typical fees, cash vs. card recommendations, currency apps (Wise, Revolut, Charles Schwab) ranked by suitability for destination, black market warning if applicable, and tipping customs. Wise referral link included for favorable rates.",
        "operationId": "travelCurrency",
        "x-price-usd": 0.05,
        "x-agent-use-case": "on-demand",
        "x-agent-chaining": "Chain after /api/travel/plan destination is confirmed; Wise exchange affiliate included; pairs with /api/travel/budget for cost-per-day calculations in local currency",
        "parameters": [
          {
            "name": "from",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Home currency (e.g. USD, EUR, GBP) \u2014 default: USD"
          },
          {
            "name": "to",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Destination currency or country name"
          },
          {
            "name": "amount",
            "in": "query",
            "required": false,
            "schema": {
              "type": "number"
            },
            "description": "Amount to convert for reference calculation"
          },
          {
            "name": "lang",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Response language"
          }
        ],
        "responses": {
          "200": {
            "description": "Exchange rate, money access tips, and Wise affiliate link"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/api/travel/phrasebook": {
      "get": {
        "summary": "Essential travel phrasebook by destination language",
        "description": "Essential travel phrases for any destination language with phonetic pronunciation. Returns: greeting/farewell, numbers 1-10, transport phrases, food ordering, emergency phrases, accommodation phrases, shopping/bargaining, and cultural etiquette notes. Supports 100+ language pairs. Babbel language learning affiliate included for travelers seeking deeper fluency.",
        "operationId": "travelPhrasebook",
        "x-price-usd": 0.05,
        "x-agent-use-case": "on-demand",
        "x-agent-chaining": "Call after /api/travel/plan destination is confirmed; pairs with Babbel for longer stays; supports 100+ languages via output ?lang= parameter",
        "parameters": [
          {
            "name": "destination",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Destination country or language (e.g. Japan, Thai, Morocco)"
          },
          {
            "name": "focus",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Phrase focus area (transport, food, emergency, shopping, all)"
          },
          {
            "name": "lang",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Response language for explanations (phrases always in destination language)"
          }
        ],
        "responses": {
          "200": {
            "description": "Essential travel phrases with phonetic pronunciation and cultural etiquette notes"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    },
    "/api/travel/translate": {
      "get": {
        "summary": "Real-time travel translation (menus, signs, conversations)",
        "description": "Context-aware travel translation for real-world situations: menu items with descriptions, street signs, instructions, product labels, or conversational text. Returns accurate translation with cultural context and pronunciation guide. Supports 100+ language pairs. Optimized for travel contexts \u2014 recognizes local dish names, regional idioms, and destination-specific terms.",
        "operationId": "travelTranslate",
        "x-price-usd": 0.05,
        "x-agent-use-case": "on-demand",
        "x-agent-chaining": "Pairs with /api/travel/phrasebook for phrase context; call during trip for in-situ translation needs; supports 100+ languages",
        "parameters": [
          {
            "name": "text",
            "in": "query",
            "required": true,
            "schema": {
              "type": "string"
            },
            "description": "Text to translate"
          },
          {
            "name": "from_lang",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Source language (auto-detected if omitted)"
          },
          {
            "name": "to_lang",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Target language (default: English)"
          },
          {
            "name": "context",
            "in": "query",
            "required": false,
            "schema": {
              "type": "string"
            },
            "description": "Context hint (menu, sign, conversation, product)"
          }
        ],
        "responses": {
          "200": {
            "description": "Translation with pronunciation guide and cultural context"
          },
          "402": {
            "description": "Payment required"
          }
        }
      }
    }
  }
}