Response model
Stable public opportunities, not planner internals.
Downstream products receive ordered opportunities, date options, reasons, airport inputs and qualitative fit. Raw planner scores and internal lanes remain private implementation details.
{
"request_id": "req_…",
"idempotency_key": "discovery-example-001",
"status": "ok",
"discovery_id": "…",
"interpreted_request": {
"title": "4 days next month, under £300pp, somewhere warm with direct flights",
"origin": "London",
"duration_nights": 4,
"adults": 2,
"children": 0,
"budget_amount": 300,
"budget_currency": "GBP",
"budget_scope": "per_person",
"categories": ["flights", "accommodation"],
"warnings": []
},
"opportunities": [
{
"opportunity_id": "…",
"destination": {
"id": "00000000-0000-0000-0000-000000000000",
"name": "Málaga",
"display_name": "Málaga, Spain",
"country_code": "ES"
},
"rank": 1,
"date_options": [
{
"date_option_id": "date_123",
"date_type": "primary",
"start_date": "2026-10-08",
"end_date": "2026-10-12",
"nights": 4
}
],
"tags": ["warm"],
"reasons": ["Matches the requested warm short-break intent."],
"fit": {
"label": "strong",
"reason": "Strong match to the interpreted request."
},
"origin_airport_iata_codes": ["LHR", "LGW", "STN", "LTN", "LCY"],
"destination_airport_iata_codes": ["AGP"],
"search_inputs_available": {
"flights": true,
"accommodation": true,
"events": false
},
"verification_status": "not_verified"
}
],
"meta": {
"contract_version": "travel.discovery.v1",
"candidate_count": 1,
"usage": {
"metering_basis": "request",
"discoveries_used": 1,
"candidate_count": 1,
"plan_period_allowance": 50000
}
},
"expires_at": "2026-10-08T12:00:00Z"
}