{"openapi":"3.1.0","info":{"title":"Agent Travel API","version":"0.1.0","description":"Query-sensitive travel ranking API for AI agents. Best for demos, prototypes, trip-planning copilots, and early travel workflows. Current beta uses seeded travel intelligence, not live booking/provider quotes yet."},"servers":[{"url":"https://agentinfrastructureco.com"}],"tags":[{"name":"travel","description":"Travel ranking and destination metadata"},{"name":"account","description":"Account and API-key usage introspection"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key","description":"Generate a bearer API key from the dashboard after signup."}},"schemas":{"ErrorResponse":{"type":"object","properties":{"error":{"type":"string"}},"required":["error"],"additionalProperties":false},"TravelSearchRequest":{"type":"object","properties":{"origin":{"type":"string","examples":["SFO"]},"departure_window":{"type":"array","items":{"type":"string","format":"date"},"minItems":2,"maxItems":2,"examples":[["2026-10-01","2026-10-03"]]},"trip_length_days":{"type":"number","examples":[14]},"budget_usd":{"type":"number","examples":[9000]},"interests":{"type":"array","items":{"type":"string"},"examples":[["hiking","food","recovery"]]},"services":{"type":"array","items":{"type":"string"},"description":"Accepted during beta for response labeling only.","examples":[["flights","stays","weather","research"]]}},"additionalProperties":false},"TravelSearchResponse":{"type":"object","properties":{"request_id":{"type":"string"},"requested_services":{"type":"array","items":{"type":"string"}},"beta_warnings":{"type":"array","items":{"type":"string"}},"results":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"score":{"type":"number"},"total_trip_estimate_usd":{"type":"number"},"ranking_breakdown":{"type":"object","properties":{"budget_fit":{"type":"number"},"interest_fit":{"type":"number"},"weather_fit":{"type":"number"},"flight_fit":{"type":"number"},"duration_fit":{"type":"number"}}},"match_reasons":{"type":"array","items":{"type":"string"}}}}}},"required":["request_id","requested_services","beta_warnings","results"]},"DestinationsResponse":{"type":"object","properties":{"request_id":{"type":"string"},"destinations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"region":{"type":"string"},"tripStyle":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"highlights":{"type":"array","items":{"type":"string"}},"researchSummary":{"type":"string"}}}}},"required":["request_id","destinations"]},"AccountMeResponse":{"type":"object","properties":{"request_id":{"type":"string"},"api_key":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"]},"usage":{"type":"object","description":"Rate-limit and usage details for the current API key.","additionalProperties":true}},"required":["request_id","api_key","usage"]}}},"security":[{"bearerAuth":[]}],"paths":{"/api/v1/travel/search":{"post":{"tags":["travel"],"summary":"Search ranked travel destinations","description":"Returns structured destination rankings based on origin, departure window, trip length, budget, and interests.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/TravelSearchRequest"}}}},"responses":{"200":{"description":"Ranked travel results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TravelSearchResponse"}}}},"400":{"description":"Invalid request body","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/travel/destinations":{"get":{"tags":["travel"],"summary":"List supported destinations","responses":{"200":{"description":"Supported destinations","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DestinationsResponse"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}},"/api/v1/account/me":{"get":{"tags":["account"],"summary":"Inspect the authenticated API key","responses":{"200":{"description":"Current key and usage data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountMeResponse"}}}},"401":{"description":"Missing or invalid API key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}},"429":{"description":"Rate limit exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}}}