Introduction
About Daytrip
We make traveling between cities easy. With Daytrip, you can offer your clients private car transfers in 130+ countries across 6 continents through our network of over 10,000+ English-speaking drivers. You can learn more about what we do in our B2B booklet or B2B partner page.
Partner API
Our public API consists of three main parts: the Trip API allows you to search and book private point-to-point transfers, the Hourly Ride API allows you to book time-based vehicle rentals with a driver, and the Day Trips API allows you to order our pre‑planned excursions with a fixed itinerary.
The Trip API, Hourly Ride API, and Day Trips API are organized around REST. Our API accepts JSON-encoded request bodies, returns JSON-encoded responses, and uses standard HTTP response codes and verbs.
What can our TRIP API do?
- Return quotes for point-to-point transfers ranging from short airport transfers to long trips between countries.
- Return quotes for shared transfers between predefined routes.
- Offer sightseeing stops on selected routes (including visuals and descriptions so you can display them on your website).
- Provide predefined pickup and drop-off locations for areas with restricted vehicle access.
- Offer multiple vehicle options to accommodate larger groups of passengers.
- Book trips directly over the API.
- Update trips directly over the API.
- Cancel trips directly over the API with no penalty up to 24 hours before the departure.
- Return details about booked trips, including the assigned driver and vehicle.
- Return live driver position for trips that are being tracked by the driver.
What can our Hourly Ride API do?
- Search for hourly ride options by pickup location, duration, and passenger count.
- Return multiple vehicle options for time-based rentals with included kilometers.
- Book hourly rides with driver and vehicle for specified durations.
- Retrieve booking details including pickup information and pricing.
- Cancel bookings with flexible cancellation policy.
What can our Day Trips API do?
- Search for available day trips by location or coordinates.
- Retrieve detailed information about specific day trips, including itineraries and pricing.
- Create bookings for day trips on behalf of customers.
- Update or cancel existing day trip bookings.
Contacts
Onboarding
If you want to integrate with our API, contact us at partners@daytrip.com to get a partner account and an API key.
Customer support emergency
To solve problems with bookings created via the API you can contact daytrip@daytrip.com or call +44 20 3318 1119 or +1 628 201 9501.
Environments
Daytrip offers a sandbox environment where you can test your integration with the API without creating real bookings. All the code examples provided in this documentation are using this sandbox environment. Each environment requires a different API key. When your integration is ready and tested against the sandbox environment, you can request an API key for the production environment.
URLs
| Environment | Base partner API url |
|---|---|
| Sandbox | https://papi.staging.mydaytrip.net/partners/ |
| Production | https://papi.mydaytrip.com/partners/ |
Authentication
To authorize your requests, add the
x-api-keyheader like this:
curl "https://papi.staging.mydaytrip.net/partners/v3/trip/search"
-H "x-api-key: your-api-key"
Make sure to replace
your-api-keywith your API key.
Daytrip API uses API keys to allow access to the API. The API key needs to be included in the x-api-key header with each API request.
Your API key carries many privileges, so be sure to keep it secure! Do not share your secret API key in publicly accessible areas such as GitHub, client-side code, and so forth.
Errors
Daytrip uses conventional HTTP response status codes to indicate the success or failure of an API request. In general: codes in the 2xx range indicate success. Codes in the 4xx range indicate an error that failed given the information provided (e.g., a required parameter was omitted, no trip was found for given parameters, etc.). Codes in the 5xx range indicate an error with Daytrip's service (these are rare).
HTTP status code meanings
| HTTP Code | Meaning |
|---|---|
| 400 | Bad Request - Missing mandatory parameters, wrong types of parameters or not a valid json. |
| 401 | Unauthorized - API key is missing or invalid. |
| 403 | Forbidden - The requested operation is forbidden. |
| 404 | Not Found - No trips found, trip option not found, booking not found, endpoint does not exist. |
| 409 | Conflict - Trip option already booked, trip option already cancelled. |
| 500 | Internal Server Error - We had a problem with our service. Please retry your request. |
| 502 | Bad Gateway - We had a problem with an external service. Please retry your request. |
| 503 | Service Unavailable - We had a problem with our service. Please retry your request. |
Error response body
Error response body example:
{
"statusCode": 404,
"message": "Booking not found"
}
Each error response has an unified JSON body:
| Property | Type | Description |
|---|---|---|
| statusCode | integer | The HTTP status of the call duplicated in the body to allow easier logging and error handling. You can base your error handling logic on this property entirely. |
| message | string | Informative message about the reason of this error. Error handling logic should not use this property, it should be used for debugging purposes only. |
Debugging
Every response from the Daytrip API contains a x-correlation-id header with a unique identifier of the HTTP call. If you send us this identifier, we can give you more detailed info about what went wrong with your call.
If you are using correlation ids on your side as well, you can send us x-correlation-id header with your requests and we will use your own correlation id value.
Trip API
A trip is a representation of passenger transportation from point A to point B. Each search will usually return multiple trip options that can be booked. Options can differ by vehicle type or by being private or shared with other travelers. Shared trips have predefined pickup and dropoff points and departure times. For private trips pickup and dropoff points as well as departure time are matching the search request. Private trips can also be customized by adding stops if available.
Flows
Trip API can be used to search for trip options, customizing an option with stops and then booking the option.
Simple trip
A typical simple flow without stop customization would look like this:
- call /search endpoint to get possible options
- call /book endpoint to book the chosen option
optional- call /details endpoint to get trip and booking detailsoptional- call /drivers endpoint to get information about driver(s) and vehicle(s) assigned to the tripoptional- call /tracking endpoint to track the position of the driver(s) assigned to the trip
Trip with a stop
A flow with adding stops would look like this:
- call /search endpoint to get possible options
- call /customize endpoint to add stops to the chosen option
- call /book endpoint to book the customized option
optional- call /details endpoint to get trip and booking details
Cancelling a trip
A flow to book a trip, get details about it and then cancel it would look like this:
- call /search endpoint to get possible options
- call /book endpoint to book the chosen option
optional- call /details endpoint to get trip and booking details- call /cancel endpoint to cancel the booking
optional- call /details endpoint to get trip and booking details (status should be "Cancelled")
Updating a trip
If you want to change departure time or add/remove stops you need to cancel the booking and create it again as it can affect the price. For small adjustments like changing passenger phone number, email, child seat type, pickup and dropoff address notes (within the scope of original search coordinates), customer note or flight number you can use the /update endpoint:
- call /search endpoint to get possible options
- call /book endpoint to book the chosen option
optional- call /details endpoint to get trip and booking details- call /update endpoint to update the booking details
Disclaimer: in the last 24 hours before the departure the /update endpoint will no longer accept updates. For updates in the last 24 hours please contact our customer support at daytrip@mydaytrip.com or call +44 20 3318 1119.
Trip Search
This endpoint returns all available trip options based on the specified origin, destination, departure time, and passenger count. The origin and destination can be provided either as geographic coordinates or as IATA airport codes. Geographic coordinates should be specified as latitude and longitude in decimal degrees format, for example: 39.753657, -117.610215. The departure time must be supplied as a UNIX epoch timestamp in seconds (e.g., 1679463169).
To search for a private or shared trip from Prague to Vienna for 3 passengers, use this call:
curl "https://papi.staging.mydaytrip.net/partners/v3/trip/search?originLatitude=50.10&originLongitude=14.2559&destinationLatitude=48.2082&destinationLongitude=16.3738&departureTime=1766227088&passengersCount=3&childrenCount=1&includeShared=true" \
-H "x-api-key: your_api_key"
To search for a private or shared trip from Prague Airport to Vienna for 3 passengers, use this call:
curl "https://papi.staging.mydaytrip.net/partners/v3/trip/search?originType=iata&origin=PRG&destinationType=coordinates&destinationLatitude=48.2082&destinationLongitude=16.3738&departureTime=1766227088&passengersCount=3&childrenCount=1&includeShared=true" \
-H "x-api-key: your_api_key"
The above call returns a JSON structured like this:
{
"searchId": "f0e34a1b-2b3d-4747-b426-292633b615b4",
"expiresAt": "2022-12-04T18:00:00Z",
"passengersCount": 3,
"currency": "EUR",
"options": [
{
"id": "1d32109f-c2e2-44fe-b2cf-461ef3730541",
"type": "Private",
"englishSpeakingDriver": true,
"distanceKm": 334,
"travelTimeMinutes": 208,
"pickUp": {
"lat": 50.1,
"lon": 14.25,
"time": "2022-12-05T18:00:00Z",
"timezone": "Europe/Prague",
"meetAndGreet": true,
"state": "original",
"immutable": false
},
"dropOff": {
"lat": 48.2,
"lon": 16.37,
"state": "original",
"immutable": false
},
"pricing": {
"totalPrice": 260
},
"vehicle": {
"type": "Sedan",
"maxPassengers": 3,
"description": "Sedan comparable to a Volkswagen Passat, up to 3 passengers with luggage.",
"modelDescription": "VW Passat or similar",
"image": "https://daytrip.imgix.net/site/sedan.png"
},
"luggage": {
"maxTotalCarryons": 3,
"maxTotalSuitcases": 3
},
"availableChildSeatTypes": [
{
"childSeatType": "RearFacing",
"description": "Rear-facing infant seat",
"ageFrom": 0,
"ageTo": 1,
"weightInPoundsFrom": 0,
"weightInPoundsTo": 26,
"weightInKilosFrom": 0,
"weightInKilosTo": 10
},
{
"childSeatType": "ForwardFacing",
"description": "Forward-facing w/harness",
"ageFrom": 1,
"ageTo": 4,
"weightInPoundsFrom": 18,
"weightInPoundsTo": 36,
"weightInKilosFrom": 8,
"weightInKilosTo": 16
},
{
"childSeatType": "BoosterSeat",
"description": "Booster seat with high back",
"ageFrom": 4,
"ageTo": 6,
"weightInPoundsFrom": 30,
"weightInPoundsTo": 50,
"weightInKilosFrom": 14,
"weightInKilosTo": 23
},
{
"childSeatType": "Booster",
"description": "Backless booster",
"ageFrom": 6,
"ageTo": 12,
"weightInPoundsFrom": 44,
"weightInPoundsTo": 72,
"weightInKilosFrom": 20,
"weightInKilosTo": 33
}
],
"possibleStops": [
{
"id": "d280ce2a-6224-4d95-af17-a250f81b97dd",
"price": 31,
"name": "Lednice Chateau and Park",
"image": "https://daytrip.imgix.net/lednice-chateau-and-park4.jpg",
"title": "Vacation like a King",
"perex": "This UNESCO-listed chateau and sprawling park was the Lichtenstein's holiday home - exactly the kind of extravagance you'd expect from a dynasty with their own country. ",
"description": "The Liechtensteins really came into the money with the fortunes seized from Czech noblemen after their victory at the Battle of White Mountain in 1620, and Lednice was one of the presents they bought themselves. In the mid-19th century the baroque manor was given a complete makeover in the 'Windsor Gothic' style, leaving it as we see it today: a shameless flaunting of fabulous wealth, a slap in the face to anyone foolish enough to think that the French Revolution had ended high-living in Europe. The surrounding English landscape park, the largest in the country, is an incomparable swath of green, sprinkled with Romantic follies. There's also a monumental greenhouse open all year round, overflowing with exotic growths gathered by an army of botanists across the Americas. The greenhouse's exoticism is echoed by the charming minaret, constructed at the turn of the 18th century, bringing a whiff of Morocco to Moravia.\nFor more info: www.zamek-lednice.com",
"durationInMinutes": 60,
"order": 1,
"timezone": "Europe/Prague",
"country": {
"englishName": "Czech Republic"
}
},
{
"id": "4ee58c0c-4e56-46ef-bd22-406a1bc60e1c",
"price": 28,
"name": "Mikulov",
"image": "https://daytrip.imgix.net/510.jpg",
"title": "The Heart of Czech Wine Country",
"perex": "A town with a history as deep and flavourful as its wine, Mikulov provides a perfect combination of relaxation and exploration.",
"description": "Often favoured by visitors with a more active approach to life, Mikulov has much to offer. Surrounded by idyllic countryside, crisscrossed by bicycle paths and marked hiking trails, and the nearby Nové Mlýny lakes, there is something for everyone to enjoy. After all that fresh air, a glass of wine will be more than welcome, and fortunately, Mikulov is the centre for Czech wine making. Due to a high concentration of limestone in the local soil, wine from this region has a unique character and distinct taste. If you like your wine with a side-serving of history, Mikulov Castle dates from the 1730s, and the Dietrichstein Tomb is the final resting place of a Bohemian noble family. Mikulov is also significant for its strong Jewish history. In the early 1800s Mikulov's Jewish Quarter was the largest in Moravia with half the town's inhabitants being of Jewish faith.",
"durationInMinutes": 60,
"order": 2,
"timezone": "Europe/Prague",
"country": {
"englishName": "Czech Republic"
}
}
],
"expiresAt": "2022-12-04T18:00:00Z"
},
{
"id": "054ee064-d4dd-492f-9d0a-5251a7f791c2",
"type": "Private",
"englishSpeakingDriver": false,
"distanceKm": 334,
"travelTimeMinutes": 208,
"pickUp": {
"lat": 50.1,
"lon": 14.25,
"time": "2022-12-05T18:00:00Z",
"timezone": "Europe/Prague",
"meetAndGreet": true,
"state": "original",
"immutable": false
},
"dropOff": {
"lat": 48.2,
"lon": 16.37,
"state": "original",
"immutable": false
},
"pricing": {
"totalPrice": 240
},
"vehicle": {
"type": "Sedan",
"maxPassengers": 3,
"description": "Sedan comparable to a Volkswagen Passat, up to 3 passengers with luggage.",
"modelDescription": "VW Passat or similar",
"image": "https://daytrip.imgix.net/site/sedan.png"
},
"luggage": {
"maxTotalCarryons": 3,
"maxTotalSuitcases": 3
},
"availableChildSeatTypes": [
{
"childSeatType": "RearFacing",
"description": "Rear-facing infant seat",
"ageFrom": 0,
"ageTo": 1,
"weightInPoundsFrom": 0,
"weightInPoundsTo": 26,
"weightInKilosFrom": 0,
"weightInKilosTo": 10
},
{
"childSeatType": "ForwardFacing",
"description": "Forward-facing w/harness",
"ageFrom": 1,
"ageTo": 4,
"weightInPoundsFrom": 18,
"weightInPoundsTo": 36,
"weightInKilosFrom": 8,
"weightInKilosTo": 16
},
{
"childSeatType": "BoosterSeat",
"description": "Booster seat with high back",
"ageFrom": 4,
"ageTo": 6,
"weightInPoundsFrom": 30,
"weightInPoundsTo": 50,
"weightInKilosFrom": 14,
"weightInKilosTo": 23
},
{
"childSeatType": "Booster",
"description": "Backless booster",
"ageFrom": 6,
"ageTo": 12,
"weightInPoundsFrom": 44,
"weightInPoundsTo": 72,
"weightInKilosFrom": 20,
"weightInKilosTo": 33
}
],
"possibleStops": [
{
"id": "d280ce2a-6224-4d95-af17-a250f81b97dd",
"price": 31,
"name": "Lednice Chateau and Park",
"image": "https://daytrip.imgix.net/lednice-chateau-and-park4.jpg",
"title": "Vacation like a King",
"perex": "This UNESCO-listed chateau and sprawling park was the Lichtenstein's holiday home - exactly the kind of extravagance you'd expect from a dynasty with their own country. ",
"description": "The Liechtensteins really came into the money with the fortunes seized from Czech noblemen after their victory at the Battle of White Mountain in 1620, and Lednice was one of the presents they bought themselves. In the mid-19th century the baroque manor was given a complete makeover in the 'Windsor Gothic' style, leaving it as we see it today: a shameless flaunting of fabulous wealth, a slap in the face to anyone foolish enough to think that the French Revolution had ended high-living in Europe. The surrounding English landscape park, the largest in the country, is an incomparable swath of green, sprinkled with Romantic follies. There's also a monumental greenhouse open all year round, overflowing with exotic growths gathered by an army of botanists across the Americas. The greenhouse's exoticism is echoed by the charming minaret, constructed at the turn of the 18th century, bringing a whiff of Morocco to Moravia.\nFor more info: www.zamek-lednice.com",
"durationInMinutes": 60,
"order": 1,
"timezone": "Europe/Prague",
"country": {
"englishName": "Czech Republic"
}
},
{
"id": "4ee58c0c-4e56-46ef-bd22-406a1bc60e1c",
"price": 28,
"name": "Mikulov",
"image": "https://daytrip.imgix.net/510.jpg",
"title": "The Heart of Czech Wine Country",
"perex": "A town with a history as deep and flavourful as its wine, Mikulov provides a perfect combination of relaxation and exploration.",
"description": "Often favoured by visitors with a more active approach to life, Mikulov has much to offer. Surrounded by idyllic countryside, crisscrossed by bicycle paths and marked hiking trails, and the nearby Nové Mlýny lakes, there is something for everyone to enjoy. After all that fresh air, a glass of wine will be more than welcome, and fortunately, Mikulov is the centre for Czech wine making. Due to a high concentration of limestone in the local soil, wine from this region has a unique character and distinct taste. If you like your wine with a side-serving of history, Mikulov Castle dates from the 1730s, and the Dietrichstein Tomb is the final resting place of a Bohemian noble family. Mikulov is also significant for its strong Jewish history. In the early 1800s Mikulov's Jewish Quarter was the largest in Moravia with half the town's inhabitants being of Jewish faith.",
"durationInMinutes": 60,
"order": 2,
"timezone": "Europe/Prague",
"country": {
"englishName": "Czech Republic"
}
}
],
"expiresAt": "2022-12-04T18:00:00Z"
},
{
"id": "b071e9f8-54d9-44be-bb5f-feae5aafd771",
"type": "Private",
"englishSpeakingDriver": true,
"distanceKm": 334,
"travelTimeMinutes": 208,
"pickUp": {
"lat": 50.1,
"lon": 14.25,
"time": "2022-12-05T18:00:00Z",
"timezone": "Europe/Prague",
"meetAndGreet": true,
"state": "original",
"immutable": false
},
"dropOff": {
"lat": 48.2,
"lon": 16.37,
"state": "original",
"immutable": false
},
"pricing": {
"totalPrice": 320
},
"vehicle": {
"type": "MPV",
"maxPassengers": 4,
"description": "Compact MPV comparable to a Volkswagen Touran, up to 4 passengers with luggage.",
"modelDescription": "VW Touran or similar",
"image": "https://daytrip.imgix.net/site/mpv.png"
},
"luggage": {
"maxTotalCarryons": 4,
"maxTotalSuitcases": 4
},
"availableChildSeatTypes": [
{
"childSeatType": "RearFacing",
"description": "Rear-facing infant seat",
"ageFrom": 0,
"ageTo": 1,
"weightInPoundsFrom": 0,
"weightInPoundsTo": 26,
"weightInKilosFrom": 0,
"weightInKilosTo": 10
},
{
"childSeatType": "ForwardFacing",
"description": "Forward-facing w/harness",
"ageFrom": 1,
"ageTo": 4,
"weightInPoundsFrom": 18,
"weightInPoundsTo": 36,
"weightInKilosFrom": 8,
"weightInKilosTo": 16
},
{
"childSeatType": "BoosterSeat",
"description": "Booster seat with high back",
"ageFrom": 4,
"ageTo": 6,
"weightInPoundsFrom": 30,
"weightInPoundsTo": 50,
"weightInKilosFrom": 14,
"weightInKilosTo": 23
},
{
"childSeatType": "Booster",
"description": "Backless booster",
"ageFrom": 6,
"ageTo": 12,
"weightInPoundsFrom": 44,
"weightInPoundsTo": 72,
"weightInKilosFrom": 20,
"weightInKilosTo": 33
}
],
"possibleStops": [
{
"id": "d280ce2a-6224-4d95-af17-a250f81b97dd",
"price": 31,
"name": "Lednice Chateau and Park",
"image": "https://daytrip.imgix.net/lednice-chateau-and-park4.jpg",
"title": "Vacation like a King",
"perex": "This UNESCO-listed chateau and sprawling park was the Lichtenstein's holiday home - exactly the kind of extravagance you'd expect from a dynasty with their own country. ",
"description": "The Liechtensteins really came into the money with the fortunes seized from Czech noblemen after their victory at the Battle of White Mountain in 1620, and Lednice was one of the presents they bought themselves. In the mid-19th century the baroque manor was given a complete makeover in the 'Windsor Gothic' style, leaving it as we see it today: a shameless flaunting of fabulous wealth, a slap in the face to anyone foolish enough to think that the French Revolution had ended high-living in Europe. The surrounding English landscape park, the largest in the country, is an incomparable swath of green, sprinkled with Romantic follies. There's also a monumental greenhouse open all year round, overflowing with exotic growths gathered by an army of botanists across the Americas. The greenhouse's exoticism is echoed by the charming minaret, constructed at the turn of the 18th century, bringing a whiff of Morocco to Moravia.\nFor more info: www.zamek-lednice.com",
"durationInMinutes": 60,
"order": 1,
"timezone": "Europe/Prague",
"country": {
"englishName": "Czech Republic"
}
},
{
"id": "4ee58c0c-4e56-46ef-bd22-406a1bc60e1c",
"price": 28,
"name": "Mikulov",
"image": "https://daytrip.imgix.net/510.jpg",
"title": "The Heart of Czech Wine Country",
"perex": "A town with a history as deep and flavourful as its wine, Mikulov provides a perfect combination of relaxation and exploration.",
"description": "Often favoured by visitors with a more active approach to life, Mikulov has much to offer. Surrounded by idyllic countryside, crisscrossed by bicycle paths and marked hiking trails, and the nearby Nové Mlýny lakes, there is something for everyone to enjoy. After all that fresh air, a glass of wine will be more than welcome, and fortunately, Mikulov is the centre for Czech wine making. Due to a high concentration of limestone in the local soil, wine from this region has a unique character and distinct taste. If you like your wine with a side-serving of history, Mikulov Castle dates from the 1730s, and the Dietrichstein Tomb is the final resting place of a Bohemian noble family. Mikulov is also significant for its strong Jewish history. In the early 1800s Mikulov's Jewish Quarter was the largest in Moravia with half the town's inhabitants being of Jewish faith.",
"durationInMinutes": 60,
"order": 2,
"timezone": "Europe/Prague",
"country": {
"englishName": "Czech Republic"
}
}
],
"expiresAt": "2022-12-04T18:00:00Z"
},
{
"id": "282a8a94-2a18-42f6-9af6-c53b13d007cb",
"type": "Shared",
"englishSpeakingDriver": true,
"distanceKm": 350,
"travelTimeMinutes": 235,
"pickUp": {
"lat": 50.12,
"lon": 14.27,
"time": "2022-12-05T19:00:00Z",
"interval": {
"earliest": "2022-12-05T19:00:00Z",
"latest": "2022-12-05T19:10:00Z"
},
"timezone": "Europe/Prague",
"description": "In front of the hotel Europa",
"address": "Evropska 1540/41, Prague, Czechia",
"meetAndGreet": false,
"state": "adjusted",
"immutable": true
},
"dropOff": {
"lat": 48.21,
"lon": 16.36,
"time": "2022-12-05T22:55:00Z",
"interval": {
"earliest": "2022-12-05T22:40:00Z",
"latest": "2022-12-05T22:55:00Z"
},
"timezone": "Europe/Vienna",
"description": "Next to the railway station",
"address": "Bahnhofplatz, 1010 Wien, Austria",
"state": "adjusted",
"immutable": true
},
"pricing": {
"pricePerPassenger": 180,
"totalPrice": 360
},
"vehicle": {
"type": "Shuttle",
"maxPassengers": 10,
"description": "Shuttle comparable to a Mercedes-Benz Vito, up to 10 passengers with luggage.",
"modelDescription": "Mercedes-Benz Vito or similar",
"image": "https://daytrip.imgix.net/site/shuttle.png"
},
"luggage": {
"maxCarryonsPerPerson": 1,
"maxSuitcasesPerPerson": 1,
"maxTotalCarryons": 2,
"maxTotalSuitcases": 2
},
"seatsAvailable": 8,
"availableChildSeatTypes": [
{
"childSeatType": "RearFacing",
"description": "Rear-facing infant seat",
"ageFrom": 0,
"ageTo": 1,
"weightInPoundsFrom": 0,
"weightInPoundsTo": 26,
"weightInKilosFrom": 0,
"weightInKilosTo": 10
},
{
"childSeatType": "ForwardFacing",
"description": "Forward-facing w/harness",
"ageFrom": 1,
"ageTo": 4,
"weightInPoundsFrom": 18,
"weightInPoundsTo": 36,
"weightInKilosFrom": 8,
"weightInKilosTo": 16
},
{
"childSeatType": "BoosterSeat",
"description": "Booster seat with high back",
"ageFrom": 4,
"ageTo": 6,
"weightInPoundsFrom": 30,
"weightInPoundsTo": 50,
"weightInKilosFrom": 14,
"weightInKilosTo": 23
},
{
"childSeatType": "Booster",
"description": "Backless booster",
"ageFrom": 6,
"ageTo": 12,
"weightInPoundsFrom": 44,
"weightInPoundsTo": 72,
"weightInKilosFrom": 20,
"weightInKilosTo": 33
}
],
"possibleStops": [],
"cancellationPolicy": "Flexible",
"expiresAt": "2022-12-04T15:00:00Z"
},
{
"id": "4b137906-008a-49cf-b248-e3827b3a3175",
"type": "Shared",
"englishSpeakingDriver": false,
"distanceKm": 350,
"travelTimeMinutes": 235,
"pickUp": {
"lat": 50.12,
"lon": 14.27,
"time": "2022-12-05T20:00:00Z",
"interval": {
"earliest": "2022-12-05T20:00:00Z",
"latest": "2022-12-05T20:10:00Z"
},
"timezone": "Europe/Prague",
"description": "In front of the hotel Europa",
"address": "Evropska 1540/41, Prague, Czechia",
"meetAndGreet": false,
"state": "adjusted",
"immutable": true
},
"dropOff": {
"lat": 48.21,
"lon": 16.36,
"time": "2022-12-05T23:55:00Z",
"interval": {
"earliest": "2022-12-05T23:40:00Z",
"latest": "2022-12-05T23:55:00Z"
},
"timezone": "Europe/Vienna",
"description": "Next to the railway station",
"address": "Bahnhofplatz, 1010 Wien, Austria",
"state": "adjusted",
"immutable": true
},
"pricing": {
"pricePerPassenger": 190,
"totalPrice": 380
},
"vehicle": {
"type": "Shuttle",
"maxPassengers": 10,
"description": "Shuttle comparable to a Mercedes-Benz Vito, up to 10 passengers with luggage.",
"modelDescription": "Mercedes-Benz Vito or similar",
"image": "https://daytrip.imgix.net/site/shuttle.png"
},
"luggage": {
"maxCarryonsPerPerson": 1,
"maxSuitcasesPerPerson": 1,
"maxTotalCarryons": 2,
"maxTotalSuitcases": 2
},
"seatsAvailable": 5,
"availableChildSeatTypes": [
{
"childSeatType": "RearFacing",
"description": "Rear-facing infant seat",
"ageFrom": 0,
"ageTo": 1,
"weightInPoundsFrom": 0,
"weightInPoundsTo": 26,
"weightInKilosFrom": 0,
"weightInKilosTo": 10
},
{
"childSeatType": "ForwardFacing",
"description": "Forward-facing w/harness",
"ageFrom": 1,
"ageTo": 4,
"weightInPoundsFrom": 18,
"weightInPoundsTo": 36,
"weightInKilosFrom": 8,
"weightInKilosTo": 16
},
{
"childSeatType": "BoosterSeat",
"description": "Booster seat with high back",
"ageFrom": 4,
"ageTo": 6,
"weightInPoundsFrom": 30,
"weightInPoundsTo": 50,
"weightInKilosFrom": 14,
"weightInKilosTo": 23
},
{
"childSeatType": "Booster",
"description": "Backless booster",
"ageFrom": 6,
"ageTo": 12,
"weightInPoundsFrom": 44,
"weightInPoundsTo": 72,
"weightInKilosFrom": 20,
"weightInKilosTo": 33
}
],
"possibleStops": [],
"includedStops": [],
"cancellationPolicy": "Flexible",
"expiresAt": "2022-12-04T15:00:00Z"
}
]
}
To search for a private trip from Dubrovnik to Venice for 10 passengers, with multiple vehicle options:
curl "https://papi.staging.mydaytrip.net/partners/v3/trip/search?originLatitude=42.639515&originLongitude=18.108064&destinationLatitude=45.434143&destinationLongitude=12.333497&departureTime=1766227088&includeShared=false&includeStops=false&passengersCount=10&includeMultipleVehicles=true" \
-H "x-api-key: your_api_key"
The above call returns a JSON structured like this:
{
"searchId": "f41dc34f-5218-46b1-8e46-1de8ccc5f5c3",
"expiresAt": "2025-05-27T05:53:46Z",
"passengersCount": 10,
"currency": "EUR",
"options": [
{
"id": "68646974-023a-4f9c-8358-869c7ab8db3d",
"type": "Private",
"englishSpeakingDriver": true,
"distanceKm": 833,
"travelTimeMinutes": 536,
"pickUp": {
"lat": 42.6420418,
"lon": 18.11293,
"time": "2025-12-20T10:38:08Z",
"timezone": "Europe/Zagreb",
"description": "Ploce Gate, Ul. Frana Supila 2",
"address": "Vrata od Ploča, Ul. Vrata od Ploča, 20000, Dubrovnik, Croatia",
"image": "https://daytrip.imgix.net/meeting-point-3.png",
"meetAndGreet": false,
"state": "adjusted",
"adjustmentReason": "restricted_area",
"immutable": true
},
"dropOff": {
"lat": 45.43731978047655,
"lon": 12.3191409718277,
"description": "Piazzale Roma",
"address": "Piazzale Roma, Venice, Metropolitan City of Venice, Italy",
"image": "https://daytrip.imgix.net/meeting-point-4.png",
"state": "adjusted",
"adjustmentReason": "restricted_area",
"immutable": true
},
"pricing": {
"totalPrice": 2131
},
"vehicles": [
{
"type": "Van",
"maxPassengers": 7,
"description": "Van comparable to a VW Transporter, up to 7 passengers with luggage.",
"modelDescription": "VW Transporter or similar",
"image": "https://daytrip.imgix.net/site/van-vw.png"
},
{
"type": "Sedan",
"maxPassengers": 3,
"description": "Sedan comparable to a Volkswagen Passat, up to 3 passengers with luggage.",
"modelDescription": "VW Passat or similar",
"image": "https://daytrip.imgix.net/site/sedan.png"
}
],
"luggage": {
"maxTotalCarryons": 10,
"maxTotalSuitcases": 10
},
"possibleStops": [],
"includedStops": [],
"availableChildSeatTypes": [
{
"childSeatType": "RearFacing",
"description": "Rear-facing infant seat",
"ageFrom": 0,
"ageTo": 1,
"weightInPoundsFrom": 0,
"weightInPoundsTo": 26,
"weightInKilosFrom": 0,
"weightInKilosTo": 10
},
{
"childSeatType": "ForwardFacing",
"description": "Forward-facing w/harness",
"ageFrom": 1,
"ageTo": 4,
"weightInPoundsFrom": 18,
"weightInPoundsTo": 36,
"weightInKilosFrom": 8,
"weightInKilosTo": 16
},
{
"childSeatType": "BoosterSeat",
"description": "Booster seat with high back",
"ageFrom": 4,
"ageTo": 6,
"weightInPoundsFrom": 30,
"weightInPoundsTo": 50,
"weightInKilosFrom": 14,
"weightInKilosTo": 23
},
{
"childSeatType": "Booster",
"description": "Backless booster",
"ageFrom": 6,
"ageTo": 12,
"weightInPoundsFrom": 44,
"weightInPoundsTo": 72,
"weightInKilosFrom": 20,
"weightInKilosTo": 33
}
],
"expiresAt": "2025-05-27T05:53:46Z"
}
]
}
Endpoint Details
GET /partners/v3/trip/search
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| originType | string | Specifies whether the origin is provided as geo-coordinates or as an airport code. Possible values: coordinates, iata. If omitted, the default value is coordinates. |
| originLatitude | number | Origin latitude in degrees. Required if originType is set to coordinates or omitted. |
| originLongitude | number | Origin longitude in degrees. Required if originType is set to coordinates or omitted. |
| origin | string | IATA airport code of the origin airport. Required if originType is set to iata. |
| destinationType | string | Specifies whether the destination is provided as geo-coordinates or as an airport code. Possible values: coordinates, iata. If omitted, the default value is coordinates. |
| destinationLatitude | number | Destination latitude in degrees. Required if destinationType is set to coordinates or omitted. |
| destinationLongitude | number | Destination longitude in degrees. Required if destinationType is set to coordinates or omitted. |
| destination | string | IATA airport code of the destination airport. Required if destinationType is set to iata. |
| departureTime | integer | Departure time as a UNIX epoch timestamp in seconds. This timestamp should be calculated from the local departure time and converted to UTC. It can be omitted, if departureTimeLocal is provided. |
| departureTimeLocal | integer | Departure time as a UNIX epoch timestamp in seconds. This parameter can be used, when the origin timezone is unknown and conversion to UTC cannot be done. In this case the departure time can be sent as a local time converted to the Unix epoch. This parameter is not required, when departureTime is provided. |
| passengersCount | integer | Total number of passengers to transport (adults and children). Must be between 1 and 7 if includeMultipleVehicles is set to false or not provided. In case that includeMultipleVehicles is set to true this parameter must be between 1 and 99. |
| childrenCount | integer | Optional. Specifies the number of children in the group. Required for shared trip options. |
| includeStops | boolean | Optional. Defaults to true. When set to false, no stops will be included in the trip options. |
| includeShared | boolean | Optional. Defaults to false. When set to true, shared trip options will be included. |
| includeNonEnglishSpeaking | boolean | Optional. Defaults to true. When set to false, no trip options with non-English-speaking drivers will be included. |
| includeMeetingPositions | boolean | Deprecated. Optional. Ignored — meeting positions are always included in responses when applicable. |
| includeMultipleVehicles | boolean | Optional. Defaults to false. When set to true, if single vehicle options cannot be found we will try to provide trip options with multiple vehicles. |
Response body
| Property | Type | Description |
|---|---|---|
| searchId | string | Unique id of your search query. |
| expiresAt | string | Obsolete! Please use expiresAt property on TripOption object. |
| passengersCount | integer | The count of passengers this search query was for. |
| currency | string | Currency used for all prices in this response. |
| options | list of TripOption | List of options for this trip. |
Error status codes
| Status code | Description |
|---|---|
| 400 | Invalid request - missing mandatory query parameter, parameter has wrong type or wrong passenger count. |
| 401 | API key missing or invalid. |
Trip Customize
This endpoint is used to customize a trip option returned by the Search endpoint. The result is a new trip option with a new id that can be booked or customized again. The format of the response body is the same as for the Search endpoint. Currently the only supported customization operation is selection of stops for private trips. Selected stops will appear in includedStops of the returned option. In case of repeated calls, previously selected stops will be replaced, so if you selected one stop and want to change it to two stops, you need to send both stops in selectedStops. totalPrice and travelTimeMinutes will be automatically updated to reflect the selected stops.
To add the Mikulov stop to the sedan vehicle type private trip option from the Search endpoint example above, use the following call:
curl -d '{
"optionId": "1d32109f-c2e2-44fe-b2cf-461ef3730541",
"selectedStops": ["4ee58c0c-4e56-46ef-bd22-406a1bc60e1c"]
}' \
-H "Content-Type: application/json" \
-H "x-api-key: your_api_key" \
-X POST https://papi.staging.mydaytrip.net/partners/v3/trip/search/customize
The above call returns a JSON structured like this:
{
"searchId": "f0e34a1b-2b3d-4747-b426-292633b615b4",
"expiresAt": "2022-12-04T18:00:00Z",
"passengersCount": 3,
"currency": "EUR",
"options": [
{
"id": "519314e3-cd92-41e0-85b6-c652c345e9d0",
"type": "Private",
"englishSpeakingDriver": true,
"distanceKm": 334,
"travelTimeMinutes": 268,
"pickUp": {
"lat": 50.1,
"lon": 14.25,
"time": "2022-12-05T18:00:00Z",
"timezone": "Europe/Prague",
"meetAndGreet": true,
"state": "original",
"immutable": false
},
"dropOff": {
"lat": 48.2,
"lon": 16.37,
"state": "original",
"immutable": false
},
"pricing": {
"totalPrice": 288
},
"vehicle": {
"type": "Sedan",
"maxPassengers": 3,
"description": "Sedan comparable to a Volkswagen Passat, up to 3 passengers with luggage.",
"modelDescription": "VW Passat or similar",
"image": "https://daytrip.imgix.net/site/sedan.png"
},
"luggage": {
"maxTotalCarryons": 3,
"maxTotalSuitcases": 3
},
"availableChildSeatTypes": [
{
"childSeatType": "RearFacing",
"description": "Rear-facing infant seat",
"ageFrom": 0,
"ageTo": 1,
"weightInPoundsFrom": 0,
"weightInPoundsTo": 26,
"weightInKilosFrom": 0,
"weightInKilosTo": 10
},
{
"childSeatType": "ForwardFacing",
"description": "Forward-facing w/harness",
"ageFrom": 1,
"ageTo": 4,
"weightInPoundsFrom": 18,
"weightInPoundsTo": 36,
"weightInKilosFrom": 8,
"weightInKilosTo": 16
},
{
"childSeatType": "BoosterSeat",
"description": "Booster seat with high back",
"ageFrom": 4,
"ageTo": 6,
"weightInPoundsFrom": 30,
"weightInPoundsTo": 50,
"weightInKilosFrom": 14,
"weightInKilosTo": 23
},
{
"childSeatType": "Booster",
"description": "Backless booster",
"ageFrom": 6,
"ageTo": 12,
"weightInPoundsFrom": 44,
"weightInPoundsTo": 72,
"weightInKilosFrom": 20,
"weightInKilosTo": 33
}
],
"includedStops": [
{
"id": "4ee58c0c-4e56-46ef-bd22-406a1bc60e1c",
"price": 28,
"name": "Mikulov",
"image": "https://daytrip.imgix.net/510.jpg",
"title": "The Heart of Czech Wine Country",
"perex": "A town with a history as deep and flavourful as its wine, Mikulov provides a perfect combination of relaxation and exploration.",
"description": "Often favoured by visitors with a more active approach to life, Mikulov has much to offer. Surrounded by idyllic countryside, crisscrossed by bicycle paths and marked hiking trails, and the nearby Nové Mlýny lakes, there is something for everyone to enjoy. After all that fresh air, a glass of wine will be more than welcome, and fortunately, Mikulov is the centre for Czech wine making. Due to a high concentration of limestone in the local soil, wine from this region has a unique character and distinct taste. If you like your wine with a side-serving of history, Mikulov Castle dates from the 1730s, and the Dietrichstein Tomb is the final resting place of a Bohemian noble family. Mikulov is also significant for its strong Jewish history. In the early 1800s Mikulov's Jewish Quarter was the largest in Moravia with half the town's inhabitants being of Jewish faith.",
"durationInMinutes": 60,
"order": 2,
"timezone": "Europe/Prague",
"country": {
"englishName": "Czech Republic"
}
}
],
"possibleStops": [
{
"id": "d280ce2a-6224-4d95-af17-a250f81b97dd",
"price": 31,
"name": "Lednice Chateau and Park",
"image": "https://daytrip.imgix.net/lednice-chateau-and-park4.jpg",
"title": "Vacation like a King",
"perex": "This UNESCO-listed chateau and sprawling park was the Lichtenstein's holiday home - exactly the kind of extravagance you'd expect from a dynasty with their own country. ",
"description": "The Liechtensteins really came into the money with the fortunes seized from Czech noblemen after their victory at the Battle of White Mountain in 1620, and Lednice was one of the presents they bought themselves. In the mid-19th century the baroque manor was given a complete makeover in the 'Windsor Gothic' style, leaving it as we see it today: a shameless flaunting of fabulous wealth, a slap in the face to anyone foolish enough to think that the French Revolution had ended high-living in Europe. The surrounding English landscape park, the largest in the country, is an incomparable swath of green, sprinkled with Romantic follies. There's also a monumental greenhouse open all year round, overflowing with exotic growths gathered by an army of botanists across the Americas. The greenhouse's exoticism is echoed by the charming minaret, constructed at the turn of the 18th century, bringing a whiff of Morocco to Moravia.\nFor more info: www.zamek-lednice.com",
"durationInMinutes": 60,
"order": 1,
"timezone": "Europe/Prague",
"country": {
"englishName": "Czech Republic"
}
}
]
}
]
}
Endpoint Details
POST /partners/v3/trip/search/customize
Request body
| Property | Type | Description |
|---|---|---|
| optionId | string | Id of the option you want to customize. Taken from /search or /customize endpoint response. |
| selectedStops | list of string | List of ids of stops to include in the trip. Will replace currently included stops. |
Response body
Same format as for the Search endpoint
Error status codes
| Status code | Description |
|---|---|
| 400 | Invalid request - missing mandatory property, property has a wrong type or not a valid json. |
| 401 | API key missing or invalid. |
| 403 | Forbidden request - trying to customize a trip option owned by someone else. |
| 404 | Trip option not found or expired. Stop not found. |
| 409 | Trip option has already been booked. |
Trip Book
This endpoint is used to book a trip option. Any trip option from Search or Customize endpoint response can be booked if the search results have not expired yet (see expiresAt property). You need to send id of the chosen option and passenger details to this endpoint. The result is a booking id that can be used to cancel the booking if not too close to departure.
To book the customized trip option with stops from the example above or to book a trip option from the original Search endpoint response for two adults and one child with a booster seat, use the following call:
curl -d '{
"optionId": "f0e34a1b-2b3d-4747-b426-292633b615b4",
"pickUpAddressNote": "Havel airport",
"dropOffAddressNote": "Vienna central square",
"customerNote": "We will stand next to the entrance",
"flightNumber": "FR008",
"passengerDetails": [
{
"type": "Lead",
"firstName": "John",
"lastName": "Doe",
"phone": "+41555555555",
"email": "client-email@example.com",
"over18": true
},
{ "type": "Adult" },
{
"type": "Child",
"childSeatType": "Booster"
}
]
}' \
-H "Content-Type: application/json" \
-H "x-api-key: your_api_key" \
-X POST https://papi.staging.mydaytrip.net/partners/v3/trip/book
Example response without meeting and dropoff positions:
{
"bookingId": "cb102778-a3d7-426e-8d18-6bd6b296f283",
"bookingReference": "CB1027",
"departureTimeUtc": "2022-12-05T18:00:00Z",
"originTimezone": "Europe/Prague",
"meetAndGreet": true,
"trip": {
"id": "f0e34a1b-2b3d-4747-b426-292633b615b4",
"type": "Private",
"englishSpeakingDriver": true,
"distanceKm": 334,
"travelTimeMinutes": 268,
"pickUp": {
"lat": 50.1,
"lon": 14.25,
"time": "2022-12-05T18:00:00Z",
"timezone": "Europe/Prague",
"meetAndGreet": true,
"state": "original",
"immutable": false
},
"dropOff": {
"lat": 48.2,
"lon": 16.37,
"state": "original",
"immutable": false
},
"pricing": {
"totalPrice": 288
},
"vehicle": {
"type": "Sedan",
"maxPassengers": 3,
"description": "Sedan comparable to a Volkswagen Passat, up to 3 passengers with luggage.",
"modelDescription": "VW Passat or similar",
"image": "https://daytrip.imgix.net/site/sedan.png"
},
"luggage": {
"maxTotalCarryons": 3,
"maxTotalSuitcases": 3
},
"availableChildSeatTypes": [
{
"childSeatType": "RearFacing",
"description": "Rear-facing infant seat",
"ageFrom": 0,
"ageTo": 1,
"weightInPoundsFrom": 0,
"weightInPoundsTo": 26,
"weightInKilosFrom": 0,
"weightInKilosTo": 10
},
{
"childSeatType": "ForwardFacing",
"description": "Forward-facing w/harness",
"ageFrom": 1,
"ageTo": 4,
"weightInPoundsFrom": 18,
"weightInPoundsTo": 36,
"weightInKilosFrom": 8,
"weightInKilosTo": 16
},
{
"childSeatType": "BoosterSeat",
"description": "Booster seat with high back",
"ageFrom": 4,
"ageTo": 6,
"weightInPoundsFrom": 30,
"weightInPoundsTo": 50,
"weightInKilosFrom": 14,
"weightInKilosTo": 23
},
{
"childSeatType": "Booster",
"description": "Backless booster",
"ageFrom": 6,
"ageTo": 12,
"weightInPoundsFrom": 44,
"weightInPoundsTo": 72,
"weightInKilosFrom": 20,
"weightInKilosTo": 33
}
],
"includedStops": [],
"possibleStops": []
}
}
Example response with meeting and dropoff positions:
{
"bookingId": "72r537a9-b846-4b46-b638-de8121337229",
"bookingReference": "72R537",
"departureTimeUtc": "2022-12-05T18:00:00Z",
"originTimezone": "Europe/Zurich",
"meetAndGreet": false,
"meetingPosition": {
"lat": 46.067648,
"lon": 7.775185,
"description": "The train station in Tasch",
"address": "3929 Täsch, Switzerland",
"instructions": "As vehicle entry into Zermatt is heavily restricted, your driver will meet you nearby at the train station in Tasch, which can be reached by transit from Zermatt within about 10 minutes. Your driver will be waiting at the taxi stand just outside the entrance to the train station.",
"image": "https://daytrip.imgix.net/meeting-point-5.png"
},
"dropOffPosition": {
"lat": 45.4374041,
"lon": 12.3190675,
"description": "Piazzale Roma",
"address": "Piazzale Roma, Venice, Metropolitan City of Venice, Italy",
"instructions": "Venice’s historic center (the islands) is not accessible by car. Our partner driver will drop you off at Piazzale Roma.",
"image": "https://daytrip.imgix.net/meeting-point-4.png"
},
"trip": {
"id": "519314e3-cd92-41e0-85b6-c652c345e9d0",
"type": "Private",
"englishSpeakingDriver": false,
"distanceKm": 334,
"travelTimeMinutes": 268,
"pickUp": {
"lat": 46.067648,
"lon": 7.775185,
"time": "2022-12-05T18:00:00Z",
"timezone": "Europe/Zurich",
"description": "The train station in Tasch",
"address": "3929 Täsch, Switzerland",
"image": "https://daytrip.imgix.net/meeting-point-5.png",
"meetAndGreet": false,
"state": "adjusted",
"adjustmentReason": "restricted_area",
"immutable": true
},
"dropOff": {
"lat": 45.4374041,
"lon": 12.3190675,
"description": "Piazzale Roma",
"address": "Piazzale Roma, Venice, Metropolitan City of Venice, Italy",
"image": "https://daytrip.imgix.net/meeting-point-4.png",
"state": "adjusted",
"adjustmentReason": "restricted_area",
"immutable": true
},
"pricing": {
"totalPrice": 288
},
"vehicle": {
"type": "Sedan",
"maxPassengers": 3,
"description": "Sedan comparable to a Volkswagen Passat, up to 3 passengers with luggage.",
"image": "https://daytrip.imgix.net/site/sedan.png"
},
"luggage": {
"maxTotalCarryons": 3,
"maxTotalSuitcases": 3
},
"availableChildSeatTypes": [
{
"childSeatType": "RearFacing",
"description": "Rear-facing infant seat",
"ageFrom": 0,
"ageTo": 1,
"weightInPoundsFrom": 0,
"weightInPoundsTo": 26,
"weightInKilosFrom": 0,
"weightInKilosTo": 10
},
{
"childSeatType": "ForwardFacing",
"description": "Forward-facing w/harness",
"ageFrom": 1,
"ageTo": 4,
"weightInPoundsFrom": 18,
"weightInPoundsTo": 36,
"weightInKilosFrom": 8,
"weightInKilosTo": 16
},
{
"childSeatType": "BoosterSeat",
"description": "Booster seat with high back",
"ageFrom": 4,
"ageTo": 6,
"weightInPoundsFrom": 30,
"weightInPoundsTo": 50,
"weightInKilosFrom": 14,
"weightInKilosTo": 23
},
{
"childSeatType": "Booster",
"description": "Backless booster",
"ageFrom": 6,
"ageTo": 12,
"weightInPoundsFrom": 44,
"weightInPoundsTo": 72,
"weightInKilosFrom": 20,
"weightInKilosTo": 33
}
],
"includedStops": [],
"possibleStops": []
}
}
Endpoint Details
POST /partners/v3/trip/book
Request body
| Property | Type | Description |
|---|---|---|
| optionId | string | Id of the option you want to book. Taken from /search or /customize endpoint response. |
| departureTime | integer | Optional. Departure time as a UNIX epoch timestamp in seconds to use instead of the departureTime provided to the /search. You can only move departure time less than 24 hours into the past or into the future compared to the original departureTime, otherwise the booking will be rejected (403 HTTP status code). Also if the new price after changing the departure time would be different, booking will also get rejected. Such price change should be extremely rare but your integration should be ready for it if you are sending different departureTime. Note that UNIX timestamps are UTC so you need to convert from local time to UTC when calculating it. Change of the departure time is applicable only for the private trip. |
| departureTimeLocal | integer | Optional. The same as departureTime but the local departure time is not converted to UTC. If departureTime is specified, this parameter cannot be sent, and vice versa. |
| pickUpAddressNote | string | Pickup address or a note describing the pickup point. Optional, but should be provided if available at the booking time; otherwise, it should be provided via the /update endpoint. Applicable only for the private trip. It will be ignored if the selected trip option already has a predefined meeting position that cannot be changed (immutable), i.e. the meeting position outside of a restricted area. |
| dropOffAddressNote | string | Dropoff address or a note describing the dropoff point. Optional, but should be provided if available at the booking time; otherwise, it should be provided via the /update endpoint. Applicable only for the private trip. It will be ignored if the selected trip option already has a predefined meeting position that cannot be changed (immutable), i.e. the meeting position outside of a restricted area. |
| customerNote | string | Optional note for the driver not related to pickup or dropoff. Applicable only for the private trip. |
| flightNumber | string | Optional flight number in case this is an airport pickup. Applicable only for the private trip. |
| passengerDetails | list of PassengerDetail | List of passengers that will go on this trip. For trips with "Private" type the number of passengers must be below or equal to maxPassengers of the vehicle in the trip option. For trips with "Shared" type the number of passengers must match the passengersCount query parameter from the Search endpoint. There must always be exactly one passenger of type "Lead" with contact details filled and adulthood confirmed via over18: true (or the deprecated birthday). For passenger of type "Child" you must specify a child seat of proper type offered in the trip option's availableChildSeatTypes. For older children that do not need any child seat use Adult passenger type. |
| externalId | string | Optional. You can send us the id of the booking in your system to help with communication when our support team needs to identify a booking and you are not able to provide our own bookingReference. |
Response body
| Property | Type | Description |
|---|---|---|
| bookingId | string | Id of the created booking. Can be used to retrieve details about the booking or to cancel it. |
| bookingReference | string | Short booking reference that can be shared with the customer in order for him to be able to contact Daytrip customer support easily. |
| departureTimeUtc | string | Date and time of departure in UTC. |
| originTimezone | string | IANA timezone for the origin location. Can be used to convert departureTimeUtc to local time. |
| meetAndGreet | boolean | Specifies if meet and greet is provided for the pickup of this booking. |
| meetingPosition | object - MeetingPosition | Information about the meeting position, important for unreachable places or when meet and greet is not provided. Optional. |
| dropOffPosition | object - DropOffPosition | Information about the dropoff position, important for unreachable places. Optional. |
| trip | object - TripOption | Trip option used to make the booking. |
Error status codes
| Status code | Description |
|---|---|
| 400 | Invalid request - missing mandatory property, property has wrong type, mismatch in passenger count, missing lead passenger, multiple lead passengers, lead passenger not confirmed as over 18 or not a valid json. |
| 401 | API key missing or invalid. |
| 403 | Forbidden request - trying to book a trip option owned by someone else. Departure too soon. Departure time change not allowed. |
| 404 | Trip option not found or expired. |
| 409 | Trip option has already been booked. Price changed, please make a new search. |
Trip Cancel
This endpoint is used to cancel a booked trip. For private trips only trips that have departure more than 24 hours in the future can be cancelled - this threshold is a subject to change. The shared trips can be cancelled at any time before departure, and compensated according to the selected cancellation policy.
To cancel a booked trip, use the following call:
curl -d '{ "bookingId": "cb102778-a3d7-426e-8d18-6bd6b296f283" }' \
-H "Content-Type: application/json" \
-H "x-api-key: your_api_key" \
-X POST https://papi.staging.mydaytrip.net/partners/v3/trip/cancel
Example response with the penalty amount for the cancellation:
{
"penalty": 0,
"currency": "EUR"
}
Endpoint Details
POST /partners/v3/trip/cancel
Request body
| Property | Type | Description |
|---|---|---|
| bookingId | string | Id of the booking to cancel. Taken from /book endpoint response. |
Response body
| Property | Type | Description |
|---|---|---|
| penalty | number | Amount of money that will be deducted from the refund. If the penalty is 0, the cancellation is free of charge. |
| currency | string | Currency of the penalty amount. |
Error status codes
| Status code | Description |
|---|---|
| 400 | Invalid request - bookingId missing or not a valid json. |
| 401 | API key missing or invalid. |
| 403 | Forbidden request - trying to cancel a booking owned by someone else or the departure is too soon. |
| 404 | Booking not found. |
| 409 | Booking has already been cancelled. |
Trip Details
This endpoint returns details of a booked trip. It provides the status of the booking, information about the trip option and the data that were provided when booking the trip.
There are two versions of the endpoint: /partners/v3/trip/details/boookingId and /partners/v3/trip/external/details/externalId. The second version can be used to retrieve trip details by the externalId you provided when creating the booking. The response of both versions of the endpoint is exactly the same.
To get details of a booked trip by
bookingId, use the following call:
curl https://papi.staging.mydaytrip.net/partners/v3/trip/details/bookingId \
-H "x-api-key: your_api_key"
Make sure to replace
bookingIdwith the real booking id.
To get details of a booked trip by
externalId, use the following call:
curl https://papi.staging.mydaytrip.net/partners/v3/trip/external/details/externalId \
-H "x-api-key: your_api_key"
Make sure to replace
externalIdwith the real external id.
Example response without meeting and dropoff positions:
{
"bookingId": "cb102786-f663-47d7-9635-7ef61a51bf29",
"bookingReference": "CB1027",
"status": "Confirmed",
"createdAt": "2022-12-05T18:00:00Z",
"passengersCount": 3,
"currency": "EUR",
"departureTimeUtc": "2022-12-05T18:00:00Z",
"originTimezone": "Europe/Prague",
"meetAndGreet": true,
"pickUpAddressNote": "Havel airport",
"dropOffAddressNote": "Vienna central square",
"customerNote": "We will stand next to the entrance",
"flightNumber": "FR008",
"passengerDetails": [
{
"type": "Lead",
"firstName": "John",
"lastName": "Doe",
"phone": "+41555555555",
"email": "client-email@example.com",
"birthday": 629424000,
"over18": true
},
{
"type": "Adult"
},
{
"type": "Child",
"childSeatType": "Booster"
}
],
"trip": {
"type": "Private",
"englishSpeakingDriver": true,
"distanceKm": 334,
"travelTimeMinutes": 268,
"pickUp": {
"lat": 50.1,
"lon": 14.25,
"time": "2022-12-05T18:00:00Z",
"timezone": "Europe/Prague",
"meetAndGreet": true,
"state": "original",
"immutable": false
},
"dropOff": {
"lat": 48.2,
"lon": 16.37,
"state": "original",
"immutable": false
},
"pricing": {
"totalPrice": 288
},
"vehicle": {
"type": "Sedan",
"maxPassengers": 3,
"description": "Sedan comparable to a Volkswagen Passat, up to 3 passengers with luggage.",
"modelDescription": "VW Passat or similar",
"image": "https://daytrip.imgix.net/site/sedan.png"
},
"luggage": {
"maxTotalCarryons": 3,
"maxTotalSuitcases": 3
},
"includedStops": [
{
"id": "4ee58c0c-4e56-46ef-bd22-406a1bc60e1c",
"price": 28,
"name": "Mikulov",
"image": "https://daytrip.imgix.net/510.jpg",
"title": "The Heart of Czech Wine Country",
"perex": "A town with a history as deep and flavourful as its wine, Mikulov provides a perfect combination of relaxation and exploration.",
"description": "Often favoured by visitors with a more active approach to life, Mikulov has much to offer. Surrounded by idyllic countryside, crisscrossed by bicycle paths and marked hiking trails, and the nearby Nové Mlýny lakes, there is something for everyone to enjoy. After all that fresh air, a glass of wine will be more than welcome, and fortunately, Mikulov is the centre for Czech wine making. Due to a high concentration of limestone in the local soil, wine from this region has a unique character and distinct taste. If you like your wine with a side-serving of history, Mikulov Castle dates from the 1730s, and the Dietrichstein Tomb is the final resting place of a Bohemian noble family. Mikulov is also significant for its strong Jewish history. In the early 1800s Mikulov's Jewish Quarter was the largest in Moravia with half the town's inhabitants being of Jewish faith.",
"durationInMinutes": 60,
"order": 2,
"timezone": "Europe/Prague",
"country": {
"englishName": "Czech Republic"
}
}
]
}
}
Example response with meeting and dropoff positions:
{
"bookingId": "72r53786-f663-47d7-9635-7ef61a51bf29",
"bookingReference": "72R537",
"status": "Confirmed",
"createdAt": "2022-12-05T18:00:00Z",
"passengersCount": 3,
"currency": "EUR",
"departureTimeUtc": "2022-12-05T18:00:00Z",
"originTimezone": "Europe/Zurich",
"meetAndGreet": false,
"meetingPosition": {
"lat": 46.067648,
"lon": 7.775185,
"description": "The train station in Tasch",
"address": "3929 Täsch, Switzerland",
"instructions": "As vehicle entry into Zermatt is heavily restricted, your driver will meet you nearby at the train station in Tasch, which can be reached by transit from Zermatt within about 10 minutes. Your driver will be waiting at the taxi stand just outside the entrance to the train station.",
"image": "https://daytrip.imgix.net/meeting-point-5.png"
},
"dropOffPosition": {
"lat": 45.4374041,
"lon": 12.3190675,
"description": "Piazzale Roma",
"address": "Piazzale Roma, Venice, Metropolitan City of Venice, Italy",
"instructions": "Venice’s historic center (the islands) is not accessible by car. Our partner driver will drop you off at Piazzale Roma.",
"image": "https://daytrip.imgix.net/management/venice.png?w=480&q=50"
},
"pickUpAddressNote": "Zermatt",
"dropOffAddressNote": "Venice",
"passengerDetails": [
{
"type": "Lead",
"firstName": "John",
"lastName": "Doe",
"phone": "+41555555555",
"email": "client-email@example.com",
"birthday": 629424000,
"over18": true
},
{
"type": "Adult"
},
{
"type": "Child",
"childSeatType": "Booster"
}
],
"trip": {
"type": "Private",
"englishSpeakingDriver": true,
"distanceKm": 334,
"travelTimeMinutes": 268,
"pickUp": {
"lat": 46.067648,
"lon": 7.775185,
"time": "2022-12-05T18:00:00Z",
"timezone": "Europe/Zurich",
"description": "The train station in Tasch",
"address": "3929 Täsch, Switzerland",
"image": "https://daytrip.imgix.net/meeting-point-5.png",
"meetAndGreet": false,
"state": "adjusted",
"adjustmentReason": "restricted_area",
"immutable": true
},
"dropOff": {
"lat": 45.4374041,
"lon": 12.3190675,
"description": "Piazzale Roma",
"address": "Piazzale Roma, Venice, Metropolitan City of Venice, Italy",
"image": "https://daytrip.imgix.net/meeting-point-4.png",
"state": "adjusted",
"adjustmentReason": "restricted_area",
"immutable": true
},
"pricing": {
"totalPrice": 1311
},
"vehicle": {
"type": "Sedan",
"maxPassengers": 3,
"description": "Sedan comparable to a Volkswagen Passat, up to 3 passengers with luggage.",
"modelDescription": "VW Passat or similar",
"image": "https://daytrip.imgix.net/site/sedan.png"
},
"luggage": {
"maxTotalCarryons": 3,
"maxTotalSuitcases": 3
},
"includedStops": []
}
}
Endpoint Details
GET /partners/v3/trip/details/bookingId
OR
/partners/v3/trip/external/details/externalId
Replace bookingId/externalId with the id of the booking you want to retrieve details for.
Response body
| Property | Type | Description |
|---|---|---|
| bookingId | string | Unique id of the booking. |
| bookingReference | string | Short booking reference that can be shared with the customer in order for him to be able to contact Daytrip customer support easily. |
| externalId | string | Optional. If you sent the externalId parameter to the /book endpoint it will be returned here. |
| status | string | Booking status. "Confirmed" or "Cancelled". |
| createdAt | string | UTC timestamp of when this booking was created. |
| cancelledAt | string | UTC timestamp of when this booking was cancelled. Optional. |
| passengersCount | integer | The count of passengers this booking is for. |
| currency | string | Currency used for all prices in this response. |
| departureTimeUtc | string | Date and time of departure in UTC. This reflects possible changes made by customer support. |
| originTimezone | string | IANA timezone for the origin location. Can be used to convert departureTimeUtc to local time. |
| meetAndGreet | boolean | Specifies if meet and greet is provided for the pickup of this booking. |
| meetingPosition | object - MeetingPosition | Information about the meeting position, important for unreachable places or when meet and greet is not provided. Optional. |
| dropOffPosition | object - DropOffPosition | Information about the dropoff position, important for unreachable places. Optional. |
| pickUpAddressNote | string | Pickup address or a note describing the pickup point. Optional, but should be provided it it was unknown at the booking time. Applicable only for the private trip. |
| dropOffAddressNote | string | Dropoff address or a note describing the dropoff point. Optional, but should be provided it it was unknown at the booking time. Applicable only for the private trip. |
| customerNote | string | Optional note for the driver not related to pickup or dropoff. |
| flightNumber | string | Optional flight number in case this is an airport pickup. |
| passengerDetails | list of PassengerDetail | List of passengers that will go on this trip. |
| trip | object - TripOption | Information about the trip. This does not reflect changes made after the booking was created. |
Error status codes
| Status code | Description |
|---|---|
| 401 | API key missing or invalid. |
| 403 | Forbidden request - trying to get details of a booking owned by someone else. |
| 404 | Booking not found. |
Trip Update
This endpoint is used to update minor details of an existing booking. If you want to change departure time or add/remove stops you need to cancel the booking and create it again as it can affect the price. The response of the endpoint are the details of the updated booking, in the same format as the /details endpoint.
To update passenger details and customer note of a booked trip, use the following call:
curl -d '{
"bookingId": "cb102778-a3d7-426e-8d18-6bd6b296f283",
"customerNote": "We will wait inside the Airport building",
"passengerDetails": [
{
"type": "Lead",
"firstName": "John",
"lastName": "Doe",
"phone": "+4166666666",
"email": "client-email@example.com",
"over18": true
},
{ "type": "Adult" },
{
"type": "Child",
"childSeatType": "BoosterSeat"
}
]
}' \
-H "Content-Type: application/json" \
-H "x-api-key: your_api_key" \
-X POST https://papi.staging.mydaytrip.net/partners/v3/trip/update
The above call returns a JSON structured like this:
{
"bookingId": "cb102786-f663-47d7-9635-7ef61a51bf29",
"bookingReference": "CB1027",
"status": "Confirmed",
"createdAt": "2022-12-05T18:00:00Z",
"passengersCount": 3,
"currency": "EUR",
"departureTimeUtc": "2022-12-05T18:00:00Z",
"originTimezone": "Europe/Prague",
"meetAndGreet": true,
"pickUpAddressNote": "Havel airport",
"dropOffAddressNote": "Vienna central square",
"customerNote": "We will wait inside the Airport building",
"flightNumber": "FR008",
"passengerDetails": [
{
"type": "Lead",
"firstName": "John",
"lastName": "Doe",
"phone": "+4166666666",
"email": "client-email@example.com",
"birthday": 629424000,
"over18": true
},
{
"type": "Adult"
},
{
"type": "Child",
"childSeatType": "BoosterSeat"
}
],
"trip": {
"type": "Private",
"englishSpeakingDriver": true,
"distanceKm": 334,
"travelTimeMinutes": 268,
"pickUp": {
"lat": 50.1,
"lon": 14.25,
"time": "2022-12-05T18:00:00Z",
"timezone": "Europe/Prague",
"meetAndGreet": true,
"state": "original",
"immutable": false
},
"dropOff": {
"lat": 48.2,
"lon": 16.37,
"state": "original",
"immutable": false
},
"pricing": {
"totalPrice": 288
},
"vehicle": {
"type": "Sedan",
"maxPassengers": 3,
"description": "Sedan comparable to a Volkswagen Passat, up to 3 passengers with luggage.",
"modelDescription": "VW Passat or similar",
"image": "https://daytrip.imgix.net/site/sedan.png"
},
"luggage": {
"maxTotalCarryons": 3,
"maxTotalSuitcases": 3
},
"includedStops": [
{
"id": "4ee58c0c-4e56-46ef-bd22-406a1bc60e1c",
"price": 28,
"name": "Mikulov",
"image": "https://daytrip.imgix.net/510.jpg",
"title": "The Heart of Czech Wine Country",
"perex": "A town with a history as deep and flavourful as its wine, Mikulov provides a perfect combination of relaxation and exploration.",
"description": "Often favoured by visitors with a more active approach to life, Mikulov has much to offer. Surrounded by idyllic countryside, crisscrossed by bicycle paths and marked hiking trails, and the nearby Nové Mlýny lakes, there is something for everyone to enjoy. After all that fresh air, a glass of wine will be more than welcome, and fortunately, Mikulov is the centre for Czech wine making. Due to a high concentration of limestone in the local soil, wine from this region has a unique character and distinct taste. If you like your wine with a side-serving of history, Mikulov Castle dates from the 1730s, and the Dietrichstein Tomb is the final resting place of a Bohemian noble family. Mikulov is also significant for its strong Jewish history. In the early 1800s Mikulov's Jewish Quarter was the largest in Moravia with half the town's inhabitants being of Jewish faith.",
"durationInMinutes": 60,
"order": 2,
"timezone": "Europe/Prague",
"country": {
"englishName": "Czech Republic"
}
}
]
}
}
Endpoint Details
POST /partners/v3/trip/update
Request body
All properties except bookingId are optional. When a property is not included in the request it won't be updated and it will keep it's previous value. If you want to remove a property value like customerNote then send an empty string "" as the value. If you want to make changes to any passenger you need to provide full passengerDetails array - it's not possible to send only details of the passenger you want to update.
Disclaimer: in the last 24 hours before the departure the /update endpoint will no longer accept updates. For updates in the last 24 hours please contact our customer support at daytrip@mydaytrip.com or call +44 20 3318 1119.
| Property | Type | Description |
|---|---|---|
| bookingId | string | Id of the booking to cancel. Taken from /book endpoint response. |
| pickUpAddressNote | string | Pickup address or a note describing the pickup point. Optional, but should be provided if it was not provided at the booking time. Applicable only for the private trip. It will be ignored if the selected trip option already has a predefined meeting position that cannot be changed (immutable), i.e. the meeting position outside of a restricted area. |
| dropOffAddressNote | string | Dropoff address or a note describing the dropoff point. Optional, but should be provided if it was not provided at the booking time. Applicable only for the private trip. It will be ignored if the selected trip option already has a predefined meeting position that cannot be changed (immutable), i.e. the meeting position outside of a restricted area. |
| customerNote | string | Optional note for the driver not related to pickup or dropoff. |
| flightNumber | string | Optional flight number in case this is an airport pickup. |
| passengerDetails | list of PassengerDetail | Optional. List of passengers that will go on this trip. For trips with "Private" type the number of passengers must be below or equal to maxPassengers of the vehicle in the trip option. For trips with "Shared" type the number of passengers must match the passengersCount query parameter from the Search endpoint. There must always be exactly one passenger of type "Lead" with contact details filled and adulthood confirmed via over18: true (or the deprecated birthday). For passenger of type "Child" you must specify a child seat of proper type offered in the trip option's availableChildSeatTypes. For older children that do not need any child seat use Adult passenger type. |
Response body
| Property | Type | Description |
|---|---|---|
| bookingId | string | Unique id of the booking. |
| bookingReference | string | Short booking reference that can be shared with the customer in order for him to be able to contact Daytrip customer support easily. |
| externalId | string | Optional. If you sent the externalId parameter to the /book endpoint it will be returned here. |
| status | string | Booking status. "Confirmed" or "Cancelled". |
| createdAt | string | UTC timestamp of when this booking was created. |
| cancelledAt | string | UTC timestamp of when this booking was cancelled. Optional. |
| passengersCount | integer | The count of passengers this booking is for. |
| currency | string | Currency used for all prices in this response. |
| departureTimeUtc | string | Date and time of departure in UTC. This reflects possible changes made by customer support. |
| originTimezone | string | IANA timezone for the origin location. Can be used to convert departureTimeUtc to local time. |
| meetAndGreet | boolean | Specifies if meet and greet is provided for the pickup of this booking. |
| meetingPosition | object - MeetingPosition | Information about the meeting position, important for unreachable places or when meet and greet is not provided. Optional. |
| dropOffPosition | object - DropOffPosition | Information about the dropoff position, important for unreachable places. Optional. |
| pickUpAddressNote | string | Pickup address or a note describing the pickup point. Optional. |
| dropOffAddressNote | string | Dropoff address or a note describing the dropoff point. Optional. |
| customerNote | string | Optional note for the driver not related to pickup or dropoff. |
| flightNumber | string | Optional flight number in case this is an airport pickup. |
| passengerDetails | list of PassengerDetail | List of passengers that will go on this trip. |
| trip | object - TripOption | Information about the trip. This does not reflect changes made after the booking was created. |
Error status codes
| Status code | Description |
|---|---|
| 400 | Invalid request - missing mandatory property, property has wrong type, mismatch in passenger count, missing lead passenger, multiple lead passengers, lead passenger not confirmed as over 18 or not a valid json. |
| 401 | API key missing or invalid. |
| 403 | Forbidden request - trying to update details of a booking owned by someone else or trying to update a trip in the last 24 hours before departure. |
| 404 | Booking not found. |
| 409 | Trying to update a cancelled booking. |
Trip Tracking
This endpoint allows you to retrieve the latest position of driver(s) assigned to the trip. Not every trip is guaranteed to have driver tracking. Use the /drivers endpoint to retrieve the details about the drivers and the vehicles. That information can be cached and does not need to be retrieved with every tracking request.
To get driver position(s) of a trip currently in progress, use the following call:
curl https://papi.staging.mydaytrip.net/partners/v3/trip/tracking/bookingId \
-H "x-api-key: your_api_key"
Make sure to replace
bookingIdwith the real booking id.
Example response for a trip served by one driver:
{
"driverPositions": [
{
"timestamp": "2023-12-04T18:00:00Z",
"driverId": "4381b73d-be1d-4d7d-bf7c-cdde5292c1b9",
"position": {
"lat": 50.09298565485293,
"lon": 14.453347220812443
}
}
]
}
Example response for a trip where tracking did not start yet:
{
"driverPositions": []
}
Example response for a trip served by two drivers:
{
"driverPositions": [
{
"timestamp": "2023-12-04T18:00:00Z",
"driverId": "4381b73d-be1d-4d7d-bf7c-cdde5292c1b9",
"position": {
"lat": 50.09298565485293,
"lon": 14.453347220812443
}
},
{
"timestamp": "2023-12-04T18:01:00Z",
"driverId": "52443e97-dd86-477a-927a-8fc9fa786797",
"position": {
"lat": 50.08213692331847,
"lon": 14.433944045117011
}
}
]
}
Endpoint Details
GET /partners/v3/trip/tracking/bookingId
Replace bookingId with the id of the booking you want to track.
Response body
| Property | Type | Description |
|---|---|---|
| driverPositions | list of DriverPosition | List of latest driver positions for this trip. |
Error status codes
| Status code | Description |
|---|---|
| 401 | API key missing or invalid. |
| 403 | Forbidden request - trying to track a booking owned by someone else. |
| 404 | Booking not found. |
Trip Drivers
This endpoint allows you to retrieve the information about driver(s) and vehicle(s) currently assigned to the trip. The assigned driver might change so it is recommended to pass this information to the customer only few days before the trip and give him an update if the response of this endpoint changes. The driverId returned by this endpoint is the same as the driverId returned by the /tracking endpoint and can be used to identify which driver is at which position in case of trips with multiple drivers.
Proposed frequency of calling this endpoint depending on the time before the departure time:
- the first check is ideal to do 48 hours before the departure;
- in the period 48-24 hours before the departure, it is recommended to check the assigned drivers every 4 hours;
- in the last 24 hours before the departure, it is recommended to check the assigned drivers every hour.
To get drivers currently assigned to a trip
curl https://papi.staging.mydaytrip.net/partners/v3/trip/drivers/bookingId \
-H "x-api-key: your_api_key"
Make sure to replace
bookingIdwith the real booking id.
Example response for a trip served by one driver:
{
"assignedDrivers": [
{
"driverId": "4381b73d-be1d-4d7d-bf7c-cdde5292c1b9",
"name": "John Doe",
"phoneNumber": "+1 628 201 9501",
"profilePhoto": "link to image of driver's profile photo",
"vehicle": {
"title": "Mercedes-Benz E-class",
"color": "Black",
"licensePlate": "XXXXXX"
}
}
]
}
Example response for a trip that doesn't have any assigned driver yet:
{
"assignedDrivers": []
}
Example response for a trip served by two drivers:
{
"assignedDrivers": [
{
"driverId": "4381b73d-be1d-4d7d-bf7c-cdde5292c1b9",
"name": "John Doe",
"phoneNumber": "+1 628 201 9501",
"profilePhoto": "link to driver's profile photo image",
"vehicle": {
"title": "Mercedes-Benz E-class",
"color": "Black",
"licensePlate": "XXXXXX"
}
},
{
"driverId": "52443e97-dd86-477a-927a-8fc9fa786797",
"name": "Jack Smith",
"phoneNumber": "+1 628 201 9501",
"vehicle": {
"title": "BMW 5 Series"
}
}
]
}
Endpoint Details
GET /partners/v3/trip/drivers/bookingId
Replace bookingId with the id of the booking you want to retrieve drivers and vehicles for.
Response body
| Property | Type | Description |
|---|---|---|
| assignedDrivers | list of Driver | List of drivers currently assigned to this trip. |
Error status codes
| Status code | Description |
|---|---|
| 401 | API key missing or invalid. |
| 403 | Forbidden request - trying to retrieve drivers for a booking owned by someone else. |
| 404 | Booking not found. |
Trip API Data Types
Below is a documentation of all object entities returned by the Daytrip API endpoints.
TripOption
| Property | Type | Description |
|---|---|---|
| id | string | Unique id of the trip option. Used to customize or book this option. |
| type | string | Type of this option. "Private" or "Shared" (predefined shuttle trips). |
| englishSpeakingDriver | boolean | Specifies if this option includes an English speaking driver. |
| distanceKm | number | Length of the trip. |
| travelTimeMinutes | number | Expected duration of the trip in minutes. |
| pickUp | object - Location | Details about the pickup point. |
| dropOff | object - Location | Details about the dropoff point. |
| pricing | object - Pricing | Details about the pricing. |
| vehicle | object - Vehicle | Details about the vehicle. Defined only if includeMultipleVehicles set to false or not defined. |
| vehicles | list of Vehicle | Details about vehicles. Defined only if includeMultipleVehicles set to true. |
| luggage | object - Luggage | Details about the luggage. |
| seatsAvailable | integer | Number of available seats in the shared shuttle. Optional. |
| availableChildSeatTypes | list of ChildSeatType | List of available child seat types for this trip. |
| possibleStops | list of Stop | Stops that can be added to this trip option. |
| includedStops | list of Stop | Stops that are already included in this option. |
| cancellationPolicy | one of CancellationPolicyType | Cancellation policy for this trip option. Optional. Populated only for shared trips. |
| expiresAt | string | UTC timestamp of when this offer expires. After this time it is no longer possible to book it, you need to make a new search. |
Location
| Property | Type | Description |
|---|---|---|
| lat | number | Latitude in degrees. |
| lon | number | Longitude in degrees. |
| time | string | UTC timestamp of the departure or arrival time. Optional. For pickup only in case of the private trip. Always present for shared trips. |
| interval | object - TimeInterval | Estimated departure or arrival interval. Optional, for shared trips only. |
| timezone | string | IANA timezone matching the location. Presents if time or interval are present. Can be used to convert UTC timestamps from time/interval to local time. |
| description | string | Description of the pickup or dropoff. Optional. |
| address | string | Address of the pickup or dropoff. Optional. |
| image | string | Link to an image of the position. Optional. |
| meetAndGreet | boolean | Specifies if meet and greet is provided for this pickup. Optional, for pickup only. |
| state | string | Represents a state of the location: original - customer provided; or adjusted - differs from the pickup or dropoff requested by the customer. |
| adjustmentReason | string | Reason for the adjustment of the pickup or dropoff. Optional. Possible values: restricted_area, airport_pickup. |
| immutable | boolean | Specifies if the pickup or dropoff position can be changed. If true then the position is predefined and cannot be changed. |
TimeInterval
| Property | Type | Description |
|---|---|---|
| earliest | string | UTC timestamp of the start of the interval. |
| latest | string | UTC timestamp of the end of the interval. |
Pricing
| Property | Type | Description |
|---|---|---|
| totalPrice | number | Total price of this option based on requested passenger count. |
| pricePerPassenger | number | Price per passenger. Optional, for shared options only. |
Vehicle
| Property | Type | Description |
|---|---|---|
| type | string | Type of vehicle. "Sedan", "MPV", "Van", "PremiumVan", "Luxury" or "Shuttle" |
| maxPassengers | integer | Maximum number of passengers that can take a trip in this vehicle. |
| description | string | Complete description of the vehicle type. |
| modelDescription | string | Models that the vehicle is similar to. |
| image | string | Link to an illustrative image of the vehicle type. Not an image of the exact vehicle that will be used for this trip. |
Luggage
| Property | Type | Description |
|---|---|---|
| maxTotalCarryons | integer | Maximum amount of carry-on luggage that passengers can bring on this trip. |
| maxTotalSuitcases | integer | Maximum amount of suitcases that passengers can bring on this trip. |
| maxCarryonsPerPerson | integer | Maximum amount of carry-on luggage that one passenger can bring on this trip. Optional, for shared trips only. |
| maxSuitcasesPerPerson | integer | Maximum amount of suitcases that one passenger can bring on this trip. Optional, for shared trips only. |
ChildSeatType
| Property | Type | Description |
|---|---|---|
| childSeatType | string | Type of the child seat. "RearFacing", "ForwardFacing", "BoosterSeat" or "Booster" |
| description | string | Description of the child seat type. |
| ageFrom | integer | Minimum age in years of a child that this seat type is suitable for. |
| ageTo | integer | Maximum age in years of a child that this seat type is suitable for. |
| weightInPoundsFrom | integer | Minimum weight in pounds of a child that this seat type is suitable for. |
| weightInPoundsTo | integer | Maximum weight in pounds of a child that this seat type is suitable for. |
| weightInKilosFrom | integer | Minimum weight in kilograms of a child that this seat type is suitable for. |
| weightInKilosTo | integer | Maximum weight in kilograms of a child that this seat type is suitable for. |
Stop
| Property | Type | Description |
|---|---|---|
| id | string | Id of the stop. Used for adding stops to a trip option. |
| price | number | Price of the stop. If the stop is in includedStops then this price is already part of totalPrice under pricing of the TripOption. |
| name | string | Name of the stop. |
| image | string | Link to the image of the stop. |
| title | string | Title of the stop description. |
| perex | string | Perex of the stop description. |
| description | string | The stop description. |
| durationInMinutes | integer | Expected duration of the stop. |
| order | integer | Order of this stop on this trip. |
| timezone | string | IANA timezone matching the location of the stop. |
| country | object - Country | Details about the country where the stop is located. |
Country
| Property | Type | Description |
|---|---|---|
| englishName | string | Name of the country in English. |
PassengerDetail
| Property | Type | Description |
|---|---|---|
| type | string | Type of the passenger. "Lead", "Adult" or "Child" |
| firstName | string | First name of the passenger - required the for lead passenger. |
| lastName | string | Last name of the passenger - required for the lead passenger. |
| phone | string | Phone number of the passenger - required for the lead passenger. Include country prefix in the +<country_code> format. |
| string | Email of the passenger - required for the lead passenger. | |
| over18 | boolean | Confirmation that the lead passenger is 18 years old or older - required for the lead passenger unless the deprecated birthday is sent. Must be true; a booking with over18: false is rejected (400 HTTP status code). In responses it is always true for the lead passenger, as adulthood is validated at booking time. |
| birthday | integer | Deprecated. Use over18 instead. Birthday of the lead passenger as a UNIX epoch timestamp in seconds. Still accepted and still required when over18 is not sent, so existing integrations keep working. In responses this property is always returned for the lead passenger; for bookings made with over18 it holds a placeholder date (1990-01-01) instead of a real birthday. |
| childSeatType | string | Requested child seat type for a passenger of type "Child". Must match one of offered child seat types from availableChildSeatTypes of the trip option you are booking. |
MeetingPosition
| Property | Type | Description |
|---|---|---|
| lat | number | Latitude in degrees. |
| lon | number | Longitude in degrees. |
| description | string | Description of the position. |
| instructions | string | Meeting instructions for the customer. |
| address | string | Address of the position. Optional. |
| image | string | Link to an image of the position. Optional. |
DropOffPosition
| Property | Type | Description |
|---|---|---|
| lat | number | Latitude in degrees. |
| lon | number | Longitude in degrees. |
| description | string | Description of the position. |
| address | string | Address of the position. Optional. |
| image | string | Link to an image of the position. Optional. |
DriverPosition
| Property | Type | Description |
|---|---|---|
| timestamp | string | UTC timestamp of when this position was reported by the driver. |
| driverId | string | Unique id of the driver. To distinguish the drivers for trips with multiple drivers. Use the /drivers endpoint to retrieve the details about the drivers and vehicles and match them by this id. |
| position | object - Position | Last reported position of the driver. |
Position
| Property | Type | Description |
|---|---|---|
| lat | number | Latitude in degrees. |
| lon | number | Longitude in degrees. |
Driver
| Property | Type | Description |
|---|---|---|
| driverId | string | Unique id of the driver. Used to match driver position with driver details. |
| name | string | Name of the driver. |
| phoneNumber | string | Phone number of the driver including country code. |
| profilePhoto | string | Optional. Link to driver's profile photo if available. |
| vehicle | object - DriversVehicle | Information about driver's vehicle. |
DriversVehicle
| Property | Type | Description |
|---|---|---|
| title | string | Make and model of the vehicle. |
| color | string | Optional. Color of the vehicle if known. |
| licensePlate | string | Optional. Licence plate of the vehicle if known. |
CancellationPolicyType
| Property | Type | Description |
|---|---|---|
| NonRefundable | string | No refunds for cancellations. |
| Flexible | string | 100% refundable up to 24 hours before departure. |
| SuperFlexible | string | 100% refundable up to 15 minutes before departure. |
Hourly Ride API
An hourly ride is a time-based rental service where passengers rent a driver with a vehicle for a specified duration, starting and ending at the same location. Each search will return multiple hourly ride options that can differ by vehicle type. The service includes number of kilometers included in travel per hour rented.
Flows
Hourly Ride API can be used to search for hourly ride options and then book the option.
Simple hourly ride
A typical flow would look like this:
- call /search endpoint to get possible options
- call /book endpoint to book the chosen option
optional- call /details endpoint to get hourly ride and booking details
Cancelling an hourly ride
A flow to book an hourly ride, get details about it and then cancel it would look like this:
- call /search endpoint to get possible options
- call /book endpoint to book the chosen option
optional- call /details endpoint to get hourly ride and booking details- call /cancel endpoint to cancel the booking
Changing an hourly ride
If you want to change departure time, duration, or any other booking details, you need to cancel the existing booking and create a new one as changes can affect the price.
Hourly Ride Search
This endpoint returns all available hourly ride options based on the specified pickup location, departure time, duration, and passenger count. The pickup location can be provided either as geographic coordinates or as an IATA airport code. Geographic coordinates should be specified as latitude and longitude in decimal degrees format, for example: 39.753657, -117.610215. The departure time must be provided as a UNIX epoch timestamp in seconds (e.g., 1679463169), calculated from the local departure time and converted to UTC. Response times will be in ISO 8601 format.
To search for an hourly ride in Prague for 3 passengers for 6 hours, use this call:
curl "https://papi.staging.mydaytrip.net/partners/v1/hourly-rides/search?originType=iata&origin=PRG&departureTime=1769855400&hoursRented=6&passengersCount=3&childrenCount=1" \
-H "x-api-key: your_api_key"
To search for an hourly ride from Dubrovnik Old Town for 10 passengers for 6 hours, use this call:
curl "https://papi.staging.mydaytrip.net/partners/v1/hourly-rides/search?originLatitude=42.639859&originLongitude=18.109776&departureTime=1769855400&hoursRented=6&passengersCount=10&childrenCount=1" \
-H "x-api-key: your_api_key"
The above call returns a JSON structured like this:
{
"searchId": "f0e34a1b-2b3d-4747-b426-292633b615b4",
"passengersCount": 10,
"childrenCount": 1,
"options": [
{
"id": "1d32109f-c2e2-44fe-b2cf-461ef3730541",
"type": "Private",
"englishSpeakingDriver": true,
"hoursRented": 6,
"includedKilometers": 120,
"pricing": {
"totalPrice": 385,
"currency": "EUR"
},
"pickUp": {
"lat": 42.6420632,
"lon": 18.1131754,
"time": "2026-01-31T10:30:00Z",
"timezone": "Europe/Zagreb",
"description": "Ploce Gate, Ul. Frana Supila 2",
"meetAndGreet": false,
"pickupInstructions": "Your driver will be waiting for you at the entrance of the address provided, please be ready 10 minutes prior to the pick up time",
"immutable": true,
"state": "adjusted",
"adjustmentReason": "restricted_area",
"address": "Vrata od Ploča, Ul. Vrata od Ploča, 20000, Dubrovnik, Croatia",
"image": "https://daytrip.imgix.net/management/dubrovnik.png?w=480&q=50"
},
"vehicles": [
{
"type": "Van",
"maxPassengers": 7,
"description": "Van comparable to a VW Transporter, up to 7 passengers with luggage.",
"modelDescription": "VW Transporter or similar",
"image": "https://daytrip.imgix.net/site/van-vw.png"
},
{
"type": "Sedan",
"maxPassengers": 3,
"description": "Sedan comparable to a Volkswagen Passat, up to 3 passengers with luggage.",
"modelDescription": "VW Passat or similar",
"image": "https://daytrip.imgix.net/site/sedan.png"
}
],
"luggage": {
"maxTotalCarryons": 10,
"maxTotalSuitcases": 10
},
"availableChildSeatTypes": [
{
"childSeatType": "RearFacing",
"description": "Rear-facing infant seat",
"ageFrom": 0,
"ageTo": 1,
"weightInPoundsFrom": 0,
"weightInPoundsTo": 26,
"weightInKilosFrom": 0,
"weightInKilosTo": 10
},
{
"childSeatType": "ForwardFacing",
"description": "Forward-facing w/harness",
"ageFrom": 1,
"ageTo": 4,
"weightInPoundsFrom": 18,
"weightInPoundsTo": 36,
"weightInKilosFrom": 8,
"weightInKilosTo": 16
},
{
"childSeatType": "BoosterSeat",
"description": "Booster seat with high back",
"ageFrom": 4,
"ageTo": 6,
"weightInPoundsFrom": 30,
"weightInPoundsTo": 50,
"weightInKilosFrom": 14,
"weightInKilosTo": 23
},
{
"childSeatType": "Booster",
"description": "Backless booster",
"ageFrom": 6,
"ageTo": 12,
"weightInPoundsFrom": 44,
"weightInPoundsTo": 72,
"weightInKilosFrom": 20,
"weightInKilosTo": 33
}
],
"cancellationPolicy": "Flexible",
"expiresAt": "2025-11-23T18:00:00Z"
}
]
}
Endpoint Details
GET /partners/v1/hourly-rides/search
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| originType | string | Specifies whether the origin is provided as geo-coordinates or as an airport code. Possible values: coordinates, iata. If omitted, the default value is coordinates. |
| originLatitude | number | Pickup location latitude in degrees. Required if originType is set to coordinates or omitted. |
| originLongitude | number | Pickup location longitude in degrees. Required if originType is set to coordinates or omitted. |
| origin | string | IATA airport code of the pickup airport. Required if originType is set to iata. |
| departureTime | integer | Departure time as a UNIX epoch timestamp in seconds. This timestamp should be calculated from the local departure time and converted to UTC. |
| hoursRented | integer | Duration of the rental in hours. |
| passengersCount | integer | Total number of passengers to transport (adults and children). |
| childrenCount | integer | Optional. Specifies the number of children in the group. |
Note: Meeting positions are automatically included in results. When the requested address is in an area that vehicles cannot access directly (e.g., restricted zones, pedestrian areas), the API will return the nearest accessible meeting point with relevant details.
Response body
| Property | Type | Description |
|---|---|---|
| searchId | string | Unique id of your search query. |
| passengersCount | integer | The count of passengers this search query was for. |
| childrenCount | integer | The count of children this search query was for. |
| options | list of HourlyRideOption | List of options for this hourly ride. |
Error status codes
| Status code | Description |
|---|---|
| 400 | Invalid request - missing mandatory query parameter, parameter has wrong type or wrong passenger count. |
| 401 | API key missing or invalid. |
Hourly Ride Book
This endpoint creates a booking for the selected hourly ride option. The booking must include lead passenger details and can optionally include additional adult and child passenger details with required child seats.
To book an hourly ride option, use this call:
curl -X POST "https://papi.staging.mydaytrip.net/partners/v1/hourly-rides/book" \
-H "x-api-key: your_api_key" \
-H "Content-Type: application/json" \
-d '{
"optionId": "1d32109f-c2e2-44fe-b2cf-461ef3730541",
"customerNote": "Please call upon arrival",
"passengerDetails": [
{
"type": "Lead",
"firstName": "John",
"lastName": "Doe",
"email": "john.doe@example.com",
"phone": "+420123456789",
"over18": true
},
{
"type": "Adult",
"firstName": "Jane",
"lastName": "Doe"
},
{
"type": "Child",
"firstName": "Tommy",
"lastName": "Doe",
"childSeatType": "BoosterSeat"
}
],
"externalId": "partner-booking-123"
}'
The above call returns a JSON structured like this:
{
"bookingId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"bookingReference": "DTABC123",
"departureTimeUtc": "2022-12-05T18:00:00Z",
"originTimezone": "Europe/Prague",
"hourlyRide": {
"hoursRented": 6,
"includedKilometers": 120,
"pickUp": {
"lat": 50.0755,
"lon": 14.4378,
"address": "Václavské náměstí, Prague, Czech Republic",
"time": "2022-12-05T18:00:00Z",
"timezone": "Europe/Prague",
"meetAndGreet": false,
"pickupInstructions": "Your driver will be waiting for you at the entrance of the address provided, please be ready 10 minutes prior to the pick up time",
"immutable": true,
"state": "adjusted"
},
"pricing": {
"totalPrice": 26000,
"currency": "EUR"
},
"vehicles": [
{
"type": "Sedan",
"maxPassengers": 3,
"description": "Sedan comparable to a Volkswagen Passat, up to 3 passengers with luggage.",
"modelDescription": "VW Passat or similar",
"image": "https://daytrip.imgix.net/site/sedan.png"
}
]
}
}
Endpoint Details
POST /partners/v1/hourly-rides/book
Request body
| Property | Type | Description |
|---|---|---|
| optionId | string | Required. The ID of the hourly ride option to book from the search response. |
| passengerDetails | list of PassengerDetail | Required. List of passenger details. Must include exactly one Lead passenger. Can include Adult and Child. |
| customerNote | string | Optional. General notes for the driver. |
| externalId | string | Optional. Your internal booking reference ID for tracking purposes. |
Note: Pickup location and departure time are determined by the option from the search. The pickup address is automatically resolved from coordinates during booking.
Response body
| Property | Type | Description |
|---|---|---|
| bookingId | string | Unique booking identifier. |
| bookingReference | string | Human-readable booking reference (e.g., "DTABC123"). |
| departureTimeUtc | string | Departure time in UTC (ISO 8601 format). |
| originTimezone | string | IANA timezone of the pickup location (e.g., "Europe/Prague"). |
| hourlyRide | BookedHourlyRide | Details of the booked hourly ride. |
Error status codes
| Status code | Description |
|---|---|
| 400 | Invalid request - missing required fields or invalid data format. |
| 401 | API key missing or invalid. |
| 404 | Option not found or expired. |
| 409 | Option no longer available or already booked. |
Hourly Ride Details
This endpoint retrieves full details of an existing hourly ride booking, including booking status, passenger information, and pricing details.
To get booking details, use this call:
curl "https://papi.staging.mydaytrip.net/partners/v1/hourly-rides/details/a1b2c3d4-e5f6-7890-abcd-ef1234567890" \
-H "x-api-key: your_api_key"
The above call returns a JSON structured like this:
{
"bookingId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"bookingReference": "DTABC123",
"externalId": "partner-booking-123",
"status": "Confirmed",
"createdAt": "2025-01-01T10:00:00Z",
"departureTimeUtc": "2025-01-15T18:00:00Z",
"originTimezone": "Europe/Prague",
"customerNote": "Please call upon arrival",
"passengerDetails": [
{
"type": "Lead",
"firstName": "John",
"lastName": "Doe",
"email": "john.doe@example.com",
"phone": "+420123456789",
"over18": true
},
{
"type": "Adult",
"firstName": "Jane",
"lastName": "Doe"
},
{
"type": "Child",
"firstName": "Tommy",
"lastName": "Doe",
"childSeatType": "BoosterSeat"
}
],
"hourlyRide": {
"hoursRented": 6,
"includedKilometers": 120,
"pickUp": {
"lat": 50.0755,
"lon": 14.4378,
"address": "Wenceslas Square, Prague, Czech Republic",
"time": "2025-01-15T18:00:00Z",
"timezone": "Europe/Prague",
"meetAndGreet": false,
"pickupInstructions": "Your driver will be waiting for you at the entrance of the address provided, please be ready 10 minutes prior to the pick up time",
"immutable": true,
"state": "adjusted"
},
"pricing": {
"totalPrice": 26000,
"currency": "EUR"
},
"vehicles": [
{
"type": "Sedan",
"maxPassengers": 3,
"description": "Sedan comparable to a Volkswagen Passat, up to 3 passengers with luggage.",
"modelDescription": "VW Passat or similar",
"image": "https://daytrip.imgix.net/site/sedan.png"
}
]
}
}
Endpoint Details
GET /partners/v1/hourly-rides/details/:bookingId
Path Parameters
| Parameter | Type | Description |
|---|---|---|
| bookingId | string | Required. Booking UUID. |
Response body
| Property | Type | Description |
|---|---|---|
| bookingId | string | Unique booking identifier. |
| bookingReference | string | Human-readable booking reference (e.g., "DTABC123"). |
| externalId | string | Optional. Your internal booking reference ID (if provided during book). |
| status | string | Booking status: "Confirmed" or "Cancelled". |
| createdAt | string | When the booking was created (ISO 8601 format). |
| cancelledAt | string | Optional. When the booking was cancelled (ISO 8601 format). |
| departureTimeUtc | string | Departure time in UTC (ISO 8601 format). |
| originTimezone | string | IANA timezone of the pickup location (e.g., "Europe/Prague"). |
| customerNote | string | Optional. General notes for the driver (if provided during book). |
| passengerDetails | list of PassengerDetail | List of passenger details from the booking. |
| hourlyRide | BookedHourlyRide | Details of the booked hourly ride. |
Error status codes
| Status code | Description |
|---|---|
| 401 | API key missing or invalid. |
| 404 | Booking not found. |
Hourly Ride Cancel
This endpoint cancels an existing hourly ride booking. The refund amount depends on the cancellation policy and how far in advance the cancellation is made.
To cancel a hourly ride booking, use this call:
curl -d '{ "bookingId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" }' \
-H "Content-Type: application/json" \
-H "x-api-key: your_api_key" \
-X POST "https://papi.staging.mydaytrip.net/partners/v1/hourly-rides/cancel"
Example response with the penalty amount for the cancellation:
{
"penalty": 0,
"currency": "EUR"
}
Endpoint Details
POST /partners/v1/hourly-rides/cancel
Request body
| Property | Type | Description |
|---|---|---|
| bookingId | string | Id of the booking to cancel. Taken from /book endpoint response. |
Response body
| Property | Type | Description |
|---|---|---|
| penalty | number | Amount of money that will be deducted from the refund. If the penalty is 0, the cancellation is free of charge. |
| currency | string | Currency of the penalty amount. |
Error status codes
| Status code | Description |
|---|---|
| 400 | Invalid request - bookingId missing or not a valid json. |
| 401 | API key missing or invalid. |
| 403 | Forbidden request - trying to cancel a booking owned by someone else or the departure is too soon. |
| 404 | Booking not found. |
| 409 | Booking has already been cancelled. |
Hourly Ride API Data Types
HourlyRideOption
Represents an available hourly ride option returned from search.
| Property | Type | Description |
|---|---|---|
| id | string | Unique option identifier. |
| type | string | Always "Private" for hourly rides. |
| englishSpeakingDriver | boolean | Whether the driver speaks English. |
| hoursRented | integer | Duration in hours. |
| includedKilometers | integer | Total kilometers included. |
| pricing | Pricing | Price information. |
| pickUp | TripLocation | Details about the pickup point. |
| vehicles | list of Vehicle | Vehicles information. |
| luggage | Luggage | Luggage capacity information. |
| availableChildSeatTypes | list of ChildSeat | Available child seat types for this option. |
| cancellationPolicy | string | Cancellation policy: "Flexible", "SuperFlexible", or "NonRefundable". |
| expiresAt | string | When this option expires (ISO 8601 format). |
BookedHourlyRideResponse
Detailed information about a booked hourly ride (used in book and details responses).
| Property | Type | Description |
|---|---|---|
| hoursRented | integer | Duration in hours. |
| includedKilometers | integer | Total kilometers included. |
| pickUp | TripLocation | Pickup location information. |
| pricing | Pricing | Price information. |
| vehicles | list of Vehicle | Vehicles information. |
TripLocation
Information about a pickup/dropoff location.
| Property | Type | Description |
|---|---|---|
| lat | number | Latitude in decimal degrees. |
| lon | number | Longitude in decimal degrees. |
| address | string | Formatted address string resolved from Google Location API. |
| time | string | Pickup time (ISO 8601 format). |
| timezone | string | IANA timezone (e.g., "Europe/Prague"). |
| meetAndGreet | boolean | Whether meet and greet service is included. |
| pickupInstructions | string | Instructions for the passenger to find the driver at the pickup location. |
| state | string | Location state: "original" or "adjusted". |
| immutable | boolean | Whether the location can be changed. |
| adjustmentReason | string | Optional. Reason for location adjustment (e.g., "restricted_area"). |
| description | string | Optional. Description of the meeting point (included in search response). |
| image | string | Optional. URL to an image of the meeting point (included in search response). |
Pricing
Price information.
| Property | Type | Description |
|---|---|---|
| totalPrice | integer | Total price in the currency's minor unit (cents for EUR/USD). |
| currency | string | Currency used for all prices in this response. |
Vehicle
Vehicle information.
| Property | Type | Description |
|---|---|---|
| type | string | Vehicle type: "Sedan", "MPV", "Van", "PremiumVan", or "LuxurySedan". |
| maxPassengers | integer | Maximum number of passengers. |
| description | string | Full vehicle description. |
| modelDescription | string | Example model (e.g., "VW Passat or similar"). |
| image | string | URL to vehicle image. |
Luggage
Luggage capacity information.
| Property | Type | Description |
|---|---|---|
| maxTotalCarryons | integer | Maximum number of carry-on bags. |
| maxTotalSuitcases | integer | Maximum number of suitcases. |
ChildSeat
Information about available child seat types.
| Property | Type | Description |
|---|---|---|
| childSeatType | string | Type: "RearFacing", "ForwardFacing", "BoosterSeat", or "Booster". |
| description | string | Human-readable description. |
| ageFrom | integer | Minimum age in years. |
| ageTo | integer | Maximum age in years. |
| weightInPoundsFrom | integer | Minimum weight in pounds. |
| weightInPoundsTo | integer | Maximum weight in pounds. |
| weightInKilosFrom | integer | Minimum weight in kilograms. |
| weightInKilosTo | integer | Maximum weight in kilograms. |
PassengerDetail
Passenger information for booking and details responses.
| Property | Type | Description |
|---|---|---|
| type | string | Required. Passenger type: "Lead", "Adult", or "Child". |
| firstName | string | Required for Lead passenger. Optional for Adult and Child. |
| lastName | string | Required for Lead passenger. Optional for Adult and Child. |
| string | Required for Lead passenger. | |
| phone | string | Required for Lead passenger. Phone number with country code. |
| over18 | boolean | Required for Lead passenger. Must be true (lead passenger must be 18+). |
| childSeatType | string | Required for Child passenger. Type: "RearFacing", "ForwardFacing", "BoosterSeat", or "Booster". |
RefundInfo
Refund information after cancellation.
| Property | Type | Description |
|---|---|---|
| amount | integer | Refund amount in the currency's minor unit (cents for EUR/USD). |
| currency | string | Currency code (ISO 4217). |
Cancellation Policy
All hourly rides follow the same cancellation policy:
- 100% refundable when cancelled more than 24 hours before departure
- No refund when cancelled within 24 hours of departure
Day Trips API
Day trips combine comfortable door‑to‑door transportation with guided sightseeing. Each product is a pre‑planned excursion with a fixed itinerary. Customers can discover available day trips by country or by geographic coordinates, inspect the full itinerary, and then book the trip for a specific departure time. Unlike the point‑to‑point trips from the Trip API, Day Trip products cannot be customized with additional stops or different routes – the itinerary and sightseeing stops are predefined.
The Day Trips API allows partners to search, browse, and book curated day trip packages.
Flows
The API is designed to support intuitive user flows, from discovery to booking management.
Browse and Book Flow
This flow is ideal when a user wants to explore available day trips starting from a specific country or city.
- Call /partners/v1/daytrips/country/{countryIsoCode} to discover all available departure locations within a country.
- Present the locations to the user. Once a location is chosen, call /partners/v1/daytrips/location/{locationId} to fetch all available day trip packages from that city.
- After the user selects a day trip, call /partners/v1/daytrips/book with the
dayTripIdand passenger details to create a booking. optional- Use /partners/v1/daytrips/details/{bookingId} to retrieve the complete booking information at any time.optional- If changes are needed, use /partners/v1/daytrips/update to modify booking details like passenger count or pickup time.optional- If the trip needs to be cancelled, call /partners/v1/daytrips/cancel.
Search and Book Flow
This flow is best for users who want to find day trips starting near their current position.
- Call /partners/v1/daytrips/search using the user's latitude and longitude. The API automatically finds the nearest departure location and returns all associated day trips.
- After the user selects a day trip, call /partners/v1/daytrips/book with the
dayTripIdand passenger details. optional- Manage the booking using the /details, /update, and /cancel endpoints as described above.
Browse Locations
This endpoint returns a list of all available day trip departure locations within a specified country.
To get all day trip locations in the Czech Republic, use this call:
curl "https://papi.staging.mydaytrip.net/partners/v1/daytrips/country/cz" \
-H "x-api-key: your_api_key"
The above call returns a JSON object structured like this:
{
"countryCode": "cz",
"locations": [
{
"locationId": "4cf0e7a4-8443-40c9-bbf3-bfe253a3c631",
"name": "Prague",
"description": "According to legend, Prague was founded in the 8th century when the duchess Libuše stood atop a rocky cliff overlooking the Vltava and prophesied: \"I see a great city whose glory will touch the stars!\". In the 14th century, Charles IV Holy Roman Emperor and King of Bohemia personally elevated Prague into an imperial capital. Charles himself designed the layout of Nové Město, laid the first stone of the Charles Bridge, and founded Charles University. Over the following centuries, Prague experienced its fair share of ups and downs, not to mention a few defenestrations, but was spared the devastation that befell many European cities. Every visitor’s first stop should be the Old Town Square, for the beautiful Baroque buildings lining it, and the famed astronomical clock on the Old Town Hall. From here, you can easily reach the world famous Charles Bridge, and make your way up to expansive castle complex.",
"images": [
"https://daytrip2.imgix.net/76.jpg",
"https://daytrip2.imgix.net/prague11.jpg",
"https://daytrip.imgix.net/prague-full-view.jpg",
"https://daytrip.imgix.net/prague12.jpg",
"https://daytrip.imgix.net/prague13.jpg",
"https://daytrip.imgix.net/prague14.jpg"
],
"coordinates": {
"lat": 50.0755381,
"lon": 14.4378005
}
},
{
"locationId": "7df59e2b-7919-4c7a-b8a0-ef05cf0c9882",
"name": "Brno",
"description": "At the first sign of summer, the city transforms itself into a scene of lively street cafes, outdoor restaurants and street performers that make any visit that bit more memorable. The compact nature of the city means that restaurants, malls, museums, and galleries are all close at hand and the center can easily be viewed on foot or by taking a ride on one of the many trams that run both through and around the city center. Experience the delightful mix of cultures that make up Brno, a city that went unknown to most travelers for so long but emerged from the shadow of Prague in the 1990s. Take a tip from the locals and ‘look up’ when taking a stroll through the center in order to truly appreciate the beauty of the architecture where functionalist and gothic often combine to create the perfect blend of old and new.",
"images": [
"https://daytrip2.imgix.net/brno2.jpg",
"https://daytrip.imgix.net/brno300.jpg",
"https://daytrip.imgix.net/brno200.jpg",
"https://daytrip.imgix.net/brno100.jpg"
],
"coordinates": {
"lat": 49.1950602,
"lon": 16.6068371
}
},
{
"locationId": "b0559b77-1e5e-41e9-be6c-72bd2671e897",
"name": "Olomouc",
"description": "The centre of Olomouc is the largest historic preservation zone outside of Prague and therefore boasts numerous historic and religious buildings. However the one held in the highest regard is the Holy Trinity Column, a UNESCO World Heritage site and biggest Baroque sculpture in the Czech Republic. Built in 1754 by local citizens and craftsmen, the column is seen as both a celebration of the Catholic Church and of Olomouc itself. The monument stands 115ft high and is topped by a gilded statue of the Holy Trinity. The most prominent church in Olomouc is Saint Wenceslas Cathedral, founded in 1107 and in the compound of the Olomouc Castle. The Cathedral has undergone many renovations throughout its history, resulting in many different architectural styles on display, from a Romanesque crypt to a Gothic cloister to Baroque chapels. Olomouc is also home to the Moravian Theatre, the Moravian Philharmonic and the second oldest university in the Czech Republic.",
"images": [
"https://daytrip2.imgix.net/olomouc1.jpg",
"https://daytrip2.imgix.net/olomouc2.jpg",
"https://daytrip2.imgix.net/olomouc3.jpg"
],
"coordinates": {
"lat": 49.593778,
"lon": 17.2508787
}
}
]
}
Endpoint Details
GET /partners/v1/daytrips/country/{countryIsoCode}
Request Parameters
| Name | Type | Description |
|---|---|---|
| countryIsoCode | string | Required. ISO 3166-1 alpha-2 country code (e.g., cz). |
Response Body
| Property | Type | Description |
|---|---|---|
| countryCode | string | The ISO 3166-1 alpha-2 country code of the requested country. |
| locations | array | A list of available day trip departure locations within the specified country. See Location for details. |
Error Status Codes
| Status Code | Description |
|---|---|
| 400 | Invalid or missing country code. |
Day Trips By Location
This endpoint returns a list of available day trip packages departing from a specified location ID.
To get all day trips originating from Prague, use this call:
curl "https://papi.staging.mydaytrip.net/partners/v1/daytrips/location/4cf0e7a4-8443-40c9-bbf3-bfe253a3c631" \
-H "x-api-key: your_api_key"
The above call returns a JSON object structured like this:
{
"location": {
"locationId": "4cf0e7a4-8443-40c9-bbf3-bfe253a3c631",
"coordinates": {
"lat": 50.0755381,
"lon": 14.4378005
},
"name": "Prague",
"description": "According to legend, Prague was founded in the 8th century when the duchess Libuše stood atop a rocky cliff overlooking the Vltava and prophesied: \"I see a great city whose glory will touch the stars!\". In the 14th century, Charles IV Holy Roman Emperor and King of Bohemia personally elevated Prague into an imperial capital. Charles himself designed the layout of Nové Město, laid the first stone of the Charles Bridge, and founded Charles University. Over the following centuries, Prague experienced its fair share of ups and downs, not to mention a few defenestrations, but was spared the devastation that befell many European cities. Every visitor’s first stop should be the Old Town Square, for the beautiful Baroque buildings lining it, and the famed astronomical clock on the Old Town Hall. From here, you can easily reach the world famous Charles Bridge, and make your way up to expansive castle complex.",
"images": [
"https://daytrip2.imgix.net/76.jpg",
"https://daytrip2.imgix.net/prague11.jpg",
"https://daytrip.imgix.net/prague-full-view.jpg",
"https://daytrip.imgix.net/prague12.jpg",
"https://daytrip.imgix.net/prague13.jpg",
"https://daytrip.imgix.net/prague14.jpg"
]
},
"dayTrips": [
{
"dayTripId": "0e0e3600-5503-4bf8-9b4c-e044c2334e33",
"name": "Prague to Karlovy Vary: Private day trip",
"description": "Forested hills unfold on the journey into the Karlovy Vary’s spa elegance. Glide past Krivoklatsko’s wooded slopes and pause for panoramic views at Hartenstejn Castle, then descend into a world of colonnades, steaming springs, and Belle Epoque architecture. A return to Prague awaits after your indulgent day.",
"sightseeingDescription": "When you arrive in Karlovy Vary, you'll have the freedom to relax in this elegant spa town and drink from its healing springs. Meanwhile, your driver will be waiting for you nearby, ensuring a stress-free return trip to Prague.",
"images": [
"https://daytrip.imgix.net/Karlovy-Vary3.jpg",
"https://daytrip.imgix.net/Karlovy-Vary4.jpg",
"https://daytrip.imgix.net/Karlovy-Vary6.jpg",
"https://daytrip.imgix.net/Karlovy-Vary5.jpg"
],
"totalTripTimeMinutes": 412,
"price": {
"currency": 0,
"perPassengerPrice": 79,
"minPassengerCount": 3
},
"itineraryItems": [
{
"order": 1,
"type": "edgeLocation",
"location": {
"locationId": "4cf0e7a4-8443-40c9-bbf3-bfe253a3c631",
"coordinates": {
"lat": 50.0755381,
"lon": 14.4378005
},
"name": "Prague",
"description": "According to legend, Prague was founded in the 8th century when the duchess Libuše stood atop a rocky cliff overlooking the Vltava and prophesied: \"I see a great city whose glory will touch the stars!\". In the 14th century, Charles IV Holy Roman Emperor and King of Bohemia personally elevated Prague into an imperial capital. Charles himself designed the layout of Nové Město, laid the first stone of the Charles Bridge, and founded Charles University. Over the following centuries, Prague experienced its fair share of ups and downs, not to mention a few defenestrations, but was spared the devastation that befell many European cities. Every visitor’s first stop should be the Old Town Square, for the beautiful Baroque buildings lining it, and the famed astronomical clock on the Old Town Hall. From here, you can easily reach the world famous Charles Bridge, and make your way up to expansive castle complex.",
"images": [
"https://daytrip2.imgix.net/76.jpg",
"https://daytrip2.imgix.net/prague11.jpg",
"https://daytrip.imgix.net/prague-full-view.jpg",
"https://daytrip.imgix.net/prague12.jpg",
"https://daytrip.imgix.net/prague13.jpg",
"https://daytrip.imgix.net/prague14.jpg"
]
}
},
{
"order": 2,
"type": "location",
"location": {
"locationId": "82565d30-7a14-4530-96f4-24861b018042",
"coordinates": {
"lat": 50.2318521,
"lon": 12.8719616
},
"name": "Karlovy Vary",
"description": "One of the best-known spa towns in the world where some of the most famous figures in European artistic and cultural life, such as Beethoven, Mozart and Casanova have all enjoyed treatment. Today, due to its distinctive architecture, hot springs and popularity with Hollywood celebrities, it is ranked among Europe’s elite spa towns. Absorb the atmosphere and the distinct fragrance of a spa town with a walk through the historical center where you can sample water from the healing springs that stand in the shadows of the exquisite colonnades. No visitor should miss the prestigious Grand Hotel Pupp with its world famous façade and regarded as one of the world’s best hotels. If you think you’ve seen it somewhere before then you most likely have — it features in the James Bond film, Casino Royale, among others, and hosts cultural festivals and award shows broadcast across the world.",
"images": [
"https://daytrip.imgix.net/Karlovy-Vary3.jpg",
"https://daytrip.imgix.net/Karlovy-Vary4.jpg",
"https://daytrip.imgix.net/Karlovy-Vary6.jpg",
"https://daytrip.imgix.net/Karlovy-Vary5.jpg"
]
}
},
{
"order": 3,
"type": "edgeLocation",
"location": {
"locationId": "4cf0e7a4-8443-40c9-bbf3-bfe253a3c631",
"coordinates": {
"lat": 50.0755381,
"lon": 14.4378005
},
"name": "Prague",
"description": "According to legend, Prague was founded in the 8th century when the duchess Libuše stood atop a rocky cliff overlooking the Vltava and prophesied: \"I see a great city whose glory will touch the stars!\". In the 14th century, Charles IV Holy Roman Emperor and King of Bohemia personally elevated Prague into an imperial capital. Charles himself designed the layout of Nové Město, laid the first stone of the Charles Bridge, and founded Charles University. Over the following centuries, Prague experienced its fair share of ups and downs, not to mention a few defenestrations, but was spared the devastation that befell many European cities. Every visitor’s first stop should be the Old Town Square, for the beautiful Baroque buildings lining it, and the famed astronomical clock on the Old Town Hall. From here, you can easily reach the world famous Charles Bridge, and make your way up to expansive castle complex.",
"images": [
"https://daytrip2.imgix.net/76.jpg",
"https://daytrip2.imgix.net/prague11.jpg",
"https://daytrip.imgix.net/prague-full-view.jpg",
"https://daytrip.imgix.net/prague12.jpg",
"https://daytrip.imgix.net/prague13.jpg",
"https://daytrip.imgix.net/prague14.jpg"
]
}
}
]
}
]
}
Endpoint Details
GET /partners/v1/daytrips/location/{locationId}
Request Parameters
| Parameter | Type | Description |
|---|---|---|
| locationId | UUID | Required. The ID of the origin city. |
Response Body
| Property | Type | Description |
|---|---|---|
| location | object | The details of the departure location. See Location for details. |
| dayTrips | array | A list of available day trip packages from the specified location. See DayTrip for details. |
Error Status Codes
| Status Code | Description |
|---|---|
| 400 | Malformed or missing locationId. |
| 404 | No location found with the given ID. |
Search Day Trips
This endpoint finds the nearest departure location to a user's coordinates and returns all available day trips from that location.
To search for day trips near a specific point in Prague:
curl "https://papi.staging.mydaytrip.net/partners/v1/daytrips/search?lat=50.0755&lon=14.4378" \
-H "x-api-key: your_api_key"
The above call returns a JSON object structured like this:
{
"location": {
"locationId": "4cf0e7a4-8443-40c9-bbf3-bfe253a3c631",
"coordinates": {
"lat": 50.0755381,
"lon": 14.4378005
},
"name": "Prague",
"description": "According to legend, Prague was founded in the 8th century when the duchess Libuše stood atop a rocky cliff overlooking the Vltava and prophesied: \"I see a great city whose glory will touch the stars!\". In the 14th century, Charles IV Holy Roman Emperor and King of Bohemia personally elevated Prague into an imperial capital. Charles himself designed the layout of Nové Město, laid the first stone of the Charles Bridge, and founded Charles University. Over the following centuries, Prague experienced its fair share of ups and downs, not to mention a few defenestrations, but was spared the devastation that befell many European cities. Every visitor’s first stop should be the Old Town Square, for the beautiful Baroque buildings lining it, and the famed astronomical clock on the Old Town Hall. From here, you can easily reach the world famous Charles Bridge, and make your way up to expansive castle complex.",
"images": [
"https://daytrip2.imgix.net/76.jpg",
"https://daytrip2.imgix.net/prague11.jpg",
"https://daytrip2.imgix.net/prague-full-view.jpg",
"https://daytrip2.imgix.net/prague12.jpg",
"https://daytrip2.imgix.net/prague13.jpg",
"https://daytrip2.imgix.net/prague14.jpg"
]
},
"dayTrips": [
{
"dayTripId": "0e0e3600-5503-4bf8-9b4c-e044c2334e33",
"name": "Prague to Karlovy Vary: Private day trip",
"description": "Forested hills unfold on the journey into the Karlovy Vary’s spa elegance. Glide past Krivoklatsko’s wooded slopes and pause for panoramic views at Hartenstejn Castle, then descend into a world of colonnades, steaming springs, and Belle Epoque architecture. A return to Prague awaits after your indulgent day.",
"sightseeingDescription": "When you arrive in Karlovy Vary, you'll have the freedom to relax in this elegant spa town and drink from its healing springs. Meanwhile, your driver will be waiting for you nearby, ensuring a stress-free return trip to Prague.",
"images": [
"https://daytrip.imgix.net/Karlovy-Vary3.jpg",
"https://daytrip.imgix.net/Karlovy-Vary4.jpg",
"https://daytrip.imgix.net/Karlovy-Vary6.jpg",
"https://daytrip.imgix.net/Karlovy-Vary5.jpg"
],
"totalTripTimeMinutes": 412,
"price": {
"currency": 0,
"perPassengerPrice": 79,
"minPassengerCount": 3
},
"itineraryItems": [
{
"order": 1,
"type": "edgeLocation",
"location": {
"locationId": "4cf0e7a4-8443-40c9-bbf3-bfe253a3c631",
"coordinates": {
"lat": 50.0755381,
"lon": 14.4378005
},
"name": "Prague",
"description": "According to legend, Prague was founded in the 8th century when the duchess Libuše stood atop a rocky cliff overlooking the Vltava and prophesied: \"I see a great city whose glory will touch the stars!\". In the 14th century, Charles IV Holy Roman Emperor and King of Bohemia personally elevated Prague into an imperial capital. Charles himself designed the layout of Nové Město, laid the first stone of the Charles Bridge, and founded Charles University. Over the following centuries, Prague experienced its fair share of ups and downs, not to mention a few defenestrations, but was spared the devastation that befell many European cities. Every visitor’s first stop should be the Old Town Square, for the beautiful Baroque buildings lining it, and the famed astronomical clock on the Old Town Hall. From here, you can easily reach the world famous Charles Bridge, and make your way up to expansive castle complex.",
"images": [
"https://daytrip2.imgix.net/76.jpg",
"https://daytrip2.imgix.net/prague11.jpg",
"https://daytrip2.imgix.net/prague-full-view.jpg",
"https://daytrip2.imgix.net/prague12.jpg",
"https://daytrip2.imgix.net/prague13.jpg",
"https://daytrip2.imgix.net/prague14.jpg"
]
}
},
{
"order": 2,
"type": "location",
"location": {
"locationId": "82565d30-7a14-4530-96f4-24861b018042",
"coordinates": {
"lat": 50.2318521,
"lon": 12.8719616
},
"name": "Karlovy Vary",
"description": "One of the best-known spa towns in the world where some of the most famous figures in European artistic and cultural life, such as Beethoven, Mozart and Casanova have all enjoyed treatment. Today, due to its distinctive architecture, hot springs and popularity with Hollywood celebrities, it is ranked among Europe’s elite spa towns. Absorb the atmosphere and the distinct fragrance of a spa town with a walk through the historical center where you can sample water from the healing springs that stand in the shadows of the exquisite colonnades. No visitor should miss the prestigious Grand Hotel Pupp with its world famous façade and regarded as one of the world’s best hotels. If you think you’ve seen it somewhere before then you most likely have — it features in the James Bond film, Casino Royale, among others, and hosts cultural festivals and award shows broadcast across the world.",
"images": [
"https://daytrip.imgix.net/Karlovy-Vary3.jpg",
"https://daytrip.imgix.net/Karlovy-Vary4.jpg",
"https://daytrip.imgix.net/Karlovy-Vary6.jpg",
"https://daytrip.imgix.net/Karlovy-Vary5.jpg"
]
}
},
{
"order": 3,
"type": "edgeLocation",
"location": {
"locationId": "4cf0e7a4-8443-40c9-bbf3-bfe253a3c631",
"coordinates": {
"lat": 50.0755381,
"lon": 14.4378005
},
"name": "Prague",
"description": "According to legend, Prague was founded in the 8th century when the duchess Libuše stood atop a rocky cliff overlooking the Vltava and prophesied: \"I see a great city whose glory will touch the stars!\". In the 14th century, Charles IV Holy Roman Emperor and King of Bohemia personally elevated Prague into an imperial capital. Charles himself designed the layout of Nové Město, laid the first stone of the Charles Bridge, and founded Charles University. Over the following centuries, Prague experienced its fair share of ups and downs, not to mention a few defenestrations, but was spared the devastation that befell many European cities. Every visitor’s first stop should be the Old Town Square, for the beautiful Baroque buildings lining it, and the famed astronomical clock on the Old Town Hall. From here, you can easily reach the world famous Charles Bridge, and make your way up to expansive castle complex.",
"images": [
"https://daytrip2.imgix.net/76.jpg",
"https://daytrip2.imgix.net/prague11.jpg",
"https://daytrip2.imgix.net/prague-full-view.jpg",
"https://daytrip2.imgix.net/prague12.jpg",
"https://daytrip2.imgix.net/prague13.jpg",
"https://daytrip2.imgix.net/prague14.jpg"
]
}
}
]
}
]
}
Endpoint Details
GET /partners/v1/daytrips/search
Query Parameters
| Name | Type | Description |
|---|---|---|
| lat | float | Required. Latitude of the user. |
| lon | float | Required. Longitude of the user. |
Response Body
| Property | Type | Description |
|---|---|---|
| location | object | The details of the nearest departure location found. See Location for details. |
| dayTrips | array | A list of available day trip packages from the found location. See DayTrip for details. |
Error Status Codes
| Status Code | Description |
|---|---|
| 400 | Invalid or missing coordinates. |
| 404 | No eligible departure location found near the coordinates. |
Book Day Trip
This endpoint creates a new booking for a selected day trip product. The minimum time to departure is 36 hours.
To book a day trip for 3 adults and 1 child:
curl -X POST "https://papi.staging.mydaytrip.net/partners/v1/daytrips/book" \
-H "Content-Type: application/json" \
-H "x-api-key: your_api_key" \
-d '{
"dayTripId": "ffa696fe-4f83-4554-80e7-f217c7a55502",
"departureTimeLocal": 1747727049,
"passengers": {
"adults": 3,
"children": [{"age": 5, "childSeatType": "Booster"}]
},
"leadPassenger": {
"firstName": "John",
"lastName": "Doe",
"phone": "+41555555555",
"email": "client-email@example.com",
"over18": true
},
"pickupLocation": {
"lat": 50.1,
"lon": 14.25,
"address": "Havel airport, Terminal 2",
"note": "Taxi Parking 2"
}
}'
The above call returns a booking confirmation:
{
"bookingId": "123e4567-e89b-12d3-a456-426614174000",
"bookingReference": "CB1027",
"departureTimeLocal": 1747727049,
"originTimezone": "Europe/Prague",
"pickupLocation": {
"lat": 50.1,
"lon": 14.25,
"address": "Havel airport, Terminal 2",
"note": "Taxi Parking 2"
},
"dayTrip": {
"id": "ffa696fe-4f83-4554-80e7-f217c7a55502",
"name": "Berlin to Dresden: Private day trip",
"description": "Travel from Berlin to this captivating city on the Elbe...",
"sightseeingDescription": "Explore the Old Town, Frauenkirche, and more...",
"distanceKm": 334,
"travelTimeMinutes": 268
},
"pricing": {
"currency": "EUR",
"perPassengerPrice": 83,
"passengersCount": 4,
"totalPrice": 332
},
"vehicles": [
{
"type": "Sedan",
"description": "Sedan comparable to a Volkswagen Passat, up to 3 passengers with luggage.",
"modelDescription": "VW Passat or similar",
"image": "https://daytrip.imgix.net/site/sedan.png"
}
]
}
Endpoint Details
POST /partners/v1/daytrips/book
Request Body Parameters
| Property | Type | Description |
|---|---|---|
| dayTripId | UUID | Required. The ID of the day trip to book. |
| departureTimeLocal | integer | Required. UNIX timestamp of local departure. |
| passengers | object | Required. Passenger details. See PassengerDetails. |
| leadPassenger | object | Required. Contact info for the lead passenger. See LeadPassenger. |
| pickupLocation | object | Required. Details of the pickup location. See PickupLocation. |
Response Body
| Property | Type | Description |
|---|---|---|
| bookingId | UUID | The unique identifier for the newly created booking. |
| bookingReference | string | A human-readable reference for the booking. |
| departureTimeLocal | integer | The departure time as a UNIX timestamp in the local timezone of the origin. |
| originTimezone | string | The IANA timezone name of the origin. |
| pickupLocation | object | The details of the pickup location. See DayTripPickupLocation for details. |
| dayTrip | object | The details of the booked day trip. See DayTrip for details. |
| pricing | object | The pricing details for the booking. See DayTripPrice for details. |
| vehicles | array | An array of vehicles assigned to the booking. See DayTripVehicle for details. |
Error Status Codes
| Status Code | Description |
|---|---|
| 400 | Missing or invalid data in the request body. |
| 404 | dayTripId not found or is not bookable. |
| 500 | Unexpected failure from a downstream system. |
Cancel Booking
This endpoint cancels an existing day trip booking, if permitted by cancellation rules. If cancellation is in less than 24 hours before the departure time, the full amount is charged; otherwise, it's 0.
To cancel a booking with reference "CB1027":
curl -X POST "https://papi.staging.mydaytrip.net/partners/v1/daytrips/cancel" \
-H "Content-Type: application/json" \
-H "x-api-key: your_api_key" \
-d '{
"bookingId": "CB1027"
}'
The above call returns a confirmation of the cancellation:
{
"bookingId": "CB1027",
"cancelledAt": "2025-05-18T10:25:00Z",
"penalty": 199,
"currency":"EUR"
}
Endpoint Details
POST /partners/v1/daytrips/cancel
Request Body Parameters
| Property | Type | Description |
|---|---|---|
| bookingId | string | Required. The booking ID to cancel. |
Response Body
| Property | Type | Description |
|---|---|---|
| bookingId | string | The ID of the booking that was cancelled. |
| cancelledAt | string | The timestamp of when the booking was cancelled. |
| penalty | number | The amount that should be payed in case of cancellation: the full price, if cancelled in less that 24 hours before departure; otherwise 0. |
| currency | string | The currency of the penalty amount. |
Error Status Codes
| Status Code | Description |
|---|---|
| 400 | Invalid booking ID format. |
| 403 | Cancellation is not allowed (e.g., too close to departure). |
| 404 | Booking not found. |
| 500 | Unexpected internal failure. |
Get Booking Details
This endpoint retrieves the full, current details of a specific booking.
To get details for a specific booking:
curl "https://papi.staging.mydaytrip.net/partners/v1/daytrips/details/123e4567-e89b-12d3-a456-426614174000" \
-H "x-api-key: your_api_key"
The above call returns a booking confirmation:
{
"bookingId": "123e4567-e89b-12d3-a456-426614174000",
"bookingReference": "CB1027",
"departureTimeLocal": 1747727049,
"originTimezone": "Europe/Prague",
"pickupLocation": {
"lat": 50.1,
"lon": 14.25,
"address": "Havel airport, Terminal 2",
"note": "Taxi Parking 2"
},
"dayTrip": {
"id": "ffa696fe-4f83-4554-80e7-f217c7a55502",
"name": "Berlin to Dresden: Private day trip",
"description": "Travel from Berlin to this captivating city on the Elbe...",
"sightseeingDescription": "Explore the Old Town, Frauenkirche, and more...",
"distanceKm": 334,
"travelTimeMinutes": 268
},
"pricing": {
"currency": "EUR",
"perPassengerPrice": 83,
"passengersCount": 4,
"totalPrice": 332
},
"vehicles": [
{
"type": "Sedan",
"description": "Sedan comparable to a Volkswagen Passat, up to 3 passengers with luggage.",
"modelDescription": "VW Passat or similar",
"image": "https://daytrip.imgix.net/site/sedan.png"
}
]
}
Endpoint Details
GET /partners/v1/daytrips/details/{bookingId}
URL Parameters
| Parameter | Type | Description |
|---|---|---|
| bookingId | string | Required. The booking ID to retrieve. |
Response Body
| Property | Type | Description |
|---|---|---|
| bookingId | UUID | The unique identifier for the booking. |
| bookingReference | string | A human-readable reference for the booking. |
| departureTimeLocal | integer | The departure time as a UNIX timestamp in the local timezone of the origin. |
| originTimezone | string | The IANA timezone name of the origin. |
| pickupLocation | object | The details of the pickup location. See DayTripPickupLocation for details. |
| dayTrip | object | The details of the booked day trip. See DayTrip for details. |
| pricing | object | The pricing details for the booking. See DayTripPrice for details. |
| vehicles | array | An array of vehicles assigned to the booking. See DayTripVehicle for details. |
Error Status Codes
| Status Code | Description |
|---|---|
| 400 | Malformed or missing bookingId. |
| 404 | Booking not found. |
Update Booking
This endpoint modifies an existing booking, allowing changes to pickup time, location, and passenger count. The current cutoff for updates is 24 hours before the trip departure time.
To update the passenger count and pickup location for a booking:
curl -X POST "https://papi.staging.mydaytrip.net/partners/v1/daytrips/update" \
-H "Content-Type: application/json" \
-H "x-api-key: your_api_key" \
-d '{
"bookingId": "123e4567-e89b-12d3-a456-426614174000",
"passengers": {
"adults": 2,
"children": []
},
"pickupLocation": {
"lat": 50.101,
"lon": 14.252,
"note": "New pickup point note"
}
}'
The above call returns a booking confirmation:
{
"bookingId": "123e4567-e89b-12d3-a456-426614174000",
"bookingReference": "CB1027",
"departureTimeLocal": 1747727049,
"originTimezone": "Europe/Prague",
"pickupLocation": {
"lat": 50.1,
"lon": 14.25,
"address": "Havel airport, Terminal 2",
"note": "Taxi Parking 2"
},
"dayTrip": {
"id": "ffa696fe-4f83-4554-80e7-f217c7a55502",
"name": "Berlin to Dresden: Private day trip",
"description": "Travel from Berlin to this captivating city on the Elbe...",
"sightseeingDescription": "Explore the Old Town, Frauenkirche, and more...",
"distanceKm": 334,
"travelTimeMinutes": 268
},
"pricing": {
"currency": "EUR",
"perPassengerPrice": 83,
"passengersCount": 4,
"totalPrice": 332
},
"vehicles": [
{
"type": "Sedan",
"description": "Sedan comparable to a Volkswagen Passat, up to 3 passengers with luggage.",
"modelDescription": "VW Passat or similar",
"image": "https://daytrip.imgix.net/site/sedan.png"
}
]
}
Endpoint Details
POST /partners/v1/daytrips/update
Request Body Parameters
All fields are optional except for bookingId. Only include the fields you wish to update.
| Property | Type | Description |
|---|---|---|
| bookingId | UUID | Required. The ID of the booking to update. |
| departureTimeLocal | integer | A new UNIX timestamp for local departure time. |
| passengers | object | A new passenger configuration. See PassengerDetails. |
| pickupLocation | object | A new pickup location object. See PickupLocation. |
Response Body
| Property | Type | Description |
|---|---|---|
| bookingId | UUID | The unique identifier for the updated booking. |
| bookingReference | string | A human-readable reference for the booking. |
| departureTimeLocal | integer | The updated departure time as a UNIX timestamp in the local timezone of the origin. |
| originTimezone | string | The IANA timezone name of the origin. |
| pickupLocation | object | The updated details of the pickup location. See PickupLocation for details. |
| dayTrip | object | The details of the booked day trip. See DayTrip for details. |
| pricing | object | The updated pricing details for the booking. See DayTripPrice for details. |
| vehicles | array | An array of vehicles assigned to the booking. See DayTripVehicle for details. |
Error Status Codes
| Status Code | Description |
|---|---|
| 400 | Malformed or incomplete request. |
| 404 | Booking ID does not exist. |
| 422 | Update not allowed due to business rules (e.g., too close to departure). |
| 500 | Internal service or pricing failure. |
Day Trips API Data Types
DayTripBooking
| Property | Type | Description |
|---|---|---|
| bookingId | UUID | The unique identifier for the booking. |
| bookingReference | string | A human-readable reference for the booking. |
| departureTimeLocal | integer | The departure time as a UNIX timestamp in the local timezone of the origin. |
| originTimezone | string | The IANA timezone name of the origin. |
| pickupLocation | object | The details of the pickup location. See PickupLocation. |
| dayTrip | object | The details of the day trip. See Day trip. |
| pricing | object | The pricing details for the booking. See Price. |
| vehicles | array | An array of vehicles assigned to the booking. See DayTripVehicle. |
DayTripLocation
| Property | Type | Description |
|---|---|---|
| locationId | UUID | The unique identifier for the location. |
| name | string | The name of the location. |
| description | string | A description of the location. |
| images | array | An array of URLs for images of the location. |
| coordinates | object | The geographical coordinates of the location. See Coordinates. |
Coordinates
| Property | Type | Description |
|---|---|---|
| lat | float | The latitude of the location. |
| lon | float | The longitude of the location. |
DayTrip
| Property | Type | Description |
|---|---|---|
| dayTripId | UUID | The unique identifier for the day trip. |
| name | string | The name of the day trip. |
| description | string | A description of the day trip. |
| sightseeingDescription | string | A description of the sightseeing opportunities on the day trip. |
| images | array | An array of URLs for images of the day trip. |
| totalTripTimeMinutes | integer | The total duration of the day trip in minutes. |
| price | object | The pricing details for the day trip. See Price. |
| itineraryItems | array | An array of itinerary items for the day trip. See ItineraryItem. |
ItineraryItem
| Property | Type | Description |
|---|---|---|
| order | integer | The order of the itinerary item. |
| type | string | The type of the itinerary item. Can be edgeLocation or location. |
| location | object | The location of the itinerary item. See Location. |
Price
| Property | Type | Description |
|---|---|---|
| currency | string | The currency of the price. |
| perPassengerPrice | float | The price per passenger. |
| minPassengerCount | integer | The minimum number of passengers required for the day trip. |
| passengersCount | integer | The number of passengers for the booking. |
| totalPrice | float | The total price for the booking. |
PassengerDetails
| Property | Type | Description |
|---|---|---|
| adults | integer | The number of adult passengers. |
| children | array | An array of child passengers. |
| children.age | integer | The age of the child passenger. |
| children.childSeatType | string | The type of child seat required for the child passenger. |
LeadPassenger
| Property | Type | Description |
|---|---|---|
| firstName | string | The first name of the lead passenger. |
| lastName | string | The last name of the lead passenger. |
| phone | string | The phone number of the lead passenger. |
| string | The email address of the lead passenger. | |
| over18 | boolean | Whether the lead passenger is over 18 years of age. |
PickupLocation
| Property | Type | Description |
|---|---|---|
| lat | float | The latitude of the pickup location. |
| lon | float | The longitude of the pickup location. |
| address | string | The address of the pickup location. |
| note | string | A note for the driver about the pickup location. |
DayTripVehicle
| Property | Type | Description |
|---|---|---|
| type | string | The type of vehicle. |
| description | string | A description of the vehicle. |
| modelDescription | string | A description of the vehicle model. |
| image | string | A URL for an image of the vehicle. |
Frequently asked questions
For how many passengers can I book a trip?
On most routes we offer trips for 1-7 passengers. On some routes we offer trips for up to 10 passengers. If you need to book a trip for more passengers please create multiple bookings.
After receiving trip options, how much time do I have to book one of them?
Options are valid for up to 7 days or until the price changes due to increased demand. In such case you will need to repeat the search.
Can I cancel a booking created via the API?
Yes, you can cancel a booking if it's departure is more than 24 hours in the future - this threshold is a subject to change.
Once a booking is created, can it be cancelled or changed by Daytrip?
No, once a booking is created by calling our API, it is confirmed and guaranteed by Daytrip to be fulfilled. You do not need to subscribe to any booking status changes.
Does the Daytrip API handle payments?
No, the Daytrip API does not handle payments. You are responsible for collecting online payments from the customers. You are also responsible for any currency conversion for display purposes (currently the API will return prices in EUR or USD based on the country of the trip). Your company will be invoiced by Daytrip for the trips you book with us.
Is the amount of requests for the Daytrip API limited?
You can send up to 2000 requests per minute.
Change Log
- 2026-10-06: Added vehicle type
PremiumVanto the Trip API and Hourly Ride API Vehicle object. The Day Trips API returns the same vehicle aspremiumVan. - 2026-09-11: Trip API: added
over18to PassengerDetail as the way to confirm the lead passenger is an adult;birthdayis deprecated and only required whenover18is not sent. Responses now includeover18: truefor the lead passenger, matching the Hourly Ride API. - 2025-12-02: Added Hourly Ride API endpoints documentation.
- 2025-08-01: Added Day Trips API endpoints documentation.
- 2025-07-16: Updated base endpoint addresses with the new domain name.
- 2025-06-03: Added support for meeting positions in private trips.
- 2025-05-20: Introduced multi-vehicle trip options.
- 2025-04-02: Extended /search and /book endpoints to accept departure time in local time.
- 2025-03-28: Added modelDescription field to Vehicle object.
- 2025-01-20: Added the ability to search by airport code.
- 2024-12-10: Added timezone information to pickup and dropoff positions in the search response.
- 2024-09-09: Added the ability to search and book shared trips.
- 2024-05-24: Introduced endpoints to retrieve drivers assigned to trips and track drivers' positions.
- 2023-11-06: Added support for airport transfers.
- 2023-01-23: Initial version.
