Introduction
if need change locale pass to header "locale" with value "en" or "ua" or "pl
This documentation aims to provide all the information you need to work with our API.
Authenticating requests
To authenticate requests, include an Authorization header with the value "Bearer {YOUR_AUTH_KEY}".
All authenticated endpoints are marked with a requires authentication badge in the documentation below.
You can retrieve your token by visiting your dashboard and clicking Generate API token.
Bus flight
Bus flights
Get list of bus flights
requires authentication
Get list of bus flights
Example request:
curl --request GET \
--get "https://testapi.ticketbus365.com/integration-api/bus-flights?page=1&per_page=10&status=open&bus_route_number=UA+1234556&departure_date=2021-01-01&from_departure_point_id=1&to_departure_point_id=1&without_connecting=1&date_range[from]=2021-01-01&date_range[to]=2021-01-01&bus_route_id=1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://testapi.ticketbus365.com/integration-api/bus-flights"
);
const params = {
"page": "1",
"per_page": "10",
"status": "open",
"bus_route_number": "UA 1234556",
"departure_date": "2021-01-01",
"from_departure_point_id": "1",
"to_departure_point_id": "1",
"without_connecting": "1",
"date_range[from]": "2021-01-01",
"date_range[to]": "2021-01-01",
"bus_route_id": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": 22754,
"departure_date": "2026-08-26T08:30:00.000000Z",
"sale_end_time_before_departure": 60,
"driver_visibility_time_before_departure": 180,
"arrival_date": "2026-08-26T20:30:00.000000Z",
"hours_in_travel": 12,
"route": {
"id": 512,
"number": "LAT-87023639",
"name": "Brno - Wroclaw",
"ticket_hint": "Please arrive at the platform 20 minutes before departure.",
"translations": {
"name": {
"en": "Brno - Wroclaw",
"ua": "Brno - Wroclaw"
},
"ticket_hint": {
"en": "Please arrive at the platform 20 minutes before departure.",
"ua": "Please arrive at the platform 20 minutes before departure."
}
},
"sale_end_time_before_departure": 60,
"driver_visibility_time_before_departure": 180,
"status": "active",
"carrier_name": null,
"payment_time": 30,
"sale_depth": 45,
"flight_generation_depth": 60,
"number_of_seats": 52,
"seat_selection_allowed": true,
"seat_selection_not_allowed_date_from": "2027-02-18",
"seat_selection_not_allowed_date_to": "2027-02-25",
"seat_selection_availability": "online_payment",
"without_companion": true,
"without_companion_price": 12,
"min_price": [
{
"currency_id": 88,
"price": 63
}
],
"forbidden_sale_date_from": null,
"forbidden_sale_date_to": null,
"created_at": "2026-08-18T07:35:30.000000Z",
"updated_at": "2026-08-18T07:35:30.000000Z"
},
"status": "open",
"payment_time": 30,
"sale_depth": 45,
"number_of_seats": 52,
"carrier_name": null,
"seat_selection_allowed": true,
"seat_selection_not_allowed_date_from": "2026-08-24",
"seat_selection_not_allowed_date_to": "2026-08-25",
"seat_selection_availability": "online_payment",
"without_companion": true,
"min_price": [
{
"currency_id": 88,
"price": 51
}
],
"forbidden_sale_date_from": null,
"forbidden_sale_date_to": null,
"created_at": "2026-08-18T07:35:30.000000Z",
"updated_at": "2026-08-18T07:35:30.000000Z"
},
{
"id": 22755,
"departure_date": "2026-08-22T08:30:00.000000Z",
"sale_end_time_before_departure": 60,
"driver_visibility_time_before_departure": 180,
"arrival_date": "2026-08-22T20:30:00.000000Z",
"hours_in_travel": 12,
"route": {
"id": 514,
"number": "LAT-17783449",
"name": "Lviv - Bucharest",
"ticket_hint": "Please arrive at the platform 20 minutes before departure.",
"translations": {
"name": {
"en": "Lviv - Bucharest",
"ua": "Lviv - Bucharest"
},
"ticket_hint": {
"en": "Please arrive at the platform 20 minutes before departure.",
"ua": "Please arrive at the platform 20 minutes before departure."
}
},
"sale_end_time_before_departure": 60,
"driver_visibility_time_before_departure": 180,
"status": "active",
"carrier_name": null,
"payment_time": 30,
"sale_depth": 45,
"flight_generation_depth": 60,
"number_of_seats": 52,
"seat_selection_allowed": true,
"seat_selection_not_allowed_date_from": "2027-02-18",
"seat_selection_not_allowed_date_to": "2027-02-25",
"seat_selection_availability": "online_payment",
"without_companion": true,
"without_companion_price": 12,
"min_price": [
{
"currency_id": 88,
"price": 46
}
],
"forbidden_sale_date_from": null,
"forbidden_sale_date_to": null,
"created_at": "2026-08-18T07:35:31.000000Z",
"updated_at": "2026-08-18T07:35:31.000000Z"
},
"status": "open",
"payment_time": 30,
"sale_depth": 45,
"number_of_seats": 52,
"carrier_name": null,
"seat_selection_allowed": true,
"seat_selection_not_allowed_date_from": "2026-08-20",
"seat_selection_not_allowed_date_to": "2026-08-21",
"seat_selection_availability": "online_payment",
"without_companion": true,
"min_price": [
{
"currency_id": 88,
"price": 87
}
],
"forbidden_sale_date_from": null,
"forbidden_sale_date_to": null,
"created_at": "2026-08-18T07:35:31.000000Z",
"updated_at": "2026-08-18T07:35:31.000000Z"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "next",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 10,
"to": 2,
"total": 2
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Show bus flights
requires authentication
Get list of bus flights
Example request:
curl --request GET \
--get "https://testapi.ticketbus365.com/integration-api/bus-flights/207" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://testapi.ticketbus365.com/integration-api/bus-flights/207"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"id": 22756,
"departure_date": "2026-08-21T08:30:00.000000Z",
"sale_end_time_before_departure": 60,
"driver_visibility_time_before_departure": 180,
"arrival_date": "2026-08-21T20:30:00.000000Z",
"hours_in_travel": 12,
"route": {
"id": 516,
"number": "LAT-16040243",
"name": "Krakow - Lviv",
"ticket_hint": "Please arrive at the platform 20 minutes before departure.",
"translations": {
"name": {
"en": "Krakow - Lviv",
"ua": "Krakow - Lviv"
},
"ticket_hint": {
"en": "Please arrive at the platform 20 minutes before departure.",
"ua": "Please arrive at the platform 20 minutes before departure."
}
},
"sale_end_time_before_departure": 60,
"driver_visibility_time_before_departure": 180,
"status": "active",
"carrier_name": null,
"payment_time": 30,
"sale_depth": 45,
"flight_generation_depth": 60,
"number_of_seats": 52,
"seat_selection_allowed": true,
"seat_selection_not_allowed_date_from": "2027-02-18",
"seat_selection_not_allowed_date_to": "2027-02-25",
"seat_selection_availability": "online_payment",
"without_companion": true,
"without_companion_price": 12,
"min_price": [
{
"currency_id": 88,
"price": 73
}
],
"additional_price_settings": [
{
"id": 1961,
"name": "Early booking discount",
"percent": "10.00",
"period": "departure_date",
"date_from": "2026-08-19",
"date_to": "2026-09-01",
"is_active": true,
"bus_route_id": 516,
"created_at": "2026-08-18T07:35:32.000000Z",
"updated_at": "2026-08-18T07:35:32.000000Z"
}
],
"forbidden_sale_date_from": null,
"forbidden_sale_date_to": null,
"created_at": "2026-08-18T07:35:32.000000Z",
"updated_at": "2026-08-18T07:35:32.000000Z"
},
"bus": {
"id": 766,
"name": "Mercedes-Benz Sprinter",
"number": "AA 2643 zj",
"status": "active",
"created_at": "2026-08-18T07:35:32.000000Z",
"updated_at": "2026-08-18T07:35:32.000000Z"
},
"user": {
"id": 9465,
"first_name": "Natalia",
"last_name": "Kovalenko",
"middle_name": "Petrovych",
"full_name": "Natalia Kovalenko Petrovych",
"work_phone": null,
"gender": null,
"birthday": null,
"name": "Natalia Kovalenko",
"phone": "+380995098870",
"email": "hollie89@example.org",
"subscribe_to_newsletter": false,
"status": "active",
"need_change_password": false,
"percent_of_withdrawal": 0,
"percent_of_discount": 0,
"no_penalty_return_window_minutes": 0,
"send_sms_order_post_payment_link": true,
"send_email_notification_for_passenger": true,
"hide_transfer_details": false,
"created_at": "2026-08-18T07:35:32.000000Z",
"updated_at": "2026-08-18T07:35:32.000000Z"
},
"driver": {
"id": 9464,
"first_name": "Iryna",
"last_name": "Tkachenko",
"middle_name": "Petrovych",
"full_name": "Iryna Tkachenko Petrovych",
"work_phone": null,
"gender": null,
"birthday": null
},
"dispatcher": {
"id": 9466,
"first_name": "Andrii",
"last_name": "Kovalenko",
"middle_name": "Ivanovych",
"full_name": "Andrii Kovalenko Ivanovych",
"work_phone": null,
"gender": null,
"birthday": null
},
"status": "open",
"payment_time": 30,
"sale_depth": 45,
"number_of_seats": 52,
"carrier_name": null,
"occupiedSeats": [
{
"id": 420342,
"bus_flight_id": 22756,
"from_departure_point_id": 13999,
"to_departure_point_id": 14000,
"seat_number": 26,
"type": "reserved",
"created_at": "2026-08-18T07:35:33.000000Z",
"updated_at": "2026-08-18T07:35:33.000000Z"
}
],
"seat_selection_allowed": true,
"seat_selection_not_allowed_date_from": "2026-08-19",
"seat_selection_not_allowed_date_to": "2026-08-20",
"seat_selection_availability": "online_payment",
"without_companion": true,
"baggage_transportation_conditions": [
{
"id": 30243,
"name": "Additional suitcase",
"description": null,
"translations": {
"name": {
"en": "Additional suitcase",
"ua": "Additional suitcase"
},
"description": []
},
"prices": [
{
"currency_id": 88,
"price": 25
}
],
"created_at": "2026-08-18T07:35:32.000000Z",
"updated_at": "2026-08-18T07:35:32.000000Z"
}
],
"return_conditions": [
{
"id": 71572,
"departure_start": 48,
"departure_end": 24,
"retention_percentage": 10,
"created_at": "2026-08-18T07:35:32.000000Z",
"updated_at": "2026-08-18T07:35:32.000000Z"
}
],
"currencies": [
{
"id": 342,
"display_name": "RWF",
"code": "RWF",
"symbol": "RWF",
"is_active": true,
"created_at": "2026-08-18T07:35:32.000000Z",
"updated_at": "2026-08-18T07:35:32.000000Z"
}
],
"min_price": [
{
"currency_id": 88,
"price": 64
}
],
"prices": [
{
"id": 116742592,
"from_departure_point_id": 13996,
"to_departure_point_id": 13997,
"price": [
{
"amount": 78,
"currency_id": 88
}
],
"is_active": true,
"is_forbidden": false
}
],
"schedules": [
{
"id": 1885086,
"departure_point_id": 13998,
"departure_point": {
"id": 13998,
"name": "International Coach Terminal",
"translations": {
"name": {
"en": "International Coach Terminal",
"ua": "International Coach Terminal"
}
},
"city": {
"id": 8223,
"name": "Brno",
"slug": null,
"translations": {
"name": {
"en": "Brno",
"ua": "Brno"
}
},
"population": 2162078,
"lat": null,
"lng": null,
"number_of_bus_routes": 0,
"visibility": true,
"country_id": 9,
"created_at": "2026-08-18T07:35:32.000000Z",
"updated_at": "2026-08-18T07:35:32.000000Z"
},
"lat": "47.99337200",
"lng": "22.54694700",
"visibility": true,
"created_at": "2026-08-18T07:35:32.000000Z",
"updated_at": "2026-08-18T07:35:32.000000Z"
},
"arrival_time": "16:00",
"departure_time": "14:30",
"days_in_road": 0,
"platform": "P4",
"has_landing": true,
"has_disembarkation": true,
"is_connecting": false,
"is_connecting_start_endpoint": false,
"position": 5,
"sale_status": "open",
"is_active": true,
"has_transfer": false,
"maybe_transfer": false,
"hint": "Boarding starts 20 minutes before departure.",
"translations": {
"hint": {
"en": "Boarding starts 20 minutes before departure.",
"ua": "Boarding starts 20 minutes before departure."
}
},
"created_at": "2026-08-18T07:35:32.000000Z",
"updated_at": "2026-08-18T07:35:32.000000Z"
}
],
"forbidden_sale_date_from": null,
"forbidden_sale_date_to": null,
"payment_methods": [
{
"id": 79,
"name": "spot",
"display_name": "Pay at boarding",
"logo_path": "payment-methods/spot.svg",
"created_at": "2026-08-18T07:35:32.000000Z",
"updated_at": "2026-08-18T07:35:32.000000Z"
}
],
"carrier": {
"id": 286,
"name": "Baltic Coach",
"hotline_phone": null,
"edrpou": null,
"disclaimer": null,
"insurance_description": null,
"insurance_company_name": null,
"insurance_company_address": null,
"logo_url": null,
"insurance_logo_url": null,
"translations": {
"disclaimer": [],
"insurance_description": [],
"insurance_company_name": [],
"insurance_company_address": []
}
},
"created_at": "2026-08-18T07:35:32.000000Z",
"updated_at": "2026-08-18T07:35:32.000000Z"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Bus route
Bus routes
Get all bus routes
requires authentication
Get all bus routes
Example request:
curl --request GET \
--get "https://testapi.ticketbus365.com/integration-api/bus-routes?page=1&search=000+111&status=active&city_from_id=1&city_to_id=2&departure_date=2021-01-01&from_departure_point_id=1&to_departure_point_id=1&without_connecting=1&include_schedule=1&per_page=10" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://testapi.ticketbus365.com/integration-api/bus-routes"
);
const params = {
"page": "1",
"search": "000 111",
"status": "active",
"city_from_id": "1",
"city_to_id": "2",
"departure_date": "2021-01-01",
"from_departure_point_id": "1",
"to_departure_point_id": "1",
"without_connecting": "1",
"include_schedule": "1",
"per_page": "10",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": 508,
"number": "LAT-23279120",
"name": "Berlin - Wroclaw",
"ticket_hint": "Please arrive at the platform 20 minutes before departure.",
"translations": {
"name": {
"en": "Berlin - Wroclaw",
"ua": "Berlin - Wroclaw"
},
"ticket_hint": {
"en": "Please arrive at the platform 20 minutes before departure.",
"ua": "Please arrive at the platform 20 minutes before departure."
}
},
"sale_end_time_before_departure": 60,
"driver_visibility_time_before_departure": 180,
"status": "active",
"city_from": {
"id": 8194,
"name": "Berlin",
"slug": null,
"translations": {
"name": {
"en": "Berlin",
"ua": "Berlin"
}
},
"population": 1315786,
"lat": null,
"lng": null,
"number_of_bus_routes": 0,
"visibility": true,
"country_id": 8,
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
},
"city_to": {
"id": 8195,
"name": "Wroclaw",
"slug": null,
"translations": {
"name": {
"en": "Wroclaw",
"ua": "Wroclaw"
}
},
"population": 1252722,
"lat": null,
"lng": null,
"number_of_bus_routes": 0,
"visibility": true,
"country_id": 7,
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
},
"user": {
"id": 9412,
"first_name": "Iryna",
"last_name": "Melnyk",
"middle_name": "Mykhailivna",
"full_name": "Iryna Melnyk Mykhailivna",
"work_phone": null,
"gender": null,
"birthday": null,
"name": "Iryna Melnyk",
"phone": "+380882438304",
"email": "justyn.barrows@example.net",
"subscribe_to_newsletter": false,
"status": "active",
"need_change_password": false,
"percent_of_withdrawal": 0,
"percent_of_discount": 0,
"no_penalty_return_window_minutes": 0,
"send_sms_order_post_payment_link": true,
"send_email_notification_for_passenger": true,
"hide_transfer_details": false,
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
},
"carrier_name": null,
"payment_time": 30,
"sale_depth": 45,
"flight_generation_depth": 60,
"number_of_seats": 52,
"seat_selection_allowed": true,
"seat_selection_not_allowed_date_from": "2027-02-18",
"seat_selection_not_allowed_date_to": "2027-02-25",
"seat_selection_availability": "online_payment",
"without_companion": true,
"without_companion_price": 12,
"min_price": [
{
"currency_id": 88,
"price": 58
}
],
"forbidden_sale_date_from": null,
"forbidden_sale_date_to": null,
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
},
{
"id": 509,
"number": "LAT-02706662",
"name": "Bucharest - Prague",
"ticket_hint": "Please arrive at the platform 20 minutes before departure.",
"translations": {
"name": {
"en": "Bucharest - Prague",
"ua": "Bucharest - Prague"
},
"ticket_hint": {
"en": "Please arrive at the platform 20 minutes before departure.",
"ua": "Please arrive at the platform 20 minutes before departure."
}
},
"sale_end_time_before_departure": 60,
"driver_visibility_time_before_departure": 180,
"status": "active",
"city_from": {
"id": 8198,
"name": "Bucharest",
"slug": null,
"translations": {
"name": {
"en": "Bucharest",
"ua": "Bucharest"
}
},
"population": 846531,
"lat": null,
"lng": null,
"number_of_bus_routes": 0,
"visibility": true,
"country_id": 40,
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
},
"city_to": {
"id": 8199,
"name": "Prague",
"slug": null,
"translations": {
"name": {
"en": "Prague",
"ua": "Prague"
}
},
"population": 1043154,
"lat": null,
"lng": null,
"number_of_bus_routes": 0,
"visibility": true,
"country_id": 9,
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
},
"user": {
"id": 9417,
"first_name": "Andrii",
"last_name": "Bondarenko",
"middle_name": "Petrovych",
"full_name": "Andrii Bondarenko Petrovych",
"work_phone": null,
"gender": null,
"birthday": null,
"name": "Andrii Bondarenko",
"phone": "+380559225271",
"email": "wuckert.elody@example.com",
"subscribe_to_newsletter": false,
"status": "active",
"need_change_password": false,
"percent_of_withdrawal": 0,
"percent_of_discount": 0,
"no_penalty_return_window_minutes": 0,
"send_sms_order_post_payment_link": true,
"send_email_notification_for_passenger": true,
"hide_transfer_details": false,
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
},
"carrier_name": null,
"payment_time": 30,
"sale_depth": 45,
"flight_generation_depth": 60,
"number_of_seats": 52,
"seat_selection_allowed": true,
"seat_selection_not_allowed_date_from": "2027-02-18",
"seat_selection_not_allowed_date_to": "2027-02-25",
"seat_selection_availability": "online_payment",
"without_companion": true,
"without_companion_price": 12,
"min_price": [
{
"currency_id": 88,
"price": 94
}
],
"forbidden_sale_date_from": null,
"forbidden_sale_date_to": null,
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "next",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 10,
"to": 2,
"total": 2
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Show bus route
requires authentication
Get bus route
Example request:
curl --request GET \
--get "https://testapi.ticketbus365.com/integration-api/bus-routes/82" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://testapi.ticketbus365.com/integration-api/bus-routes/82"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"id": 510,
"number": "LAT-05008294",
"name": "Kyiv - Warsaw",
"ticket_hint": "Please arrive at the platform 20 minutes before departure.",
"translations": {
"name": {
"en": "Kyiv - Warsaw",
"ua": "Kyiv - Warsaw"
},
"ticket_hint": {
"en": "Please arrive at the platform 20 minutes before departure.",
"ua": "Please arrive at the platform 20 minutes before departure."
}
},
"sale_end_time_before_departure": 60,
"driver_visibility_time_before_departure": 180,
"status": "active",
"city_from": {
"id": 8202,
"name": "Kyiv",
"slug": null,
"translations": {
"name": {
"en": "Kyiv",
"ua": "Kyiv"
}
},
"population": 2800584,
"lat": null,
"lng": null,
"number_of_bus_routes": 0,
"visibility": true,
"country_id": 6,
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
},
"city_to": {
"id": 8203,
"name": "Warsaw",
"slug": null,
"translations": {
"name": {
"en": "Warsaw",
"ua": "Warsaw"
}
},
"population": 1866933,
"lat": null,
"lng": null,
"number_of_bus_routes": 0,
"visibility": true,
"country_id": 7,
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
},
"user": {
"id": 9422,
"first_name": "Andrii",
"last_name": "Shevchenko",
"middle_name": "Ivanovych",
"full_name": "Andrii Shevchenko Ivanovych",
"work_phone": null,
"gender": null,
"birthday": null,
"name": "Andrii Shevchenko",
"phone": "+380444465120",
"email": "tianna34@example.com",
"subscribe_to_newsletter": false,
"status": "active",
"need_change_password": false,
"percent_of_withdrawal": 0,
"percent_of_discount": 0,
"no_penalty_return_window_minutes": 0,
"send_sms_order_post_payment_link": true,
"send_email_notification_for_passenger": true,
"hide_transfer_details": false,
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
},
"bus": {
"id": 756,
"name": "Mercedes-Benz Sprinter",
"number": "AA 2252 df",
"status": "active",
"created_at": "2026-08-18T07:35:30.000000Z",
"updated_at": "2026-08-18T07:35:30.000000Z"
},
"driver": {
"id": 9424,
"first_name": "Iryna",
"last_name": "Tkachenko",
"middle_name": "Oleksandrivna",
"full_name": "Iryna Tkachenko Oleksandrivna",
"work_phone": null,
"gender": null,
"birthday": null,
"name": "Iryna Tkachenko",
"phone": "+380216939296",
"email": "estanton@example.net",
"subscribe_to_newsletter": false,
"status": "active",
"need_change_password": false,
"percent_of_withdrawal": 0,
"percent_of_discount": 0,
"no_penalty_return_window_minutes": 0,
"send_sms_order_post_payment_link": true,
"send_email_notification_for_passenger": true,
"hide_transfer_details": false,
"created_at": "2026-08-18T07:35:30.000000Z",
"updated_at": "2026-08-18T07:35:30.000000Z"
},
"dispatcher": {
"id": 9425,
"first_name": "Maksym",
"last_name": "Bondarenko",
"middle_name": "Ivanovych",
"full_name": "Maksym Bondarenko Ivanovych",
"work_phone": null,
"gender": null,
"birthday": null,
"name": "Maksym Bondarenko",
"phone": "+380146010373",
"email": "delphine96@example.net",
"subscribe_to_newsletter": false,
"status": "active",
"need_change_password": false,
"percent_of_withdrawal": 0,
"percent_of_discount": 0,
"no_penalty_return_window_minutes": 0,
"send_sms_order_post_payment_link": true,
"send_email_notification_for_passenger": true,
"hide_transfer_details": false,
"created_at": "2026-08-18T07:35:30.000000Z",
"updated_at": "2026-08-18T07:35:30.000000Z"
},
"carrier_name": null,
"payment_time": 30,
"sale_depth": 45,
"flight_generation_depth": 60,
"number_of_seats": 52,
"seat_selection_allowed": true,
"seat_selection_not_allowed_date_from": "2027-02-18",
"seat_selection_not_allowed_date_to": "2027-02-25",
"seat_selection_availability": "online_payment",
"without_companion": true,
"without_companion_price": 12,
"baggage_transportation_conditions": [
{
"id": 30242,
"name": "Additional suitcase",
"description": null,
"translations": {
"name": {
"en": "Additional suitcase",
"ua": "Additional suitcase"
},
"description": []
},
"prices": [
{
"currency_id": 88,
"price": 25
}
],
"created_at": "2026-08-18T07:35:30.000000Z",
"updated_at": "2026-08-18T07:35:30.000000Z"
}
],
"return_conditions": [
{
"id": 71571,
"departure_start": 48,
"departure_end": 24,
"retention_percentage": 50,
"created_at": "2026-08-18T07:35:30.000000Z",
"updated_at": "2026-08-18T07:35:30.000000Z"
}
],
"currencies": [
{
"id": 341,
"display_name": "TTD",
"code": "TTD",
"symbol": "TTD",
"is_active": true,
"created_at": "2026-08-18T07:35:30.000000Z",
"updated_at": "2026-08-18T07:35:30.000000Z"
}
],
"min_price": [
{
"currency_id": 88,
"price": 88
}
],
"seat_selection_blocks": [
{
"id": 37497,
"entity_type": "bus_route",
"entity_id": 510,
"from_departure_point_id": 13994,
"to_departure_point_id": 13995,
"from_position": 0,
"to_position": 1,
"seat_number": 31,
"created_at": "2026-08-18T07:35:30.000000Z",
"updated_at": "2026-08-18T07:35:30.000000Z"
}
],
"forbidden_sale_date_from": null,
"forbidden_sale_date_to": null,
"payment_methods": [
{
"id": 78,
"name": "stripe",
"display_name": "Card payment",
"logo_path": "payment-methods/stripe.svg",
"created_at": "2026-08-18T07:35:30.000000Z",
"updated_at": "2026-08-18T07:35:30.000000Z"
}
],
"notification_settings": {
"notify_about_ticket_sales": true,
"notify_about_ticket_sales_email": "daryl.baumbach@beer.info",
"notify_about_ticket_refund": false,
"notify_about_ticket_refund_email": "garrison49@harber.com",
"notify_before_departure": true,
"notify_before_departure_email": "skiles.camren@ortiz.com",
"notify_before_departure_time": 206
},
"transfer_types": [
{
"id": 23,
"bus_route_id": 510,
"name": "City center transfer",
"is_active": true,
"created_at": "2026-08-18T07:35:30.000000Z",
"updated_at": "2026-08-18T07:35:30.000000Z"
}
],
"carrier": {
"id": 277,
"name": "EuroBus Express",
"hotline_phone": null,
"edrpou": null,
"disclaimer": null,
"insurance_description": null,
"insurance_company_name": null,
"insurance_company_address": null,
"logo_url": null,
"insurance_logo_url": null,
"translations": {
"disclaimer": [],
"insurance_description": [],
"insurance_company_name": [],
"insurance_company_address": []
}
},
"created_at": "2026-08-18T07:35:30.000000Z",
"updated_at": "2026-08-18T07:35:30.000000Z"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
External tickets
External source tickets
Search external bus flights tickets
Example request:
curl --request GET \
--get "https://testapi.ticketbus365.com/integration-api/external-tickets?from_departure_point_id=6&to_departure_point_id=4&from_departure_city_id=5&to_departure_city_id=3&departure_date=velit&number_of_passengers=20¤cy_code=qui"const url = new URL(
"https://testapi.ticketbus365.com/integration-api/external-tickets"
);
const params = {
"from_departure_point_id": "6",
"to_departure_point_id": "4",
"from_departure_city_id": "5",
"to_departure_city_id": "3",
"departure_date": "velit",
"number_of_passengers": "20",
"currency_code": "qui",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
fetch(url, {
method: "GET",
}).then(response => response.json());Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 1000
x-ratelimit-remaining: 997
access-control-allow-origin: *
{
"message": "Unauthorized"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Buy external bus flight tickets
Example request:
curl --request POST \
"https://testapi.ticketbus365.com/integration-api/external-tickets/buy" \
--header "Content-Type: application/json" \
--data "{
\"trip_data_bundle\": \"ut\",
\"passengers\": [
\"dignissimos\"
],
\"payment_method_id\": 13
}"
const url = new URL(
"https://testapi.ticketbus365.com/integration-api/external-tickets/buy"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"trip_data_bundle": "ut",
"passengers": [
"dignissimos"
],
"payment_method_id": 13
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 1000
x-ratelimit-remaining: 996
access-control-allow-origin: *
{
"message": "Unauthorized"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get external bus flight details
Example request:
curl --request POST \
"https://testapi.ticketbus365.com/integration-api/external-tickets" \
--header "Content-Type: application/json" \
--data "{
\"data_bundle\": \"et\"
}"
const url = new URL(
"https://testapi.ticketbus365.com/integration-api/external-tickets"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"data_bundle": "et"
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 1000
x-ratelimit-remaining: 995
access-control-allow-origin: *
{
"message": "Unauthorized"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Geo
Geo data
Get a country
requires authentication
Example request:
curl --request GET \
--get "https://testapi.ticketbus365.com/integration-api/countries/1" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://testapi.ticketbus365.com/integration-api/countries/1"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"id": 56,
"name": "Saint Helena",
"translations": {
"name": {
"en": "Saint Helena",
"ua": "Saint Helena"
}
},
"code": "DJ",
"timezone": "Europe/Kiev",
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get all cities
requires authentication
Example request:
curl --request GET \
--get "https://testapi.ticketbus365.com/integration-api/cities?page=1&search=New+York&country=1&per_page=10" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://testapi.ticketbus365.com/integration-api/cities"
);
const params = {
"page": "1",
"search": "New York",
"country": "1",
"per_page": "10",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": 8178,
"name": "Prague",
"slug": null,
"translations": {
"name": {
"en": "Prague",
"ua": "Prague"
}
},
"departure_points": [
{
"id": 13987,
"name": "Airport Bus Terminal",
"translations": {
"name": {
"en": "Airport Bus Terminal",
"ua": "Airport Bus Terminal"
}
},
"lat": "48.15579100",
"lng": "28.07611100",
"visibility": true,
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
}
],
"country": {
"id": 57,
"name": "Spain",
"translations": {
"name": {
"en": "Spain",
"ua": "Spain"
}
},
"code": "SM",
"timezone": "Europe/Kiev",
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
},
"population": 2965795,
"lat": null,
"lng": null,
"number_of_bus_routes": 0,
"visibility": true,
"country_id": 57,
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
},
{
"id": 8180,
"name": "Kyiv",
"slug": null,
"translations": {
"name": {
"en": "Kyiv",
"ua": "Kyiv"
}
},
"departure_points": [
{
"id": 13988,
"name": "International Coach Terminal",
"translations": {
"name": {
"en": "International Coach Terminal",
"ua": "International Coach Terminal"
}
},
"lat": "49.00596800",
"lng": "20.20107700",
"visibility": true,
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
}
],
"country": {
"id": 58,
"name": "Micronesia",
"translations": {
"name": {
"en": "Micronesia",
"ua": "Micronesia"
}
},
"code": "TG",
"timezone": "Europe/Kiev",
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
},
"population": 2427350,
"lat": null,
"lng": null,
"number_of_bus_routes": 0,
"visibility": true,
"country_id": 58,
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "next",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 10,
"to": 2,
"total": 2
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Search cities (new)
requires authentication
Example request:
curl --request GET \
--get "https://testapi.ticketbus365.com/integration-api/cities/search?query=New+York" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://testapi.ticketbus365.com/integration-api/cities/search"
);
const params = {
"query": "New York",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": 8182,
"name": "Prague",
"slug": null,
"translations": {
"name": {
"en": "Prague",
"ua": "Prague"
}
},
"departure_points": [
{
"id": 13989,
"name": "International Coach Terminal",
"translations": {
"name": {
"en": "International Coach Terminal",
"ua": "International Coach Terminal"
}
},
"lat": "43.99274100",
"lng": "29.14924500",
"visibility": true,
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
}
],
"country": {
"id": 59,
"name": "Gabon",
"translations": {
"name": {
"en": "Gabon",
"ua": "Gabon"
}
},
"code": "UY",
"timezone": "Europe/Kiev",
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
},
"population": 1551556,
"lat": null,
"lng": null,
"number_of_bus_routes": 0,
"visibility": true,
"country_id": 59,
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=2",
"prev": null,
"next": "/?page=2"
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 2,
"links": [
{
"url": null,
"label": "previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": "/?page=2",
"label": "2",
"page": 2,
"active": false
},
{
"url": "/?page=2",
"label": "next",
"page": 2,
"active": false
}
],
"path": "/",
"per_page": 1,
"to": 1,
"total": 2
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get a city
requires authentication
Example request:
curl --request GET \
--get "https://testapi.ticketbus365.com/integration-api/cities/267" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://testapi.ticketbus365.com/integration-api/cities/267"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 1000
x-ratelimit-remaining: 998
access-control-allow-origin: *
{
"message": "Unauthorized"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get all departure points
requires authentication
Example request:
curl --request GET \
--get "https://testapi.ticketbus365.com/integration-api/departure-points?page=1&search=New+York&city=1&per_page=10" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://testapi.ticketbus365.com/integration-api/departure-points"
);
const params = {
"page": "1",
"search": "New York",
"city": "1",
"per_page": "10",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": 13991,
"name": "Main Railway Station",
"translations": {
"name": {
"en": "Main Railway Station",
"ua": "Main Railway Station"
}
},
"city": {
"id": 8187,
"name": "Krakow",
"slug": null,
"translations": {
"name": {
"en": "Krakow",
"ua": "Krakow"
}
},
"population": 1620497,
"lat": null,
"lng": null,
"number_of_bus_routes": 0,
"visibility": true,
"country_id": 7,
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
},
"lat": "41.70069000",
"lng": "28.10258100",
"visibility": true,
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
},
{
"id": 13992,
"name": "West Bus Terminal",
"translations": {
"name": {
"en": "West Bus Terminal",
"ua": "West Bus Terminal"
}
},
"city": {
"id": 8189,
"name": "Odesa",
"slug": null,
"translations": {
"name": {
"en": "Odesa",
"ua": "Odesa"
}
},
"population": 1946257,
"lat": null,
"lng": null,
"number_of_bus_routes": 0,
"visibility": true,
"country_id": 6,
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
},
"lat": "43.38536300",
"lng": "24.45050600",
"visibility": true,
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "next",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 10,
"to": 2,
"total": 2
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get a departure point
requires authentication
Example request:
curl --request GET \
--get "https://testapi.ticketbus365.com/integration-api/departure-points/87" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://testapi.ticketbus365.com/integration-api/departure-points/87"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (200):
{
"data": {
"id": 13993,
"name": "International Coach Terminal",
"translations": {
"name": {
"en": "International Coach Terminal",
"ua": "International Coach Terminal"
}
},
"city": {
"id": 8191,
"name": "Kyiv",
"slug": null,
"translations": {
"name": {
"en": "Kyiv",
"ua": "Kyiv"
}
},
"population": 2741859,
"lat": null,
"lng": null,
"number_of_bus_routes": 0,
"visibility": true,
"country_id": 6,
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
},
"lat": "46.35402300",
"lng": "22.74454000",
"visibility": true,
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Orders
Show order
Example request:
curl --request GET \
--get "https://testapi.ticketbus365.com/integration-api/orders/18"const url = new URL(
"https://testapi.ticketbus365.com/integration-api/orders/18"
);
fetch(url, {
method: "GET",
}).then(response => response.json());Example response (200):
{
"data": {
"id": 33326,
"uuid": null,
"public_id": "sZQO8jaGonyxSfH",
"paid_at": null,
"tickets": [
{
"id": 37529,
"type": "internal",
"target_departure_date": "2026-09-06T08:30:00.000000Z",
"target_arrival_date": "2026-09-06T20:30:00.000000Z",
"target_minutes_in_travel": 720,
"public_id": "LgsbpHOn63VwWUc",
"data_for_qr_code": "LgsbpHOn63VwWUc",
"price": "37.53",
"price_adjustment_percent": "0.00",
"order_id": 33326,
"first_name": "Natalia",
"last_name": "Shevchenko",
"phone": "+380306116650",
"email": "nikolaus.estella@example.org",
"birthday": "2000-12-09",
"passenger_type": "adult",
"departure_date": "2026-09-06T08:30:00.000000Z",
"bus_flight_id": 22771,
"canceled_at": null,
"cancel_comment": null,
"status": "pending",
"seat_change_allowed": true,
"comment": "Window seat preferred.",
"is_processed": false,
"external_route_name": null,
"external_ticket_id": null,
"external_discount_name": null,
"external_from_departure_point_name": null,
"external_to_departure_point_name": null,
"is_external": false,
"created_at": "2026-08-18T07:35:40.000000Z",
"updated_at": "2026-08-18T07:35:40.000000Z"
}
],
"user": {
"id": 9610,
"first_name": "Natalia",
"last_name": "Kravchenko",
"middle_name": "Petrovych",
"full_name": "Natalia Kravchenko Petrovych",
"work_phone": null,
"gender": null,
"birthday": null,
"name": "Natalia Kravchenko",
"phone": "+380672808963",
"email": "samson.hyatt@example.net",
"subscribe_to_newsletter": false,
"status": "active",
"need_change_password": false,
"percent_of_withdrawal": 0,
"percent_of_discount": 0,
"no_penalty_return_window_minutes": 0,
"send_sms_order_post_payment_link": true,
"send_email_notification_for_passenger": true,
"hide_transfer_details": false,
"created_at": "2026-08-18T07:35:40.000000Z",
"updated_at": "2026-08-18T07:35:40.000000Z"
},
"agent_id": null,
"currency": {
"id": 344,
"display_name": "BYN",
"code": "BYN",
"symbol": "BYN",
"is_active": true,
"created_at": "2026-08-18T07:35:40.000000Z",
"updated_at": "2026-08-18T07:35:40.000000Z"
},
"status": "pending",
"total_price": "80.13",
"payment_on_the_spot": false,
"order_group_id": null,
"direction": "outbound",
"data_source": null,
"expired_at": null,
"created_at": "2026-08-18T07:35:40.000000Z",
"updated_at": "2026-08-18T07:35:40.000000Z"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Download pdf of order tickets
Example request:
curl --request GET \
--get "https://testapi.ticketbus365.com/integration-api/orders/18/download-tickets" \
--header "Content-Type: application/json" \
--data "{
\"format\": \"pdf\"
}"
const url = new URL(
"https://testapi.ticketbus365.com/integration-api/orders/18/download-tickets"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"format": "pdf"
};
fetch(url, {
method: "GET",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 1000
x-ratelimit-remaining: 993
access-control-allow-origin: *
{
"message": "Unauthorized"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Passengers
Passengers
Cancel ticket
Cancel ticket
Example request:
curl --request PATCH \
"https://testapi.ticketbus365.com/integration-api/cancel-ticket/quisquam" \
--header "Content-Type: application/json" \
--data "{
\"cancel_reason_id\": 1,
\"cancel_comment\": \"Comment\",
\"clear_occupied_seats\": true
}"
const url = new URL(
"https://testapi.ticketbus365.com/integration-api/cancel-ticket/quisquam"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"cancel_reason_id": 1,
"cancel_comment": "Comment",
"clear_occupied_seats": true
};
fetch(url, {
method: "PATCH",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"data": {
"id": 37525,
"type": "internal",
"target_departure_date": "2026-08-30T08:30:00.000000Z",
"target_arrival_date": "2026-08-30T20:30:00.000000Z",
"target_minutes_in_travel": 720,
"public_id": "eWZW6l8wVqSMWtF",
"data_for_qr_code": "eWZW6l8wVqSMWtF",
"price": "55.87",
"price_adjustment_percent": "0.00",
"order_id": 33322,
"first_name": "Olena",
"last_name": "Bondarenko",
"phone": "+380006400134",
"email": "rosella.larson@example.org",
"birthday": "1997-04-24",
"passenger_type": "adult",
"departure_date": "2026-08-30T08:30:00.000000Z",
"bus_flight_id": 22766,
"canceled_at": null,
"cancel_comment": null,
"status": "pending",
"seat_change_allowed": true,
"comment": "Window seat preferred.",
"is_processed": false,
"external_route_name": null,
"external_ticket_id": null,
"external_discount_name": null,
"external_from_departure_point_name": null,
"external_to_departure_point_name": null,
"is_external": false,
"created_at": "2026-08-18T07:35:37.000000Z",
"updated_at": "2026-08-18T07:35:37.000000Z"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Accept partially payment
Accept partially payment
Example request:
curl --request POST \
"https://testapi.ticketbus365.com/integration-api/accept-partially-payment/voluptates" \
--header "Content-Type: application/json" \
--data "{
\"amount\": 100,
\"payment_method_id\": 1
}"
const url = new URL(
"https://testapi.ticketbus365.com/integration-api/accept-partially-payment/voluptates"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"amount": 100,
"payment_method_id": 1
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"data": {
"id": 37527,
"type": "internal",
"target_departure_date": "2026-08-30T08:30:00.000000Z",
"target_arrival_date": "2026-08-30T20:30:00.000000Z",
"target_minutes_in_travel": 720,
"public_id": "GeQgUcnUYI5A2XB",
"data_for_qr_code": "GeQgUcnUYI5A2XB",
"price": "60.66",
"price_adjustment_percent": "0.00",
"order_id": 33324,
"first_name": "Natalia",
"last_name": "Melnyk",
"phone": "+380649838189",
"email": "una42@example.org",
"birthday": "2001-12-03",
"passenger_type": "adult",
"departure_date": "2026-08-30T08:30:00.000000Z",
"bus_flight_id": 22769,
"canceled_at": null,
"cancel_comment": null,
"status": "pending",
"seat_change_allowed": true,
"comment": "Window seat preferred.",
"prepayments": [
{
"id": 10616,
"ticket_id": 37527,
"currency_id": 88,
"payment_method_id": 83,
"amount": 14.72,
"created_at": "2026-08-18T07:35:39.000000Z",
"updated_at": "2026-08-18T07:35:39.000000Z"
}
],
"prepayments_amount": 14.72,
"is_processed": false,
"external_route_name": null,
"external_ticket_id": null,
"external_discount_name": null,
"external_from_departure_point_name": null,
"external_to_departure_point_name": null,
"is_external": false,
"created_at": "2026-08-18T07:35:39.000000Z",
"updated_at": "2026-08-18T07:35:39.000000Z"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Return ticket
Return ticket
Example request:
curl --request PATCH \
"https://testapi.ticketbus365.com/integration-api/return-ticket/aut"const url = new URL(
"https://testapi.ticketbus365.com/integration-api/return-ticket/aut"
);
fetch(url, {
method: "PATCH",
}).then(response => response.json());Example response (200):
{
"data": {
"id": 37528,
"type": "internal",
"target_departure_date": "2026-08-26T08:30:00.000000Z",
"target_arrival_date": "2026-08-26T20:30:00.000000Z",
"target_minutes_in_travel": 720,
"public_id": "R3bTeNhrwyV9tK2",
"data_for_qr_code": "R3bTeNhrwyV9tK2",
"price": "36.50",
"price_adjustment_percent": "0.00",
"order_id": 33325,
"first_name": "Serhii",
"last_name": "Melnyk",
"phone": "+380887834049",
"email": "sadye.ratke@example.com",
"birthday": "1984-08-24",
"passenger_type": "adult",
"departure_date": "2026-08-26T08:30:00.000000Z",
"bus_flight_id": 22770,
"canceled_at": null,
"cancel_comment": null,
"status": "pending",
"seat_change_allowed": true,
"comment": "Window seat preferred.",
"is_processed": false,
"external_route_name": null,
"external_ticket_id": null,
"external_discount_name": null,
"external_from_departure_point_name": null,
"external_to_departure_point_name": null,
"is_external": false,
"created_at": "2026-08-18T07:35:39.000000Z",
"updated_at": "2026-08-18T07:35:39.000000Z",
"penalty": 100
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Profile
Profile
Show profile
requires authentication
Show profile
Example request:
curl --request GET \
--get "https://testapi.ticketbus365.com/integration-api/profile" \
--header "Authorization: Bearer {YOUR_AUTH_KEY}"const url = new URL(
"https://testapi.ticketbus365.com/integration-api/profile"
);
const headers = {
"Authorization": "Bearer {YOUR_AUTH_KEY}",
"Accept": "application/json",
};
fetch(url, {
method: "GET",
headers,
}).then(response => response.json());Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 1000
x-ratelimit-remaining: 999
access-control-allow-origin: *
{
"message": "Unauthorized"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
System settings
System Setting
Get all currency
Get all currency
Example request:
curl --request GET \
--get "https://testapi.ticketbus365.com/integration-api/currencies"const url = new URL(
"https://testapi.ticketbus365.com/integration-api/currencies"
);
fetch(url, {
method: "GET",
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": 339,
"display_name": "NIO",
"code": "NIO",
"symbol": "NIO",
"is_active": true,
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
},
{
"id": 340,
"display_name": "CUP",
"code": "CUP",
"symbol": "CUP",
"is_active": true,
"created_at": "2026-08-18T07:35:29.000000Z",
"updated_at": "2026-08-18T07:35:29.000000Z"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get all cancel reasons
Example request:
curl --request GET \
--get "https://testapi.ticketbus365.com/integration-api/cancel-reasons?per_page=10"const url = new URL(
"https://testapi.ticketbus365.com/integration-api/cancel-reasons"
);
const params = {
"per_page": "10",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
fetch(url, {
method: "GET",
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": 38,
"name": "Duplicate booking",
"slug": null
},
{
"id": 39,
"name": "Payment was not completed",
"slug": null
}
],
"links": {
"first": "/?page=1",
"last": "/?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"links": [
{
"url": null,
"label": "previous",
"page": null,
"active": false
},
{
"url": "/?page=1",
"label": "1",
"page": 1,
"active": true
},
{
"url": null,
"label": "next",
"page": null,
"active": false
}
],
"path": "/",
"per_page": 10,
"to": 2,
"total": 2
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get all payment methods
Get all payment methods
Example request:
curl --request GET \
--get "https://testapi.ticketbus365.com/integration-api/payment-methods"const url = new URL(
"https://testapi.ticketbus365.com/integration-api/payment-methods"
);
fetch(url, {
method: "GET",
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": 84,
"name": "liqpay",
"display_name": "LiqPay",
"logo_path": "payment-methods/liqpay.svg",
"created_at": "2026-08-18T07:35:40.000000Z",
"updated_at": "2026-08-18T07:35:40.000000Z"
},
{
"id": 85,
"name": "liqpay",
"display_name": "LiqPay",
"logo_path": "payment-methods/liqpay.svg",
"created_at": "2026-08-18T07:35:40.000000Z",
"updated_at": "2026-08-18T07:35:40.000000Z"
}
]
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Tickets
Tickets
Search free tickets
Search free tickets
Example request:
curl --request GET \
--get "https://testapi.ticketbus365.com/integration-api/tickets?from_city_id=1&to_city_id=2&from_departure_point_id=1&to_departure_point_id=2&departure_date=2021-10-10&date_range[from]=2021-10-10&date_range[to]=2021-10-20&number_of_passengers=1&return_date=2021-10-10&bus_route_id=1"const url = new URL(
"https://testapi.ticketbus365.com/integration-api/tickets"
);
const params = {
"from_city_id": "1",
"to_city_id": "2",
"from_departure_point_id": "1",
"to_departure_point_id": "2",
"departure_date": "2021-10-10",
"date_range[from]": "2021-10-10",
"date_range[to]": "2021-10-20",
"number_of_passengers": "1",
"return_date": "2021-10-10",
"bus_route_id": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
fetch(url, {
method: "GET",
}).then(response => response.json());Example response (200):
{
"data": [
{
"id": 22759,
"target_departure_date": null,
"target_arrival_date": null,
"target_minutes_in_travel": null,
"target_from_departure_point_id": 0,
"target_to_departure_point_id": 0,
"sale_end_time_before_departure": 60,
"status": "open",
"payment_time": 30,
"sale_depth": 45,
"number_of_seats": 52,
"route_name": "Wroclaw - Warsaw",
"route_number": "LAT-34679206",
"route_ticket_hint": "Please arrive at the platform 20 minutes before departure.",
"carrier_name": "LAT Lines",
"seat_selection_allowed": true,
"seat_selection_not_allowed_date_from": "2026-08-23T00:00:00.000000Z",
"seat_selection_not_allowed_date_to": "2026-08-24T00:00:00.000000Z",
"seat_selection_availability": "online_payment",
"without_companion": true,
"without_companion_price_percent": 12,
"selected_seats_prices": null,
"bus": {
"id": 773,
"name": "Neoplan Tourliner",
"number": "AA 3829 gw",
"status": "active",
"schema": {
"id": 860,
"name": "Neoplan Tourliner 56 seats",
"mark": "Mercedes-Benz",
"model": "Sprinter",
"number_of_seats": 56,
"number_of_floors": 1,
"rows": 14,
"columns": 4,
"items": [
{
"id": 40661,
"type": "seat",
"name": "Seat 1",
"translations": {
"name": {
"en": "Seat 1"
}
},
"seat_number": 1,
"row_number": 1,
"column_number": 1,
"floor_number": 1
},
{
"id": 40662,
"type": "seat",
"name": "Seat 2",
"translations": {
"name": {
"en": "Seat 2"
}
},
"seat_number": 2,
"row_number": 1,
"column_number": 2,
"floor_number": 1
},
{
"id": 40663,
"type": "seat",
"name": "Seat 3",
"translations": {
"name": {
"en": "Seat 3"
}
},
"seat_number": 3,
"row_number": 1,
"column_number": 3,
"floor_number": 1
},
{
"id": 40664,
"type": "seat",
"name": "Seat 4",
"translations": {
"name": {
"en": "Seat 4"
}
},
"seat_number": 4,
"row_number": 1,
"column_number": 4,
"floor_number": 1
},
{
"id": 40665,
"type": "seat",
"name": "Seat 5",
"translations": {
"name": {
"en": "Seat 5"
}
},
"seat_number": 5,
"row_number": 2,
"column_number": 1,
"floor_number": 1
},
{
"id": 40666,
"type": "seat",
"name": "Seat 6",
"translations": {
"name": {
"en": "Seat 6"
}
},
"seat_number": 6,
"row_number": 2,
"column_number": 2,
"floor_number": 1
},
{
"id": 40667,
"type": "seat",
"name": "Seat 7",
"translations": {
"name": {
"en": "Seat 7"
}
},
"seat_number": 7,
"row_number": 2,
"column_number": 3,
"floor_number": 1
},
{
"id": 40668,
"type": "seat",
"name": "Seat 8",
"translations": {
"name": {
"en": "Seat 8"
}
},
"seat_number": 8,
"row_number": 2,
"column_number": 4,
"floor_number": 1
},
{
"id": 40669,
"type": "seat",
"name": "Seat 9",
"translations": {
"name": {
"en": "Seat 9"
}
},
"seat_number": 9,
"row_number": 3,
"column_number": 1,
"floor_number": 1
},
{
"id": 40670,
"type": "seat",
"name": "Seat 10",
"translations": {
"name": {
"en": "Seat 10"
}
},
"seat_number": 10,
"row_number": 3,
"column_number": 2,
"floor_number": 1
},
{
"id": 40671,
"type": "seat",
"name": "Seat 11",
"translations": {
"name": {
"en": "Seat 11"
}
},
"seat_number": 11,
"row_number": 3,
"column_number": 3,
"floor_number": 1
},
{
"id": 40672,
"type": "seat",
"name": "Seat 12",
"translations": {
"name": {
"en": "Seat 12"
}
},
"seat_number": 12,
"row_number": 3,
"column_number": 4,
"floor_number": 1
},
{
"id": 40673,
"type": "seat",
"name": "Seat 13",
"translations": {
"name": {
"en": "Seat 13"
}
},
"seat_number": 13,
"row_number": 4,
"column_number": 1,
"floor_number": 1
},
{
"id": 40674,
"type": "seat",
"name": "Seat 14",
"translations": {
"name": {
"en": "Seat 14"
}
},
"seat_number": 14,
"row_number": 4,
"column_number": 2,
"floor_number": 1
},
{
"id": 40675,
"type": "seat",
"name": "Seat 15",
"translations": {
"name": {
"en": "Seat 15"
}
},
"seat_number": 15,
"row_number": 4,
"column_number": 3,
"floor_number": 1
},
{
"id": 40676,
"type": "seat",
"name": "Seat 16",
"translations": {
"name": {
"en": "Seat 16"
}
},
"seat_number": 16,
"row_number": 4,
"column_number": 4,
"floor_number": 1
},
{
"id": 40677,
"type": "seat",
"name": "Seat 17",
"translations": {
"name": {
"en": "Seat 17"
}
},
"seat_number": 17,
"row_number": 5,
"column_number": 1,
"floor_number": 1
},
{
"id": 40678,
"type": "seat",
"name": "Seat 18",
"translations": {
"name": {
"en": "Seat 18"
}
},
"seat_number": 18,
"row_number": 5,
"column_number": 2,
"floor_number": 1
},
{
"id": 40679,
"type": "seat",
"name": "Seat 19",
"translations": {
"name": {
"en": "Seat 19"
}
},
"seat_number": 19,
"row_number": 5,
"column_number": 3,
"floor_number": 1
},
{
"id": 40680,
"type": "seat",
"name": "Seat 20",
"translations": {
"name": {
"en": "Seat 20"
}
},
"seat_number": 20,
"row_number": 5,
"column_number": 4,
"floor_number": 1
},
{
"id": 40681,
"type": "seat",
"name": "Seat 21",
"translations": {
"name": {
"en": "Seat 21"
}
},
"seat_number": 21,
"row_number": 6,
"column_number": 1,
"floor_number": 1
},
{
"id": 40682,
"type": "seat",
"name": "Seat 22",
"translations": {
"name": {
"en": "Seat 22"
}
},
"seat_number": 22,
"row_number": 6,
"column_number": 2,
"floor_number": 1
},
{
"id": 40683,
"type": "seat",
"name": "Seat 23",
"translations": {
"name": {
"en": "Seat 23"
}
},
"seat_number": 23,
"row_number": 6,
"column_number": 3,
"floor_number": 1
},
{
"id": 40684,
"type": "seat",
"name": "Seat 24",
"translations": {
"name": {
"en": "Seat 24"
}
},
"seat_number": 24,
"row_number": 6,
"column_number": 4,
"floor_number": 1
},
{
"id": 40685,
"type": "seat",
"name": "Seat 25",
"translations": {
"name": {
"en": "Seat 25"
}
},
"seat_number": 25,
"row_number": 7,
"column_number": 1,
"floor_number": 1
},
{
"id": 40686,
"type": "seat",
"name": "Seat 26",
"translations": {
"name": {
"en": "Seat 26"
}
},
"seat_number": 26,
"row_number": 7,
"column_number": 2,
"floor_number": 1
},
{
"id": 40687,
"type": "seat",
"name": "Seat 27",
"translations": {
"name": {
"en": "Seat 27"
}
},
"seat_number": 27,
"row_number": 7,
"column_number": 3,
"floor_number": 1
},
{
"id": 40688,
"type": "seat",
"name": "Seat 28",
"translations": {
"name": {
"en": "Seat 28"
}
},
"seat_number": 28,
"row_number": 7,
"column_number": 4,
"floor_number": 1
},
{
"id": 40689,
"type": "seat",
"name": "Seat 29",
"translations": {
"name": {
"en": "Seat 29"
}
},
"seat_number": 29,
"row_number": 8,
"column_number": 1,
"floor_number": 1
},
{
"id": 40690,
"type": "seat",
"name": "Seat 30",
"translations": {
"name": {
"en": "Seat 30"
}
},
"seat_number": 30,
"row_number": 8,
"column_number": 2,
"floor_number": 1
},
{
"id": 40691,
"type": "seat",
"name": "Seat 31",
"translations": {
"name": {
"en": "Seat 31"
}
},
"seat_number": 31,
"row_number": 8,
"column_number": 3,
"floor_number": 1
},
{
"id": 40692,
"type": "seat",
"name": "Seat 32",
"translations": {
"name": {
"en": "Seat 32"
}
},
"seat_number": 32,
"row_number": 8,
"column_number": 4,
"floor_number": 1
},
{
"id": 40693,
"type": "seat",
"name": "Seat 33",
"translations": {
"name": {
"en": "Seat 33"
}
},
"seat_number": 33,
"row_number": 9,
"column_number": 1,
"floor_number": 1
},
{
"id": 40694,
"type": "seat",
"name": "Seat 34",
"translations": {
"name": {
"en": "Seat 34"
}
},
"seat_number": 34,
"row_number": 9,
"column_number": 2,
"floor_number": 1
},
{
"id": 40695,
"type": "seat",
"name": "Seat 35",
"translations": {
"name": {
"en": "Seat 35"
}
},
"seat_number": 35,
"row_number": 9,
"column_number": 3,
"floor_number": 1
},
{
"id": 40696,
"type": "seat",
"name": "Seat 36",
"translations": {
"name": {
"en": "Seat 36"
}
},
"seat_number": 36,
"row_number": 9,
"column_number": 4,
"floor_number": 1
},
{
"id": 40697,
"type": "seat",
"name": "Seat 37",
"translations": {
"name": {
"en": "Seat 37"
}
},
"seat_number": 37,
"row_number": 10,
"column_number": 1,
"floor_number": 1
},
{
"id": 40698,
"type": "seat",
"name": "Seat 38",
"translations": {
"name": {
"en": "Seat 38"
}
},
"seat_number": 38,
"row_number": 10,
"column_number": 2,
"floor_number": 1
},
{
"id": 40699,
"type": "seat",
"name": "Seat 39",
"translations": {
"name": {
"en": "Seat 39"
}
},
"seat_number": 39,
"row_number": 10,
"column_number": 3,
"floor_number": 1
},
{
"id": 40700,
"type": "seat",
"name": "Seat 40",
"translations": {
"name": {
"en": "Seat 40"
}
},
"seat_number": 40,
"row_number": 10,
"column_number": 4,
"floor_number": 1
},
{
"id": 40701,
"type": "seat",
"name": "Seat 41",
"translations": {
"name": {
"en": "Seat 41"
}
},
"seat_number": 41,
"row_number": 11,
"column_number": 1,
"floor_number": 1
},
{
"id": 40702,
"type": "seat",
"name": "Seat 42",
"translations": {
"name": {
"en": "Seat 42"
}
},
"seat_number": 42,
"row_number": 11,
"column_number": 2,
"floor_number": 1
},
{
"id": 40703,
"type": "seat",
"name": "Seat 43",
"translations": {
"name": {
"en": "Seat 43"
}
},
"seat_number": 43,
"row_number": 11,
"column_number": 3,
"floor_number": 1
},
{
"id": 40704,
"type": "seat",
"name": "Seat 44",
"translations": {
"name": {
"en": "Seat 44"
}
},
"seat_number": 44,
"row_number": 11,
"column_number": 4,
"floor_number": 1
},
{
"id": 40705,
"type": "seat",
"name": "Seat 45",
"translations": {
"name": {
"en": "Seat 45"
}
},
"seat_number": 45,
"row_number": 12,
"column_number": 1,
"floor_number": 1
},
{
"id": 40706,
"type": "seat",
"name": "Seat 46",
"translations": {
"name": {
"en": "Seat 46"
}
},
"seat_number": 46,
"row_number": 12,
"column_number": 2,
"floor_number": 1
},
{
"id": 40707,
"type": "seat",
"name": "Seat 47",
"translations": {
"name": {
"en": "Seat 47"
}
},
"seat_number": 47,
"row_number": 12,
"column_number": 3,
"floor_number": 1
},
{
"id": 40708,
"type": "seat",
"name": "Seat 48",
"translations": {
"name": {
"en": "Seat 48"
}
},
"seat_number": 48,
"row_number": 12,
"column_number": 4,
"floor_number": 1
},
{
"id": 40709,
"type": "seat",
"name": "Seat 49",
"translations": {
"name": {
"en": "Seat 49"
}
},
"seat_number": 49,
"row_number": 13,
"column_number": 1,
"floor_number": 1
},
{
"id": 40710,
"type": "seat",
"name": "Seat 50",
"translations": {
"name": {
"en": "Seat 50"
}
},
"seat_number": 50,
"row_number": 13,
"column_number": 2,
"floor_number": 1
},
{
"id": 40711,
"type": "seat",
"name": "Seat 51",
"translations": {
"name": {
"en": "Seat 51"
}
},
"seat_number": 51,
"row_number": 13,
"column_number": 3,
"floor_number": 1
},
{
"id": 40712,
"type": "seat",
"name": "Seat 52",
"translations": {
"name": {
"en": "Seat 52"
}
},
"seat_number": 52,
"row_number": 13,
"column_number": 4,
"floor_number": 1
},
{
"id": 40713,
"type": "seat",
"name": "Seat 53",
"translations": {
"name": {
"en": "Seat 53"
}
},
"seat_number": 53,
"row_number": 14,
"column_number": 1,
"floor_number": 1
},
{
"id": 40714,
"type": "seat",
"name": "Seat 54",
"translations": {
"name": {
"en": "Seat 54"
}
},
"seat_number": 54,
"row_number": 14,
"column_number": 2,
"floor_number": 1
},
{
"id": 40715,
"type": "seat",
"name": "Seat 55",
"translations": {
"name": {
"en": "Seat 55"
}
},
"seat_number": 55,
"row_number": 14,
"column_number": 3,
"floor_number": 1
},
{
"id": 40716,
"type": "seat",
"name": "Seat 56",
"translations": {
"name": {
"en": "Seat 56"
}
},
"seat_number": 56,
"row_number": 14,
"column_number": 4,
"floor_number": 1
}
],
"created_at": "2026-08-18T07:35:33.000000Z",
"updated_at": "2026-08-18T07:35:33.000000Z"
},
"services": [],
"images": [
{
"id": 36,
"name": "explicabo",
"file_name": "dqhokgmf.jpg",
"mime_type": "image/jpeg",
"size": 408463,
"url": "https://testapi.ticketbus365.com/storage/36/dqhokgmf.jpg",
"created_at": "2026-08-18T07:35:33.000000Z",
"updated_at": "2026-08-18T07:35:33.000000Z"
},
{
"id": 37,
"name": "media-librarybKGOMJ",
"file_name": "bus.jpg",
"mime_type": "text/plain",
"size": 18,
"url": "https://testapi.ticketbus365.com/storage/37/bus.jpg",
"created_at": "2026-08-18T07:35:33.000000Z",
"updated_at": "2026-08-18T07:35:33.000000Z"
}
],
"created_at": "2026-08-18T07:35:33.000000Z",
"updated_at": "2026-08-18T07:35:33.000000Z"
},
"driver": {
"id": 9496,
"first_name": "Serhii",
"last_name": "Kovalenko",
"middle_name": "Petrovych",
"full_name": "Serhii Kovalenko Petrovych",
"work_phone": null,
"gender": null,
"birthday": null
},
"dispatcher": {
"id": 9497,
"first_name": "Natalia",
"last_name": "Kovalenko",
"middle_name": "Petrovych",
"full_name": "Natalia Kovalenko Petrovych",
"work_phone": null,
"gender": null,
"birthday": null
},
"occupiedSeats": [
{
"id": 420343,
"bus_flight_id": 22759,
"from_departure_point_id": 14005,
"to_departure_point_id": 14004,
"seat_number": 34,
"type": "reserved",
"created_at": "2026-08-18T07:35:35.000000Z",
"updated_at": "2026-08-18T07:35:35.000000Z"
}
],
"baggage_transportation_conditions": [
{
"id": 30244,
"name": "Standard luggage up to 20 kg",
"description": null,
"translations": {
"name": {
"en": "Standard luggage up to 20 kg",
"ua": "Standard luggage up to 20 kg"
},
"description": []
},
"prices": [
{
"currency_id": 88,
"price": 10
}
],
"created_at": "2026-08-18T07:35:35.000000Z",
"updated_at": "2026-08-18T07:35:35.000000Z"
}
],
"schedules": [
{
"id": 1885089,
"departure_point_id": 14003,
"departure_point": {
"id": 14003,
"name": "International Coach Terminal",
"translations": {
"name": {
"en": "International Coach Terminal",
"ua": "International Coach Terminal"
}
},
"city": {
"id": 8235,
"name": "Wroclaw",
"slug": null,
"translations": {
"name": {
"en": "Wroclaw",
"ua": "Wroclaw"
}
},
"population": 2364022,
"lat": null,
"lng": null,
"number_of_bus_routes": 0,
"visibility": true,
"country_id": 7,
"created_at": "2026-08-18T07:35:34.000000Z",
"updated_at": "2026-08-18T07:35:34.000000Z"
},
"lat": "48.51521900",
"lng": "21.49118700",
"visibility": true,
"created_at": "2026-08-18T07:35:34.000000Z",
"updated_at": "2026-08-18T07:35:34.000000Z"
},
"arrival_time": "19:00",
"departure_time": "17:30",
"days_in_road": 0,
"platform": "P9",
"has_landing": true,
"has_disembarkation": true,
"is_connecting": false,
"is_connecting_start_endpoint": false,
"position": 0,
"sale_status": "open",
"is_active": true,
"has_transfer": false,
"maybe_transfer": false,
"hint": "Boarding starts 20 minutes before departure.",
"translations": {
"hint": {
"en": "Boarding starts 20 minutes before departure.",
"ua": "Boarding starts 20 minutes before departure."
}
},
"created_at": "2026-08-18T07:35:34.000000Z",
"updated_at": "2026-08-18T07:35:34.000000Z"
}
],
"payment_methods": [
{
"id": 80,
"name": "spot",
"display_name": "Pay at boarding",
"logo_path": "payment-methods/spot.svg",
"created_at": "2026-08-18T07:35:35.000000Z",
"updated_at": "2026-08-18T07:35:35.000000Z"
}
],
"discounts": [
{
"id": 216062,
"discount_type_id": 57,
"discount_type": {
"id": 57,
"name": "Child discount",
"translations": {
"name": {
"en": "Child discount",
"ua": "Child discount"
}
},
"created_at": "2026-08-18T07:35:35.000000Z",
"updated_at": "2026-08-18T07:35:35.000000Z"
},
"discount_value": 20,
"created_at": "2026-08-18T07:35:35.000000Z",
"updated_at": "2026-08-18T07:35:35.000000Z"
}
],
"carrier": {
"id": 292,
"name": "LAT Lines",
"hotline_phone": null,
"edrpou": null,
"disclaimer": null,
"insurance_description": null,
"insurance_company_name": null,
"insurance_company_address": null,
"logo_url": null,
"insurance_logo_url": null,
"translations": {
"disclaimer": [],
"insurance_description": [],
"insurance_company_name": [],
"insurance_company_address": []
}
},
"prices": [
{
"id": 116742593,
"from_departure_point_id": 14001,
"to_departure_point_id": 14002,
"price": [
{
"amount": 63,
"currency_id": 88
}
],
"is_active": true,
"is_forbidden": false
}
],
"created_at": "2026-08-18T07:35:33.000000Z",
"updated_at": "2026-08-18T07:35:33.000000Z"
},
{
"id": 22762,
"target_departure_date": null,
"target_arrival_date": null,
"target_minutes_in_travel": null,
"target_from_departure_point_id": 0,
"target_to_departure_point_id": 0,
"sale_end_time_before_departure": 60,
"status": "open",
"payment_time": 30,
"sale_depth": 45,
"number_of_seats": 52,
"route_name": "Chisinau - Kyiv",
"route_number": "LAT-75025322",
"route_ticket_hint": "Please arrive at the platform 20 minutes before departure.",
"carrier_name": "EuroBus Express",
"seat_selection_allowed": true,
"seat_selection_not_allowed_date_from": "2026-08-26T00:00:00.000000Z",
"seat_selection_not_allowed_date_to": "2026-08-27T00:00:00.000000Z",
"seat_selection_availability": "online_payment",
"without_companion": true,
"without_companion_price_percent": 12,
"selected_seats_prices": null,
"bus": {
"id": 780,
"name": "MAN Lion Coach",
"number": "AA 1447 ps",
"status": "active",
"schema": {
"id": 867,
"name": "MAN Lion Coach 52 seats",
"mark": "Setra",
"model": "S 515 HD",
"number_of_seats": 52,
"number_of_floors": 1,
"rows": 13,
"columns": 4,
"items": [
{
"id": 41041,
"type": "seat",
"name": "Seat 1",
"translations": {
"name": {
"en": "Seat 1"
}
},
"seat_number": 1,
"row_number": 1,
"column_number": 1,
"floor_number": 1
},
{
"id": 41042,
"type": "seat",
"name": "Seat 2",
"translations": {
"name": {
"en": "Seat 2"
}
},
"seat_number": 2,
"row_number": 1,
"column_number": 2,
"floor_number": 1
},
{
"id": 41043,
"type": "seat",
"name": "Seat 3",
"translations": {
"name": {
"en": "Seat 3"
}
},
"seat_number": 3,
"row_number": 1,
"column_number": 3,
"floor_number": 1
},
{
"id": 41044,
"type": "seat",
"name": "Seat 4",
"translations": {
"name": {
"en": "Seat 4"
}
},
"seat_number": 4,
"row_number": 1,
"column_number": 4,
"floor_number": 1
},
{
"id": 41045,
"type": "seat",
"name": "Seat 5",
"translations": {
"name": {
"en": "Seat 5"
}
},
"seat_number": 5,
"row_number": 2,
"column_number": 1,
"floor_number": 1
},
{
"id": 41046,
"type": "seat",
"name": "Seat 6",
"translations": {
"name": {
"en": "Seat 6"
}
},
"seat_number": 6,
"row_number": 2,
"column_number": 2,
"floor_number": 1
},
{
"id": 41047,
"type": "seat",
"name": "Seat 7",
"translations": {
"name": {
"en": "Seat 7"
}
},
"seat_number": 7,
"row_number": 2,
"column_number": 3,
"floor_number": 1
},
{
"id": 41048,
"type": "seat",
"name": "Seat 8",
"translations": {
"name": {
"en": "Seat 8"
}
},
"seat_number": 8,
"row_number": 2,
"column_number": 4,
"floor_number": 1
},
{
"id": 41049,
"type": "seat",
"name": "Seat 9",
"translations": {
"name": {
"en": "Seat 9"
}
},
"seat_number": 9,
"row_number": 3,
"column_number": 1,
"floor_number": 1
},
{
"id": 41050,
"type": "seat",
"name": "Seat 10",
"translations": {
"name": {
"en": "Seat 10"
}
},
"seat_number": 10,
"row_number": 3,
"column_number": 2,
"floor_number": 1
},
{
"id": 41051,
"type": "seat",
"name": "Seat 11",
"translations": {
"name": {
"en": "Seat 11"
}
},
"seat_number": 11,
"row_number": 3,
"column_number": 3,
"floor_number": 1
},
{
"id": 41052,
"type": "seat",
"name": "Seat 12",
"translations": {
"name": {
"en": "Seat 12"
}
},
"seat_number": 12,
"row_number": 3,
"column_number": 4,
"floor_number": 1
},
{
"id": 41053,
"type": "seat",
"name": "Seat 13",
"translations": {
"name": {
"en": "Seat 13"
}
},
"seat_number": 13,
"row_number": 4,
"column_number": 1,
"floor_number": 1
},
{
"id": 41054,
"type": "seat",
"name": "Seat 14",
"translations": {
"name": {
"en": "Seat 14"
}
},
"seat_number": 14,
"row_number": 4,
"column_number": 2,
"floor_number": 1
},
{
"id": 41055,
"type": "seat",
"name": "Seat 15",
"translations": {
"name": {
"en": "Seat 15"
}
},
"seat_number": 15,
"row_number": 4,
"column_number": 3,
"floor_number": 1
},
{
"id": 41056,
"type": "seat",
"name": "Seat 16",
"translations": {
"name": {
"en": "Seat 16"
}
},
"seat_number": 16,
"row_number": 4,
"column_number": 4,
"floor_number": 1
},
{
"id": 41057,
"type": "seat",
"name": "Seat 17",
"translations": {
"name": {
"en": "Seat 17"
}
},
"seat_number": 17,
"row_number": 5,
"column_number": 1,
"floor_number": 1
},
{
"id": 41058,
"type": "seat",
"name": "Seat 18",
"translations": {
"name": {
"en": "Seat 18"
}
},
"seat_number": 18,
"row_number": 5,
"column_number": 2,
"floor_number": 1
},
{
"id": 41059,
"type": "seat",
"name": "Seat 19",
"translations": {
"name": {
"en": "Seat 19"
}
},
"seat_number": 19,
"row_number": 5,
"column_number": 3,
"floor_number": 1
},
{
"id": 41060,
"type": "seat",
"name": "Seat 20",
"translations": {
"name": {
"en": "Seat 20"
}
},
"seat_number": 20,
"row_number": 5,
"column_number": 4,
"floor_number": 1
},
{
"id": 41061,
"type": "seat",
"name": "Seat 21",
"translations": {
"name": {
"en": "Seat 21"
}
},
"seat_number": 21,
"row_number": 6,
"column_number": 1,
"floor_number": 1
},
{
"id": 41062,
"type": "seat",
"name": "Seat 22",
"translations": {
"name": {
"en": "Seat 22"
}
},
"seat_number": 22,
"row_number": 6,
"column_number": 2,
"floor_number": 1
},
{
"id": 41063,
"type": "seat",
"name": "Seat 23",
"translations": {
"name": {
"en": "Seat 23"
}
},
"seat_number": 23,
"row_number": 6,
"column_number": 3,
"floor_number": 1
},
{
"id": 41064,
"type": "seat",
"name": "Seat 24",
"translations": {
"name": {
"en": "Seat 24"
}
},
"seat_number": 24,
"row_number": 6,
"column_number": 4,
"floor_number": 1
},
{
"id": 41065,
"type": "seat",
"name": "Seat 25",
"translations": {
"name": {
"en": "Seat 25"
}
},
"seat_number": 25,
"row_number": 7,
"column_number": 1,
"floor_number": 1
},
{
"id": 41066,
"type": "seat",
"name": "Seat 26",
"translations": {
"name": {
"en": "Seat 26"
}
},
"seat_number": 26,
"row_number": 7,
"column_number": 2,
"floor_number": 1
},
{
"id": 41067,
"type": "seat",
"name": "Seat 27",
"translations": {
"name": {
"en": "Seat 27"
}
},
"seat_number": 27,
"row_number": 7,
"column_number": 3,
"floor_number": 1
},
{
"id": 41068,
"type": "seat",
"name": "Seat 28",
"translations": {
"name": {
"en": "Seat 28"
}
},
"seat_number": 28,
"row_number": 7,
"column_number": 4,
"floor_number": 1
},
{
"id": 41069,
"type": "seat",
"name": "Seat 29",
"translations": {
"name": {
"en": "Seat 29"
}
},
"seat_number": 29,
"row_number": 8,
"column_number": 1,
"floor_number": 1
},
{
"id": 41070,
"type": "seat",
"name": "Seat 30",
"translations": {
"name": {
"en": "Seat 30"
}
},
"seat_number": 30,
"row_number": 8,
"column_number": 2,
"floor_number": 1
},
{
"id": 41071,
"type": "seat",
"name": "Seat 31",
"translations": {
"name": {
"en": "Seat 31"
}
},
"seat_number": 31,
"row_number": 8,
"column_number": 3,
"floor_number": 1
},
{
"id": 41072,
"type": "seat",
"name": "Seat 32",
"translations": {
"name": {
"en": "Seat 32"
}
},
"seat_number": 32,
"row_number": 8,
"column_number": 4,
"floor_number": 1
},
{
"id": 41073,
"type": "seat",
"name": "Seat 33",
"translations": {
"name": {
"en": "Seat 33"
}
},
"seat_number": 33,
"row_number": 9,
"column_number": 1,
"floor_number": 1
},
{
"id": 41074,
"type": "seat",
"name": "Seat 34",
"translations": {
"name": {
"en": "Seat 34"
}
},
"seat_number": 34,
"row_number": 9,
"column_number": 2,
"floor_number": 1
},
{
"id": 41075,
"type": "seat",
"name": "Seat 35",
"translations": {
"name": {
"en": "Seat 35"
}
},
"seat_number": 35,
"row_number": 9,
"column_number": 3,
"floor_number": 1
},
{
"id": 41076,
"type": "seat",
"name": "Seat 36",
"translations": {
"name": {
"en": "Seat 36"
}
},
"seat_number": 36,
"row_number": 9,
"column_number": 4,
"floor_number": 1
},
{
"id": 41077,
"type": "seat",
"name": "Seat 37",
"translations": {
"name": {
"en": "Seat 37"
}
},
"seat_number": 37,
"row_number": 10,
"column_number": 1,
"floor_number": 1
},
{
"id": 41078,
"type": "seat",
"name": "Seat 38",
"translations": {
"name": {
"en": "Seat 38"
}
},
"seat_number": 38,
"row_number": 10,
"column_number": 2,
"floor_number": 1
},
{
"id": 41079,
"type": "seat",
"name": "Seat 39",
"translations": {
"name": {
"en": "Seat 39"
}
},
"seat_number": 39,
"row_number": 10,
"column_number": 3,
"floor_number": 1
},
{
"id": 41080,
"type": "seat",
"name": "Seat 40",
"translations": {
"name": {
"en": "Seat 40"
}
},
"seat_number": 40,
"row_number": 10,
"column_number": 4,
"floor_number": 1
},
{
"id": 41081,
"type": "seat",
"name": "Seat 41",
"translations": {
"name": {
"en": "Seat 41"
}
},
"seat_number": 41,
"row_number": 11,
"column_number": 1,
"floor_number": 1
},
{
"id": 41082,
"type": "seat",
"name": "Seat 42",
"translations": {
"name": {
"en": "Seat 42"
}
},
"seat_number": 42,
"row_number": 11,
"column_number": 2,
"floor_number": 1
},
{
"id": 41083,
"type": "seat",
"name": "Seat 43",
"translations": {
"name": {
"en": "Seat 43"
}
},
"seat_number": 43,
"row_number": 11,
"column_number": 3,
"floor_number": 1
},
{
"id": 41084,
"type": "seat",
"name": "Seat 44",
"translations": {
"name": {
"en": "Seat 44"
}
},
"seat_number": 44,
"row_number": 11,
"column_number": 4,
"floor_number": 1
},
{
"id": 41085,
"type": "seat",
"name": "Seat 45",
"translations": {
"name": {
"en": "Seat 45"
}
},
"seat_number": 45,
"row_number": 12,
"column_number": 1,
"floor_number": 1
},
{
"id": 41086,
"type": "seat",
"name": "Seat 46",
"translations": {
"name": {
"en": "Seat 46"
}
},
"seat_number": 46,
"row_number": 12,
"column_number": 2,
"floor_number": 1
},
{
"id": 41087,
"type": "seat",
"name": "Seat 47",
"translations": {
"name": {
"en": "Seat 47"
}
},
"seat_number": 47,
"row_number": 12,
"column_number": 3,
"floor_number": 1
},
{
"id": 41088,
"type": "seat",
"name": "Seat 48",
"translations": {
"name": {
"en": "Seat 48"
}
},
"seat_number": 48,
"row_number": 12,
"column_number": 4,
"floor_number": 1
},
{
"id": 41089,
"type": "seat",
"name": "Seat 49",
"translations": {
"name": {
"en": "Seat 49"
}
},
"seat_number": 49,
"row_number": 13,
"column_number": 1,
"floor_number": 1
},
{
"id": 41090,
"type": "seat",
"name": "Seat 50",
"translations": {
"name": {
"en": "Seat 50"
}
},
"seat_number": 50,
"row_number": 13,
"column_number": 2,
"floor_number": 1
},
{
"id": 41091,
"type": "seat",
"name": "Seat 51",
"translations": {
"name": {
"en": "Seat 51"
}
},
"seat_number": 51,
"row_number": 13,
"column_number": 3,
"floor_number": 1
},
{
"id": 41092,
"type": "seat",
"name": "Seat 52",
"translations": {
"name": {
"en": "Seat 52"
}
},
"seat_number": 52,
"row_number": 13,
"column_number": 4,
"floor_number": 1
}
],
"created_at": "2026-08-18T07:35:35.000000Z",
"updated_at": "2026-08-18T07:35:35.000000Z"
},
"services": [],
"images": [
{
"id": 44,
"name": "et",
"file_name": "msnbvvyf.jpg",
"mime_type": "image/jpeg",
"size": 499443,
"url": "https://testapi.ticketbus365.com/storage/44/msnbvvyf.jpg",
"created_at": "2026-08-18T07:35:35.000000Z",
"updated_at": "2026-08-18T07:35:35.000000Z"
},
{
"id": 45,
"name": "media-libraryE2kuS7",
"file_name": "bus.jpg",
"mime_type": "text/plain",
"size": 18,
"url": "https://testapi.ticketbus365.com/storage/45/bus.jpg",
"created_at": "2026-08-18T07:35:35.000000Z",
"updated_at": "2026-08-18T07:35:35.000000Z"
}
],
"created_at": "2026-08-18T07:35:35.000000Z",
"updated_at": "2026-08-18T07:35:35.000000Z"
},
"driver": {
"id": 9527,
"first_name": "Olena",
"last_name": "Kravchenko",
"middle_name": "Ivanovych",
"full_name": "Olena Kravchenko Ivanovych",
"work_phone": null,
"gender": null,
"birthday": null
},
"dispatcher": {
"id": 9528,
"first_name": "Iryna",
"last_name": "Kovalenko",
"middle_name": "Oleksandrivna",
"full_name": "Iryna Kovalenko Oleksandrivna",
"work_phone": null,
"gender": null,
"birthday": null
},
"occupiedSeats": [
{
"id": 420344,
"bus_flight_id": 22762,
"from_departure_point_id": 14010,
"to_departure_point_id": 14009,
"seat_number": 18,
"type": "bought",
"created_at": "2026-08-18T07:35:36.000000Z",
"updated_at": "2026-08-18T07:35:36.000000Z"
}
],
"baggage_transportation_conditions": [
{
"id": 30245,
"name": "Bicycle transportation",
"description": null,
"translations": {
"name": {
"en": "Bicycle transportation",
"ua": "Bicycle transportation"
},
"description": []
},
"prices": [
{
"currency_id": 88,
"price": 25
}
],
"created_at": "2026-08-18T07:35:36.000000Z",
"updated_at": "2026-08-18T07:35:36.000000Z"
}
],
"schedules": [
{
"id": 1885092,
"departure_point_id": 14008,
"departure_point": {
"id": 14008,
"name": "West Bus Terminal",
"translations": {
"name": {
"en": "West Bus Terminal",
"ua": "West Bus Terminal"
}
},
"city": {
"id": 8247,
"name": "Odesa",
"slug": null,
"translations": {
"name": {
"en": "Odesa",
"ua": "Odesa"
}
},
"population": 326523,
"lat": null,
"lng": null,
"number_of_bus_routes": 0,
"visibility": true,
"country_id": 6,
"created_at": "2026-08-18T07:35:36.000000Z",
"updated_at": "2026-08-18T07:35:36.000000Z"
},
"lat": "48.93584800",
"lng": "29.95496000",
"visibility": true,
"created_at": "2026-08-18T07:35:36.000000Z",
"updated_at": "2026-08-18T07:35:36.000000Z"
},
"arrival_time": "19:00",
"departure_time": "17:30",
"days_in_road": 0,
"platform": "P5",
"has_landing": true,
"has_disembarkation": true,
"is_connecting": false,
"is_connecting_start_endpoint": false,
"position": 4,
"sale_status": "open",
"is_active": true,
"has_transfer": false,
"maybe_transfer": false,
"hint": "Boarding starts 20 minutes before departure.",
"translations": {
"hint": {
"en": "Boarding starts 20 minutes before departure.",
"ua": "Boarding starts 20 minutes before departure."
}
},
"created_at": "2026-08-18T07:35:36.000000Z",
"updated_at": "2026-08-18T07:35:36.000000Z"
}
],
"payment_methods": [
{
"id": 81,
"name": "spot",
"display_name": "Pay at boarding",
"logo_path": "payment-methods/spot.svg",
"created_at": "2026-08-18T07:35:36.000000Z",
"updated_at": "2026-08-18T07:35:36.000000Z"
}
],
"discounts": [
{
"id": 216063,
"discount_type_id": 58,
"discount_type": {
"id": 58,
"name": "Child discount",
"translations": {
"name": {
"en": "Child discount",
"ua": "Child discount"
}
},
"created_at": "2026-08-18T07:35:36.000000Z",
"updated_at": "2026-08-18T07:35:36.000000Z"
},
"discount_value": 10,
"created_at": "2026-08-18T07:35:36.000000Z",
"updated_at": "2026-08-18T07:35:36.000000Z"
}
],
"carrier": {
"id": 298,
"name": "EuroBus Express",
"hotline_phone": null,
"edrpou": null,
"disclaimer": null,
"insurance_description": null,
"insurance_company_name": null,
"insurance_company_address": null,
"logo_url": null,
"insurance_logo_url": null,
"translations": {
"disclaimer": [],
"insurance_description": [],
"insurance_company_name": [],
"insurance_company_address": []
}
},
"prices": [
{
"id": 116742594,
"from_departure_point_id": 14006,
"to_departure_point_id": 14007,
"price": [
{
"amount": 106,
"currency_id": 88
}
],
"is_active": true,
"is_forbidden": false
}
],
"created_at": "2026-08-18T07:35:35.000000Z",
"updated_at": "2026-08-18T07:35:35.000000Z"
}
],
"return_flights_data": []
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get single flight details
Get flight details
Example request:
curl --request GET \
--get "https://testapi.ticketbus365.com/integration-api/flight-details/1/1/2"const url = new URL(
"https://testapi.ticketbus365.com/integration-api/flight-details/1/1/2"
);
fetch(url, {
method: "GET",
}).then(response => response.json());Example response (401):
Show headers
cache-control: no-cache, private
content-type: application/json
x-ratelimit-limit: 1000
x-ratelimit-remaining: 994
access-control-allow-origin: *
{
"message": "Unauthorized"
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Buy ticket
Buy ticket
Example request:
curl --request POST \
"https://testapi.ticketbus365.com/integration-api/tickets" \
--header "Content-Type: application/json" \
--data "{
\"there\": {
\"agent_id\": 1,
\"bus_flight_id\": 1,
\"from_departure_point_id\": 1,
\"to_departure_point_id\": 2,
\"passengers\": [
{
\"first_name\": \"John\",
\"last_name\": \"Doe\",
\"phone_number\": \"123456789\",
\"email\": \"example@example.com\",
\"birthday\": \"1990-10-10\",
\"passenger_type\": \"adult\",
\"baggage\": [
{
\"id\": 1,
\"quantity\": 1
}
]
}
],
\"seat_numbers\": [
1,
2
],
\"without_companion\": true
},
\"back\": {
\"bus_flight_id\": 1,
\"from_departure_point_id\": 1,
\"to_departure_point_id\": 2,
\"passengers\": [
{
\"first_name\": \"John\",
\"last_name\": \"Doe\",
\"phone_number\": \"123456789\",
\"email\": \"example@example.com\",
\"birthday\": \"1990-10-10\",
\"passenger_type\": \"adult\",
\"comment\": \"Some comment\",
\"discount_id\": 1,
\"baggage\": [
{
\"id\": 1,
\"quantity\": 1
}
]
}
],
\"seat_numbers\": [
1,
2
],
\"without_companion\": true
},
\"payment_method_id\": 1,
\"currency_id\": 1,
\"send_tickets_to_email\": true
}"
const url = new URL(
"https://testapi.ticketbus365.com/integration-api/tickets"
);
const headers = {
"Content-Type": "application/json",
"Accept": "application/json",
};
let body = {
"there": {
"agent_id": 1,
"bus_flight_id": 1,
"from_departure_point_id": 1,
"to_departure_point_id": 2,
"passengers": [
{
"first_name": "John",
"last_name": "Doe",
"phone_number": "123456789",
"email": "example@example.com",
"birthday": "1990-10-10",
"passenger_type": "adult",
"baggage": [
{
"id": 1,
"quantity": 1
}
]
}
],
"seat_numbers": [
1,
2
],
"without_companion": true
},
"back": {
"bus_flight_id": 1,
"from_departure_point_id": 1,
"to_departure_point_id": 2,
"passengers": [
{
"first_name": "John",
"last_name": "Doe",
"phone_number": "123456789",
"email": "example@example.com",
"birthday": "1990-10-10",
"passenger_type": "adult",
"comment": "Some comment",
"discount_id": 1,
"baggage": [
{
"id": 1,
"quantity": 1
}
]
}
],
"seat_numbers": [
1,
2
],
"without_companion": true
},
"payment_method_id": 1,
"currency_id": 1,
"send_tickets_to_email": true
};
fetch(url, {
method: "POST",
headers,
body: JSON.stringify(body),
}).then(response => response.json());Example response (200):
{
"data": {
"id": 33321,
"uuid": null,
"public_id": "DBlUPsx31WaTbS7",
"paid_at": null,
"tickets": [
{
"id": 37524,
"type": "internal",
"target_departure_date": "2026-08-21T08:30:00.000000Z",
"target_arrival_date": "2026-08-21T20:30:00.000000Z",
"target_minutes_in_travel": 720,
"public_id": "H1qTVtlDrOmLhj1",
"data_for_qr_code": "H1qTVtlDrOmLhj1",
"price": "78.86",
"price_adjustment_percent": "0.00",
"order_id": 33321,
"first_name": "Olena",
"last_name": "Shevchenko",
"phone": "+380254615656",
"email": "gertrude47@example.com",
"birthday": "2007-08-03",
"passenger_type": "adult",
"departure_date": "2026-08-21T08:30:00.000000Z",
"bus_flight_id": 22765,
"canceled_at": null,
"cancel_comment": null,
"status": "pending",
"seat_change_allowed": true,
"comment": "Window seat preferred.",
"is_processed": false,
"external_route_name": null,
"external_ticket_id": null,
"external_discount_name": null,
"external_from_departure_point_name": null,
"external_to_departure_point_name": null,
"is_external": false,
"created_at": "2026-08-18T07:35:36.000000Z",
"updated_at": "2026-08-18T07:35:36.000000Z"
}
],
"agent_id": null,
"status": "pending",
"total_price": "153.83",
"payment_on_the_spot": false,
"order_group_id": null,
"direction": "outbound",
"data_source": null,
"expired_at": null,
"created_at": "2026-08-18T07:35:36.000000Z",
"updated_at": "2026-08-18T07:35:36.000000Z"
},
"payment_method_data": {
"data": "array",
"type": "string"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Show my ticket
Get ticket by id
Example request:
curl --request GET \
--get "https://testapi.ticketbus365.com/integration-api/ticket/z2zcwP3Z"const url = new URL(
"https://testapi.ticketbus365.com/integration-api/ticket/z2zcwP3Z"
);
fetch(url, {
method: "GET",
}).then(response => response.json());Example response (200):
{
"data": {
"id": 37526,
"type": "internal",
"target_departure_date": "2026-09-03T08:30:00.000000Z",
"target_arrival_date": "2026-09-03T20:30:00.000000Z",
"target_minutes_in_travel": 720,
"public_id": "snVq8jaGonyxSfH",
"data_for_qr_code": "snVq8jaGonyxSfH",
"price": "73.34",
"price_adjustment_percent": "0.00",
"currency": {
"id": 343,
"display_name": "KHR",
"code": "KHR",
"symbol": "KHR",
"is_active": true,
"created_at": "2026-08-18T07:35:38.000000Z",
"updated_at": "2026-08-18T07:35:38.000000Z"
},
"order": {
"id": 33323,
"uuid": null,
"public_id": "5Vk0QZnCRf8JQLj",
"paid_at": null,
"agent_id": null,
"status": "pending",
"total_price": "166.12",
"payment_on_the_spot": false,
"order_group_id": null,
"direction": "outbound",
"data_source": null,
"expired_at": null,
"created_at": "2026-08-18T07:35:38.000000Z",
"updated_at": "2026-08-18T07:35:38.000000Z"
},
"order_id": 33323,
"bus_flight": {
"id": 22767,
"departure_date": "2026-09-17T08:30:00.000000Z",
"sale_end_time_before_departure": 60,
"driver_visibility_time_before_departure": 180,
"arrival_date": "2026-09-17T20:30:00.000000Z",
"hours_in_travel": 12,
"bus": {
"id": 791,
"name": "Mercedes-Benz Sprinter",
"number": "AA 0128 ce",
"status": "active",
"created_at": "2026-08-18T07:35:38.000000Z",
"updated_at": "2026-08-18T07:35:38.000000Z"
},
"status": "open",
"payment_time": 30,
"sale_depth": 45,
"number_of_seats": 52,
"carrier_name": null,
"seat_selection_allowed": true,
"seat_selection_not_allowed_date_from": "2026-09-15",
"seat_selection_not_allowed_date_to": "2026-09-16",
"seat_selection_availability": "online_payment",
"without_companion": true,
"min_price": [
{
"currency_id": 88,
"price": 69
}
],
"schedules": [],
"forbidden_sale_date_from": null,
"forbidden_sale_date_to": null,
"created_at": "2026-08-18T07:35:38.000000Z",
"updated_at": "2026-08-18T07:35:38.000000Z"
},
"from_departure_point": {
"id": 14015,
"name": "International Coach Terminal",
"translations": {
"name": {
"en": "International Coach Terminal",
"ua": "International Coach Terminal"
}
},
"lat": "40.89645500",
"lng": "28.34860000",
"visibility": true,
"created_at": "2026-08-18T07:35:38.000000Z",
"updated_at": "2026-08-18T07:35:38.000000Z"
},
"to_departure_point": {
"id": 14016,
"name": "West Bus Terminal",
"translations": {
"name": {
"en": "West Bus Terminal",
"ua": "West Bus Terminal"
}
},
"lat": "47.38272600",
"lng": "22.69787300",
"visibility": true,
"created_at": "2026-08-18T07:35:38.000000Z",
"updated_at": "2026-08-18T07:35:38.000000Z"
},
"first_name": "Iryna",
"last_name": "Bondarenko",
"phone": "+380072012622",
"email": "conn.darion@example.net",
"birthday": "1967-01-19",
"passenger_type": "adult",
"departure_date": "2026-09-03T08:30:00.000000Z",
"occupied_seats": [
{
"id": 420345,
"bus_flight_id": 22768,
"from_departure_point_id": 14018,
"to_departure_point_id": 14017,
"seat_number": 10,
"type": "reserved",
"created_at": "2026-08-18T07:35:39.000000Z",
"updated_at": "2026-08-18T07:35:39.000000Z"
}
],
"bus_flight_id": 22767,
"canceled_at": null,
"cancel_comment": null,
"status": "pending",
"seat_change_allowed": true,
"comment": "Window seat preferred.",
"prepayments": [
{
"id": 10615,
"ticket_id": 37526,
"currency_id": 88,
"payment_method_id": 82,
"amount": 32.33,
"created_at": "2026-08-18T07:35:39.000000Z",
"updated_at": "2026-08-18T07:35:39.000000Z"
}
],
"prepayments_amount": 32.33,
"is_processed": false,
"external_route_name": null,
"external_ticket_id": null,
"external_discount_name": null,
"external_from_departure_point_name": null,
"external_to_departure_point_name": null,
"is_external": false,
"created_at": "2026-08-18T07:35:38.000000Z",
"updated_at": "2026-08-18T07:35:38.000000Z"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.
Get ticket qr code in base64
Get ticket qr code in base64
Example request:
curl --request GET \
--get "https://testapi.ticketbus365.com/integration-api/ticket/z2zcwP3Z/qr-code"const url = new URL(
"https://testapi.ticketbus365.com/integration-api/ticket/z2zcwP3Z/qr-code"
);
fetch(url, {
method: "GET",
}).then(response => response.json());Example response (200):
{
"data": {
"qr_code_image": "base64_encoded_string",
"qr_code_data": "string_data"
}
}
Received response:
Request failed with error:
Tip: Check that you're properly connected to the network.
If you're a maintainer of ths API, verify that your API is running and you've enabled CORS.
You can check the Dev Tools console for debugging information.