Response example
Stable public opportunities, not planner internals.
Raw planner scores and internal lanes are deliberately private. Downstream products receive ordered opportunities, reasons and qualitative fit: strong, possible, stretch or unknown.
{
"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": [
{
"start_date": "2026-09-10",
"end_date": "2026-09-14",
"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": true
},
"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-08-13T12:00:00Z"
}