Omio Trip Detail API Documentation Open one trip of an earlier search. Pass the search_id from search_meta.search_id and the trip_id of a result. The answer has the same trip object as the search with every leg, the changes between legs and the fare offers. A trip is served from the stored search for about two hours, so the call is fast. After that the search has expired and the answer is a not found error. Run a new search then. For a search made with return_date, the answer also has trip_type round_trip, the return_date and return_options: the return trips for this outbound, cheapest first. Each return option has round_trip_price, the total price of outbound and return together. Omio gives these in a second lookup for the chosen outbound, so the call takes a few seconds and has upstream_calls above 0. If Omio gives no return trips, the call fails and is not billed.
Run this endpoint
Endpoint
Parameters
Start with the required fields, then add optional filters only when your use case needs them.
string
Required
The search id from search_meta.search_id of a search response.
1234567890
string
Required
The trip_id of one result of that search.
1234567890
Response Schema
Example response fields are illustrative; inspect the JSON before integrating.
Example response fields
Scan these fields before integrating.
data
meta
success
{
"data": {
"trip": {
"legs": [
{
"mode": "train",
"tags": [],
"class": null,
"index": 0,
"company": "FlixTrain",
"line_number": "FlixTrain",
"arrival_time": "2026-11-14T15:29:00.000+01:00",
"arrival_zone": "Europe/Berlin",
"departure_time": "2026-11-14T09:57:00.000+01:00",
"departure_zone": "Europe/Berlin",
"duration_minutes": 332,
"marketing_company": null,
"no_change_for_next_segment": false
},
{
"mode": "bus",
"tags": [],
"class": null,
"index": 1,
"company": "FlixBus",
"line_number": "FlixBus",
"arrival_time": "2026-11-15T02:20:00.000+01:00",
"arrival_zone": "Europe/Paris",
"departure_time": "2026-11-14T17:45:00.000+01:00",
"departure_zone": "Europe/Berlin",
"duration_minutes": 515,
"marketing_company": null,
"no_change_for_next_segment": false
}
],
"mode": "bus",
"price": {
"currency": "EUR",
"amount_minor": 5600
},
"stops": 1,
"offers": [
{
"type": "ONE_WAY",
"class": null,
"price": {
"currency": "EUR",
"amount_minor": 5600
},
"is_available": true,
"discount_cards": [],
"availability_rank": 99,
"unavailability_reasons": []
}
],
"arrival": {
"city": "Paris",
"name": "Paris, Quai de Bercy (Bercy Seine)",
"type": "busstation",
"latitude": 48.83632528252408,
"iata_code": null,
"longitude": 2.3793135252719426,
"position_id": 16834868,
"country_code": "FR"
},
"changes": [
{
"type": "transfer",
"after_leg": 0,
"to_position_id": 16904720,
"duration_minutes": 136,
"from_position_id": 16904720
}
],
"trip_id": "5607700354612381189-1045-bus-1",
"provider": {
"id": 1045,
"code": "meinfernbus_flixbus",
"name": "FlixBus",
"logo_url": "https://static.omio.design/web/logos/31/meinfernbus_flixbus.png",
"toc_codes": [],
"iata_codes": []
},
"departure": {
"city": "Berlin",
"name": "Berlin Hbf",
"type": "station",
"latitude": 52.525102698597905,
"iata_code": null,
"longitude": 13.369429982803336,
"position_id": 334196,
"country_code": "DE"
},
"journey_id": "26271589",
"is_bookable": true,
"outbound_id": "5607700354612381189",
"arrival_time": "2026-11-15T02:20:00.000+01:00",
"tickets_left": null,
"departure_time": "2026-11-14T09:57:00.000+01:00",
"original_price": null,
"is_split_ticket": false,
"duration_minutes": 983,
"selling_companies": [
"FlixBus"
],
"service_providers": [
"Flixbus"
],
"is_routed_connection": false
},
"currency": "EUR",
"search_id": "EEEEB9FDC8C6C4EA495BBAAB911D3E2D8",
"search_meta": {
"source": "cache",
"upstream_calls": 0
}
},
"meta": {
"billable": true,
"endpoint_family": "trip_detail"
},
"success": true
}
Errors
Handle these documented responses before retrying or showing customer-facing failures.
Validation Error
A required parameter is missing or invalid. This response is not billable.
{
"errors": {
"trip_id": [
"The trip_id of a result of that search is required."
]
},
"message": "The request validation failed"
}Resource Not Found
The search, trip or route was not found or has expired. This response is not billable.
{
"meta": {
"billable": false,
"retryable": false,
"endpoint_family": "trip_detail"
},
"error": {
"code": "NOT_FOUND",
"message": "The requested Omio resource was not found."
},
"success": false
}Service Unavailable
Omio could not be reached, did not finish the search in time, or answered with an unexpected shape. This response is not billable.
{
"meta": {
"billable": false,
"retryable": true,
"endpoint_family": "trip_detail"
},
"error": {
"code": "UPSTREAM_UNAVAILABLE",
"message": "The Omio API is temporarily unavailable. Please retry."
},
"success": false
}Generate Code with AI
Copy a ready-made prompt with all the endpoint details, parameters, and example responses. Paste it into ChatGPT, Claude, or any AI assistant to instantly generate working code.
Try It Live
Test this endpoint in our interactive playground with real data.