Types
Below are all the available GraphQL types and fields. Please refer to API Basics for detailed information and examples of how to use the API.
To try it out, explore the GraphQL schema and start making requests in the interactive API console. For code generation, editor autocomplete and offline reference, download the complete schema as one SDL file.
Query
journeys
Get all possible journeys between origin and destination on given date
Arguments
Origin location
Destination location
Date of departure
Optional filter for journey search
Optional via stopovers
journeyOffer
This will check live availablity with the train operators and return the given journey with priced offers. Call this when the user has requested prices.
Arguments
Id of the Journey to get fares for
Passenger details
Currency to display prices in
combinedJourneyOffer
This will check live availablity for an outbound and an inbound journey priced together as a round trip. Where a provider sells true return fares they surface in the matched legs' offers; otherwise prices match two independent journeyOffer calls.
Arguments
Id of the outbound Journey to get fares for
Id of the inbound Journey to get fares for, from a search in the opposite direction
Passenger details, applying to both directions
Currency to display prices in
getJourneyForBlueprint
This will return a journey constructed from a predefined Blueprint.
Blueprints are created in the Agent Dashboard and can be either a short connection or a multi‑leg trip with overnight stopovers along the way.
Arguments
getPassBundles
Get applicable pass bundles for the given passengers
Arguments
Passenger details
Planned departure date
Optional filter for pass bundles
Currency to display prices in
getPassBundlesForJourneyOffer
Get applicable pass bundles for given journey offer
Arguments
Id of journey offer to get pass bundles for
Passenger details
Optional filter for pass bundles
Currency to display prices in
getJourneyRatings
Get comparative rating for journeys
Arguments
List of journey ids
getTicketingFee
Get fee for issuing tickets
Arguments
orders
The orders the caller can see, newest first unless sort says otherwise,
optionally narrowed by filter.
Cursors are opaque, so do not parse or construct one, and a cursor only
continues the list it came from: present it with the same filter and
sort. totalCount counts the orders the filter leaves. Pages hold 10
orders by default and 100 at most.
Arguments
Narrows the orders
Cursor to start listing from
Cursor to end listing at
Number of orders to return (head)
Number of orders to return (tail)
Sort direction for ordering results
locations
Every location we can search and book from, optionally narrowed and
ordered by filter.
Without filter.query and filter.near the order is ascending on an
internal sequence and carries no meaning beyond being stable: it is the
order to walk when retrieving all of them. A location that is listed for
the whole walk is neither skipped nor repeated, however many are added or
withdrawn while it runs. One that joins the list mid-walk is yielded only
if it sorts after the cursor reached — and a location that has existed for
years can join it, because a location is listed from the day we can sell a
journey from it, not from the day the row was created. Repeat the walk to
pick those up.
With filter.query the order is relevance, and with filter.near alone
it is distance. Those lists are ranked when a page is read, so a location
added or withdrawn between two pages can shift the ones after it by a
place; they are for finding a location, not for retrieving all of them.
Cursors are opaque, so do not parse or construct one, and a cursor only
continues the list it came from: present it with the same filter.
totalCount counts the locations the filter leaves. Pages hold 25
locations by default and 100 at most.
Arguments
Narrows the locations and, with a text or a point, orders them
Cursor to start listing from
Cursor to end listing at
Number of locations to return (head)
Number of locations to return (tail)
node
Use this query to get anything that implements the Node interface. It's the recommended way to get entities based on their id.
Arguments
travelCardOptions
Get available travel card options.
Returns the list of supported travel cards that can be attached to passengers.
Use the returned code when constructing TravelCardInput and consult
inputFields to determine which additional data is needed.
Arguments
getSalesAgent
Get sales agent details
Arguments
accessibleSalesAgents
The sales agents the caller has been granted access to act on behalf of, never the caller's own agent.
Without filter.query the list is in uid order. With it, the order is
relevance, ranked when a page is read, so a sales agent granted or revoked
between two pages can shift the ones after it by a place.
Cursors are opaque, so do not parse or construct one, and a cursor only
continues the list it came from: present it with the same filter.
totalCount counts the sales agents the filter leaves. Pages hold 25 sales
agents by default and 100 at most.
Arguments
Narrows the sales agents
Number of sales agents to return
Cursor to start listing from
passengerProfiles
Passenger profiles the caller may book for, found by filter.query: an
agency's key reaches the profiles of every company it has access to, a
company reaches its own.
Requires the passenger_profiles:read scope, else FORBIDDEN. A caller
whose sales agent keeps no profile directory gets
NO_PROFILE_DIRECTORY; a directory that could not be searched,
UPSTREAM_UNAVAILABLE.
Each page is one read of the directory. Pages hold 25 profiles at most, a
larger first is read as 25, and a page can hold fewer than asked, or
none, while hasNextPage is still true (see PassengerProfileConnection).
Cursors are opaque, so do not parse or construct one, and a cursor only
continues the search it came from: present it with the same filter and
first, else INVALID_ARGUMENT.
Arguments
me
Get the authenticated end user.
Requires a user token (JWT) in the Authorization header. A request without
one has no end user and fails with the USER_TOKEN_MISSING error code. Note
that an api-key header takes precedence over Authorization, so send only
the user token when querying this field.
Arguments
campaigns
The sales campaigns available to the authenticated caller, ordered by code.
Every code returned is one the caller may sell under, so a client can offer the list as-is. The baseline terms a sale falls back to when no campaign is given are not a campaign to select and are never listed. Campaigns are not named here — a code has no display copy — so pair the codes with your own labels.
A campaign runs for a period and drops out of the listing once it ends, so re-read this rather than caching codes indefinitely. A booking already taken under a campaign is unaffected by its ending and can still be completed.
Which campaigns are available depends on who the request is authenticated
as. An api-key header takes precedence over Authorization, so send only
the user token (JWT) to list what an end user may sell under.
Arguments
placeMapForPart
Get a map of places for a given offer and part
Arguments
refundableItems
Returns a list of refundable items that can be refunded
Arguments
Id of the order
refunds
List all executed refunds for an order
Arguments
Id of the order
Mutation
createBooking
Given a journey offer id, this will create a booking with the given journey offer. A booking is a temporary entity that holds the selected offers and passenger details.
See: https://docs.allaboard.eu/tickets/book-tickets, https://docs.allaboard.eu/passes/booking
Arguments
Ids of offers to add to booking
Id of pass bundle to att to booking
Currency to display prices in
Partner id for tracking
Passenger details to add to booking
updateBooking
Select offers and update passenger details
Given a booking id and an offer id, this will select the offer in the booking. This is useful when the user has selected an offer and wants to add it to the booking.
Given a booking id and an array of passenger details, this will update the passenger details in the booking. See booking.requirements for required passenger fields. At least one passenger must be marked as the contact person with `isContactPerson: true` and `email` and `tel` must be provided.
Arguments
Id of booking to update
Passenger details to update
Booking selections to update
updatePart
Update an offer part of a booking
Arguments
Id of part to update
Id of booking to update
Toggle inclusion of an optional reservation part
Place properties to update
Ancillaries to add
Ancillaries to remove
Places to select
setCustomFields
Set values of the booking's custom fields, by key. Fields not sent keep their values, and if any field is refused, none is saved. Not allowed once the booking's order is paid or confirmed.
Arguments
Id of booking to update
The fields to set, each named by its key
setTicketDelivery
Record how the tickets for one offer should be delivered.
Returns the updated offer. Nothing else about the booking changes — no price, no selection, no other field — so there is nothing to refetch beyond the one case below.
One call covers the whole offer: every cost center of a multi-cost-center
booking, and both halves of a return whose inward direction is priced into
the outward fare. That inward half is a separate Offer with its own id, and
it is the only offer other than the returned one that a call can change, so
refetch it through the booking if you are displaying it. Its selectedOption
takes the same method when that method is among its own availableOptions,
and is cleared to null when it is not — a linked half is never left holding a
delivery its own options do not list.
Two separately selected single offers are set separately, even when the operator goes on to deliver them together — in that case it settles one delivery for both at purchase.
Arguments
Id of the offer to set the delivery method for
The method of one of the offer's ticketDelivery.availableOptions
createPayment
Initialise payment for an order through All Aboard.
The recommended flow is to first create an order with `createOrder` and then pass its `id` here as `orderId`. Once the payment has been succesfully processed, the user will be redirected to the successUrl with the `{order}` placeholder replaced by the order id. If the payment is canceled, the user will be redirected to the cancelUrl.
For backwards compatibility a `booking` may be passed instead of `orderId`, in which case an order is created automatically before payment is initialised.
Arguments
Id of the order to pay for (from createOrder)
URL to redirect to in the case of payment cancellation
URI Template (RFC 6570) compliant string with {order} placeholder
Optional 2-letter language tag used to localise the payment page URL
createOrder
This will create an order from a booking. An order is a temporary entity that holds the selected offers and passenger details and prebooks the tickets.
It is normally after creating an order that you would collect payment.
Arguments
Id of booking to confirm
JSON encoded string of metadata to attach to order
finalizeOrder
This will finalize an order and start issuing tickets.
Arguments
Id of order to finalize
refundItems
Execute refunds for selected refundable items
Arguments
createAccessToken
Mint an access token for one order.
Returns the token with its secret on token, the only time that value is
ever readable. Present it in the api-key header to read that order, and —
with WRITE — to refund it and to pay for it by card.
Minting is refused with NOT_AUTHORIZED unless the caller could itself do
everything the token is asked for: reading the order for READ, and
refunding it and paying for it by card for WRITE. A request authenticated
by an access token cannot mint another one, so a token's lifetime cannot be
extended by minting from behind it.
An order that does not exist, and one the caller may not read, both fail
with NOT_FOUND. Empty restrictions fails with INVALID_RESTRICTIONS,
and a ttlSeconds outside 1..86400 with INVALID_TTL.
Arguments
What the token is narrowed to. Must name an order.
What the token may do. Omit it for [READ]; [WRITE] implies READ.
An explicitly empty list fails with INVALID_CAPABILITIES.
How long the token lives, in seconds. 1..86400, default 900.
revokeAccessToken
Revoke an access token, so it stops authenticating anything immediately.
Idempotent: revoking an already-revoked token succeeds and leaves the
original revokedAt alone, so the trail keeps saying when the credential
actually stopped working.
Allowed for the agency that minted the token, or any agency above it in the
agent tree; anything else fails with NOT_AUTHORIZED. An id that names no
token fails with NOT_FOUND. The returned token carries token: null —
the secret is unreadable here as everywhere else.
Arguments
The AccessToken.id to revoke.
Subscription
journeys
Get all possible journeys between origin and destination on given date
Journeys will be streamed as the routing algorithm resolves the best routes.
Arguments
Origin location
Destination location
Date of departure
Optional filter for journey search
Optional via stopovers
journeyOffer
This will check live availablity with the train operators and return the given journey with priced offers. Call this when the user has requested prices.
The response is streamed, meaning that as operators return offers for parts of the journey, the result will update with more data for every payload.
Arguments
Id of the Journey to get fares for
Passenger details
Currency to display prices in
combinedJourneyOffer
This will check live availablity for an outbound and an inbound journey priced together as a round trip. Where a provider sells true return fares they surface in the matched legs' offers; otherwise prices match two independent journeyOffer calls.
The response is streamed, updating as each direction's legs resolve.
Arguments
Id of the outbound Journey to get fares for
Id of the inbound Journey to get fares for, from a search in the opposite direction
Passenger details, applying to both directions
Currency to display prices in
getJourneyForBlueprint
This will return a journey constructed from a predefined Blueprint.
Blueprints are created in the Agent Dashboard and can be either a short connection or a multi‑leg trip with overnight stopovers along the way.
The journey is streamed as the blueprint is being resolved into a journey.
Arguments
Objects
AccessTokenObject
A credential that reaches one order and nothing else.
Presented in the api-key header, or as Authorization: Bearer, in place of
the agency's own API key — which is what makes it safe to put on a page the
public can open. Every request it authenticates is attributed to the agent
and user that minted it.
Fields
The token's own id, for revokeAccessToken and node. Not the secret.
The secret to present as the api-key header.
Non-null exactly once, on what createAccessToken returns. It is stored
only as a hash, so nothing can hand it back afterwards: refetching the same
token through node returns it as null. Lose it and mint another.
What the token may do on its order, always at least READ.
What the token is narrowed to.
When the token stops working. Always in the future at minting.
When the token was revoked, or null if it was not.
Null does not mean the token still works — an unrevoked token past
expiresAt is refused just the same.
AccessTokenRestrictionsObject
What an access token is narrowed to. See AccessTokenRestrictionsInput.
Fields
The order the token reaches, as its order_… id.
AccommodationObject
Accommodation details for a journey segment.
Describes the type of seating or sleeping arrangement available on a train/bus/ferry, including comfort level and specific features. Used to help passengers choose their preferred travel experience.
The description field provides human-readable details about the accommodation (e.g. "1 person sleeper cabin"), while subType contains a standardized code representation of the same information (e.g., "SINGLE").
Fields
AdmissionPartObject
The admission (tariff) part of an offer.
Represents the right to travel for the covered segments (the fare/tariff).
Contains the conditions the operator stated for the ticket and the
flexibility level, as well as the normalized serviceClass and
(operator-specific) comfortClass.
Fields
Everything the provider stated about this part: refund and exchange rules
(ReturnCondition), the dates the ticket may be used on (ValidityCondition)
and other rules of use (TravelCondition), in that order. Render every
entry's description; see Condition for how to treat the kinds.
The corporate codes the operator honored on this part, as it reported them. Empty when none applied, so a code sent at search that is missing here did not discount this part. On a journey sold as one offer per operator the code can apply to one operator's parts and not another's.
AncillaryObject
An ancillary service that can be selected for a reservation.
Additional services or add-ons that passengers can purchase beyond the basic fare. These enhance the travel experience and may include meals, insurance, or special assistance.
Common types and examples:
- "BREAKFAST": On-board breakfast, pre-ordered meals
- "MEAL": On-board dining, pre-ordered meals
- "INSURANCE": Travel insurance, cancellation protection
- "LUGGAGE": Extra baggage allowance, bike transport
- "UPGRADE": Seat upgrades, priority boarding
- "ENTERTAINMENT": WiFi access, entertainment packages
The price field indicates the additional cost, while selections track which passengers have chosen this service.
Fields
AncillarySelectionObject
A selection of an ancillary service
Fields
AnonymousLocationObject
A station where stops may be made but journeys cannot be planned from/to
Fields
BedAssignmentObject
A bed assignment for a passenger
Fields
BlueprintJourneyObject
A journey constructed from a predefined itinerary blueprint.
Uses a curated sequence of segments and optional stopovers defined by a blueprint. Blueprints are suitable for editorial or productized routes (e.g. scenic itineraries, recommended routes, or multi-city trips) and can include planned overnight stopovers.
Typical use cases:
- Publishing recommended routes with fixed or suggested stopovers
- Recreating saved or shared itineraries
- Ensuring specific paths or operators are used
Fields
BookedAdmissionPartObject
A the part of a booked offer that is the admission
Fields
BookedReservationPartObject
A part of a booked offer that is the reservation
Fields
BookingObject
Represents a temporary booking that holds selected offers, pass bundles, and passenger information before payment and confirmation. Bookings have a limited lifespan and must be confirmed before expiration.
If expiresAt is reached without confirmation, or if the booking fails for any
reason, the booking is automatically canceled and offers are released back to
inventory. An expired or failed booking cannot be used again and will need to be
recreated from scratch.
Fields
The booking's own custom fields, such as a VAT number or a purchase order
number, prefilled from the company's profile and set with
setCustomFields. Empty when the company has no profile directory.
BookingFareObject
A bookable fare offer for a journey
Fields
CampaignObject
A sales campaign: an alternative set of terms and products to sell under.
Only campaigns the authenticated caller may use are returned, so any code listed here can be passed wherever a campaign code is accepted.
Fields
The campaign's code, passed as campaignCode in the pass bundle filter to
see what the campaign offers.
Products this campaign currently covers, ordered alphabetically by key.
Every product listed has at least one pass on sale under this campaign, and a product not listed has none, so a client can offer the list as-is. Empty when the campaign's terms currently match nothing on sale.
Coverage is per campaign, not per party: a listed product can still yield no bundle for a particular set of travelers if it has no pass for one of their passenger types.
CardFieldRequirementObject
Describes whether a specific field is required for a travel card type.
Each entry maps a field name (e.g. "identifier") to a requirement level indicating if and when it must be provided.
Fields
Name of the field (e.g. "identifier")
Whether the field is required
CheckInResourceObject
Resource that can be accessed for check-in and ticket issuing
Fields
CombinedJourneyOfferObject
An outbound and an inbound journey priced together as a round trip, so providers that sell true return fares can return them. Offers hang off each direction's SegmentCollections, exactly as on a single JourneyOffer.
Fields
The outbound journey (origin → destination) with priced offers, possibly multi-leg
The inbound journey (destination → origin) with priced offers, possibly multi-leg
CompartmentTypeObject
A compartment type for a fare, e.g. Sleeper or Couchette
Fields
CorporateCodeObject
A corporate agreement code: a company's negotiated rate with an operator, priced into the passenger's offers at search.
Fields
CostCenterObject
A cost center belonging to a sales agent, used for billing and payment routing
Fields
CustomFieldObject
A custom field: one of the fields configured in a profile directory, with the value it holds here.
Fields
The profile directory's key for the field: opaque, and particular to how the directory is configured, so the same kind of field can have a different key for another sales agent. Everything that carries the field carries the same key, each with its own value.
The field's label as configured in the profile directory, such as "Cost Center" or "Employee number": not a fixed vocabulary.
The kind of value the field holds, and so the input to show for it.
The field's value, of its type as CustomFieldValue describes it.
Null when it was cleared.
Whether the profile directory requires the field to hold a value.
Whether the field is read-only for you, so you cannot change it. That depends on how the field is configured in the profile directory and on who you are there: the sales agent that manages the directory, a booker for the company the field belongs to, or a traveler booking for themselves. A field configured as read-only, or as not editable, is read-only for everyone; one only the managing sales agent may set is read-only for everyone else; and one a traveler may only read, or only bookers may set, is read-only for a traveler.
FileResourceObject
Generic file resource that can be accessed or downloaded.
Represents digital assets associated with orders, such as tickets, boarding passes, receipts, and other travel documents. Resources are typically accessed via URLs and may have different formats.
Common resource types:
- application/pdf: PDF tickets, receipts, and documentation
- image/png: QR codes, boarding passes, and visual elements
- text/plain: Plain text instructions and confirmations
- application/json: Structured data and API responses
Resources may have access restrictions or expiration times depending on the type and operator policies.
Fields
FullPassengerObject
All passenger details
Fields
The corporate agreement codes the passenger was searched and booked with
The passenger profile this passenger was named by when the booking was
created, as passengerProfiles and me.profile return its id. It
identifies a profile in a profile directory, not a person: the passenger's
details are the booking's own, filled in from the profile when the booking
was created, and a later change to the profile does not reach them. Null
when no profile was named. Only booking creation sets it: updateBooking
cannot change it, and the order's passenger keeps it. node resolves it to
the profile, read from the directory again rather than from the booking (see
PassengerProfile.id).
The passenger's custom fields: every field the passenger's company defines
for its travelers in its profile directory, such as a cost center, an
employee number or a project number. The company is that of the passenger
profile this passenger was named by, else the booking's. Each field holds
the profile's value when the booking was created, or none. From then on
the values are the booking's own: a later change to the profile does not
reach them, updateBooking can set or change them until the booking's
order is paid or confirmed, and the order's passenger keeps them. Empty when the company has no profile directory.
Booking creation is refused when the company's fields cannot be read.
GenericOrderItemObject
An unspecified item in an order
Fields
GeoJsonPointObject
Coordinates of a given location in GeoJSON Point format.
Follows the GeoJSON specification (RFC 7946) using WGS84 coordinate system. Coordinates are stored as [longitude, latitude] array (note the order).
Examples:
- London: [-0.1278, 51.5074] (longitude, latitude)
- Rome: [12.4964, 41.9028] (longitude, latitude)
- Stockholm: [18.0686, 59.3293] (longitude, latitude)
- Berlin: [13.4050, 52.5200] (longitude, latitude)
Note: The type field is always "Point" for this implementation.
Fields
JourneyFareObject
A fare offer for a journey
Fields
JourneyOfferObject
The composite offer for a journey: the journey itself (with itinerary)
carrying the bookable Offers that go together, grouped per
SegmentCollection. Compose a booking from whichever offer ids you choose
(createBooking). Produced by journeyOffer (single) and
combinedJourneyOffer (round trip).
Fields
JourneyOfferSelectionObject
Selected journey offer that is part of a booking
Fields
JourneyOrderItemObject
A booked journey from a journey offer, containing segments, tickets and other resources
Fields
JourneySelectionObject
The journey selected for an offer
Fields
LocationObject
Known location from and to which journeys can be planned
Fields
True when this location stands for a place rather than one station — "Paris" rather than one of its termini. A journey searched from it departs whichever station the route it is sold on uses, so read the departure off the journey's segments rather than assuming it.
LocationConnectionObject
Paginated locations list result
Fields
How many locations the whole list holds under the filter this page was
read with, or every location when there is none, counted when this page
was read. Locations are added and withdrawn, so paging through several
pages can end on a different number.
LocationEdgeObject
A location edge in a paginated list
Fields
MoneyObject
Monetary sum using CLDR (Common Locale Data Repository) format.
The amount field represents the monetary value in the smallest currency unit:
- For currencies with decimal places (USD, EUR, GBP, etc.): amount is in cents (e.g., 1000 = $10.00, 1250 = €12.50)
- For currencies without decimal places (JPY, KRW, etc.): amount is in whole units (e.g., 1000 = ¥1000, 1250 = ¥1250)
Users are advised to consult the CLDR specification for proper currency formatting and display. The currency field contains the ISO 4217 currency code (e.g., "USD", "EUR", "JPY").
Examples:
- USD 1000 = $10.00 (1000 cents)
- EUR 1250 = €12.50 (1250 euro cents)
- JPY 1000 = ¥1000 (1000 yen, no decimal places)
- KRW 5000 = ₩5000 (5000 won, no decimal places)
Fields
NoChargeRedirectObject
Payment type used when no payment is required.
This payment type is used in cases where the order has a total price of 0.
The URL field will redirect to the provided successUrl.
Fields
NonStopJourneyObject
A direct journey with no planned stopovers.
Represents the optimal (fastest) end-to-end route from origin to destination without overnight stopovers. Transfers between trains may still occur, but the itinerary does not intentionally include long breaks or multi-day segments.
While this optimizes for speed, it may result in less comfortable connections that require transfers at inconvenient times.
Use when passengers want the fastest connection in a single travel day where possible.
Fields
OfferObject
A priced, bookable combination of entitlements for a journey.
An offer bundles everything needed to travel on a ticketable segment of an itinerary. It is made up of one or more parts:
AdmissionPart: the right-to-travel/tariff entitlement (admission to board)ReservationPart: optional seat/berth reservations and add-ons
Pricing and composition:
price: total price for all included parts in the requested currencyparts: per-part breakdown with their own price and the segments they cover
Usage:
- returned by journey pricing endpoints and attached to itinerary results
- selected when creating a booking (see
JourneyOfferSelectionandOfferSelectionInput) - per-part options (e.g.,
placeProperties,ancillaries) are configured on ReservationPart items
Notes:
- Some connections can be traveled without a reservation; such offers only have an AdmissionPart
- Sometimes reservations are included, in which case a
ReservationPartwith no price is returned - Long or mixed-operator journeys may include multiple
AdmissionPartandReservationPartitems, each covering different segments
Fields
How the tickets for this offer can be delivered, and which method has been picked so far. Null when delivery information could not be established for this offer — the operator then delivers its own way and nothing can be picked.
The offers of one product sold across several legs. Select an offer from this set for every leg it covers, or nothing from it at all. Null on ordinary offers, which combine freely.
Two shapes exist. On some journeys the set is one priced combination and holds a single offer per leg — a return fare and its £0 companion — so those exact offers are the selection. On others every offer of every leg shares one set, because the journey is only sold whole: pick whichever offer you like on each leg, but book them all.
A set id names the product these offers are part of, for as long as the offers themselves last. It is not an address: offers are addressed by offer id, and a set id is never sent back. Two products priced identically are two sets, so equal prices are no reason to expect equal ids — and a refreshed journey is a new set of offers, which names its product with a new id.
OfferSetObject
A set of offers sold, and bookable, only as one product: every leg it covers is booked, each with an offer from the set.
It carries no offers of its own; it is an identity and nothing more. Two offers
belong to the same product when their memberOf.id matches.
Fields
OnboardAmenityObject
An onboard service or facility that may be available on a Segment.
Available onboard amenities may vary depending on service class, comfort class and accommodation.
Fields
OperatorObject
Operator details
Fields
OrderObject
Finalized order with confirmed bookings and issued tickets.
Represents a completed transaction where payment has been processed, offers have been confirmed, and tickets have been or are being issued. Orders are the final state of a booking and contain all travel documentation.
The reference field is typically used for customer service inquiries.
Fields
The order's order_… id, the form every operation taking an order id
accepts. Orders placed before these ids existed were handed out an id in
another form; node still resolves those.
The booking's custom fields as they were when the order was created. Read-only.
The sales agent the order belongs to and is billed to
Who created the order: the credential's sales agent, and the person when known
OrderConnectionObject
Paginated orders list result
Fields
OrderCreatorObject
Who created an order
Fields
The sales agent whose credential created the order. Differs from the order's
salesAgent when a parent agent ordered on behalf of a sub-agent.
The end user who created the order. Null when no signed-in user did.
OrderEdgeObject
An order edge in a paginated list
Fields
PageInfoObject
Pagination information
Fields
PassBundleObject
Bundle of rail passes and similar travel products.
Represents a collection of travel passes that can be purchased together, typically for multiple passengers or extended travel periods. These bundles provide access to train networks across multiple countries.
Pass structure:
class: "1stclass" (first class travel) or "2ndclass" (second class travel)product: "interrail-global-pass" (33 countries), "interrail-one-country-pass-sweden" (single country). A legacy "eurail-" key is accepted as an alias for its "interrail-" counterparttravelDayCount: Number of days the pass can be used for travel within the validity periodvalidityPeriod: Overall time window when the pass is valid
Pass types:
- Continuous passes:
travelDayCountis null (unlimited daily travel during validity period) - Flexi passes:
travelDayCountspecifies exact number of travel days within validity period
Fields
PassBundleOrderItemObject
A booked rail pass from a pass bundle offer, containing passenger details and pass information
Fields
PassBundleSelectionObject
Selected Interrail bundle that is part of a booking
Fields
PassengerBundleObject
Passengers grouped by type for fare calculation and pass bundle allocation.
Represents a count of passengers of the same type that will be traveling together. This grouping is used to:
- Calculate group fares and discounts
- Allocate rail passes and other travel products
The count field represents the number of passengers of this specific type.
Fields
PassengerPlaceholderObject
The minium passenger details
Fields
The corporate agreement codes the passenger was searched and booked with
The passenger profile this passenger was named by when the booking was
created, as passengerProfiles and me.profile return its id. It
identifies a profile in a profile directory, not a person: the passenger's
details are the booking's own, filled in from the profile when the booking
was created, and a later change to the profile does not reach them. Null
when no profile was named. Only booking creation sets it: updateBooking
cannot change it, and the order's passenger keeps it. node resolves it to
the profile, read from the directory again rather than from the booking (see
PassengerProfile.id).
The passenger's custom fields: every field the passenger's company defines
for its travelers in its profile directory, such as a cost center, an
employee number or a project number. The company is that of the passenger
profile this passenger was named by, else the booking's. Each field holds
the profile's value when the booking was created, or none. From then on
the values are the booking's own: a later change to the profile does not
reach them, updateBooking can set or change them until the booking's
order is paid or confirmed, and the order's passenger keeps them. Empty when the company has no profile directory.
Booking creation is refused when the company's fields cannot be read.
PassengerProfileObject
A traveler's persistent details, offered to prefill a passenger.
Every detail is nullable: a directory profile is data we do not control, and a
detail it does not hold (or that we could not read) is simply absent rather
than fatal. Only id, salesAgent, costCenter and travelCards (possibly
empty) are always set. It deliberately carries no passenger type and no
age — both depend on a travel date as well as a birth date, and a profile
has no journey. Name the profile with passengerProfileId when searching
and booking, and the API derives them from birthDate at the travel date.
Fields
Identifies this profile in the profile directory it was read from. Opaque: keep it for list keys, selection and spotting the same profile on another page, and never parse it. It identifies a profile, not a person: the same person in two directories, or with two agencies, has two ids.
node reads the profile by this id from the directory; a change made there
can take up to ten minutes to show. It is null both for a profile that does
not exist and for one the caller may not book for. Reading any profile but
the viewer's own requires the passenger_profiles:read scope (FORBIDDEN),
and a directory that cannot be read fails the request
(NO_PROFILE_DIRECTORY, UPSTREAM_UNAVAILABLE).
The sales agent the passenger profile belongs to: the company whose
profile directory holds it, never null. A booking from this profile is
placed on one of its costCenters.
The passenger profile's preferred cost center, never null: our best guess
from the directory, to pre-select unless the booker knows better. It is the
cost center the directory names for the profile when we recognize it under
salesAgent, otherwise the sales agent's default. Any of
salesAgent.costCenters may be booked on instead.
The traveler's given name
The traveler's family name
The traveler's preferred title
The traveler's date of birth
The traveler's email address
The traveler's telephone number
The traveler's nationality
Discount cards the traveler holds, as far as we recognize them
PassengerProfileConnectionObject
A page of passenger profiles. There is no total: the directory keeps none.
A page may hold fewer profiles than asked for, or none, while
pageInfo.hasNextPage is still true, because profiles of companies the
caller may not book for are left out after the page was read; keep paging
from pageInfo.endCursor until hasNextPage is false.
Fields
startCursor and endCursor are set on every page that was read, even
one with no edges, so paging can always continue from endCursor.
hasNextPage is whether the directory has a further page to read.
PassengerProfileEdgeObject
A passenger profile edge in a paginated list
Fields
Opaque, and this edge's own, so a cache that merges pages by cursor keeps
every profile of a page. As after, it continues at the page after the
one this profile is on, not after this profile: any cursor of a page
reads the same next page.
PassengerRequirementsObject
Details required for all passengers on a specific booking.
Defines which passenger information fields are mandatory for a particular booking. Requirements are determined by ticketing providers and vary depending on the operator being used.
Fields
PdfTicketObject
Ticket issued in PDF format for download
Fields
PlacePreferenceObject
Possible place preferences
Fields
PlacePropertyObject
Option relating to the seating arrangement and other aspects of the journey.
Allows passengers to specify preferences for their travel experience, such as seat location, cabin type, or special requirements. These properties can be required (mandatory selection) or optional (preference-based).
Common property types:
- "GENDER": Segregated cabin by gender
- "PLACE_OR_COMPARTMENT_LOCATION": Location of the place or compartment
- "SPECIAL_COMPARTMENT_TYPE": Special compartment type
The availableOptions list shows all possible choices, while selectedOption indicates the passenger's current preference.
Fields
PlacePropertyOptionObject
An option for a place property.
Represents a specific choice within a place property category. These options are what passengers can select from when choosing their preferences.
Examples by property type:
- GENDER: "MEN", "LADIES", "MIXED"
- PLACE_OR_COMPARTMENT_LOCATION: "WINDOW", "AISLE", "FRONT", "BACK"
- SPECIAL_COMPARTMENT_TYPE: "EASY_ACCESS", "WITHOUT_ANIMALS", "QUIET_ZONE"
The value field contains the standardized identifier for the option, while the id field provides a unique reference for selection tracking.
Fields
PlanningPeriodObject
Period for which a serivce is scheduled to run
Fields
A bitfield string representation of the days of service encoded as a hexadecimal string.
Each bit in the bitfield corresponds to a specific day, starting from the
startDate and ending on the endDate. Each hexadecimal character represents
4 days (bits).
Bit interpretation:
- Bit 0 = startDate
- Bit 1 = startDate + 1 day
- Bit 2 = startDate + 2 days
- etc.
Examples:
- "FF" = 8 days of service (11111111 in binary)
- "F0" = First 4 days of service (11110000 in binary)
- "0F" = Last 4 days of service (00001111 in binary)
- "AA" = Every other day (10101010 in binary)
To decode: Convert hex to binary, each 1 represents a day with service.
ProductObject
A product we sell, such as a particular rail pass.
Fields
The product's key, e.g. interrail-global-pass.
Stable and safe to hardcode: this is the value the pass bundle filter accepts
as its product and the value a pass bundle reports as its product.
The product's name.
Whatever name the product carries in our catalog, in no guaranteed language. Suitable as a fallback label; supply your own copy where you need it localised or on-brand.
QuantityObject
An amount with its unit, a symbol such as "km" or "kg" meant for display.
Fields
RateLimitObject
Rate limit imposed for an agent to prevent API abuse.
Implements rate limiting to ensure fair usage of the API across all agents and to protect system resources from excessive requests.
When remaining reaches 0, requests are rejected until resetAt. Specific limits are determined by the commercial agreement with each agent.
Fields
RefundObject
A refund record capturing the execution of refund items for an order.
Fields
RefundableOfferItemObject
Contains the corresponding offer part of the refundable item
Fields
The amount that will be refunded
The passengers this item covers, when known
The offer parts that will be refunded
RefundablePassItemObject
Contains the corresponding pass item of the refundable item
Fields
The amount that will be refunded
The passengers this item covers, when known
The pass item that will be refunded
RefundOfferItemObject
Contains the corresponding offer part of the refund item
Fields
The amount that will be refunded
The passengers this item covers, when known
The offer parts that will be refunded
RefundPassItemObject
Contains the corresponding pass item of the refund item
Fields
The amount that will be refunded
The passengers this item covers, when known
The pass item that will be refunded
ReservationPartObject
The reservation part of an offer.
Represents the seat/berth reservation(s) and related options for the covered
segments. May expose configurable placeProperties (e.g., window/aisle,
quiet-zone) and optional ancillaries (e.g., luggage, meals). price reflects
the reservation cost for the part; the offer total is on Offer.price.
Fields
Everything the provider stated about this part: refund and exchange rules
(ReturnCondition), the dates the ticket may be used on (ValidityCondition)
and other rules of use (TravelCondition), in that order. Render every
entry's description; see Condition for how to treat the kinds.
The corporate codes the operator honored on this part, as it reported them. Empty when none applied, so a code sent at search that is missing here did not discount this part. On a journey sold as one offer per operator the code can apply to one operator's parts and not another's.
Whether this reservation part is included in the offer price
Whether this reservation part can be included or excluded by the user
ReturnConditionObject
A refund or exchange rule for the ticket. type says which of the two it is,
timeframe until when the rule applies, and description is the rule in
words.
Fields
Whether this is a refund or an exchange rule. A subset of ConditionType:
only ever REFUND, EXCHANGE or UNKNOWN.
SalesAgentObject
An authorized agent interacting with the API
Fields
The sales agent's display name, such as the company or agency name.
SalesAgentConnectionObject
Paginated sales agents list result
Fields
How many sales agents the whole list holds under the filter this page was
read with, counted when this page was read. Grants are given and revoked,
so paging through several pages can end on a different number.
SalesAgentEdgeObject
A sales agent edge in a paginated list
Fields
SeatAssignmentObject
A seat assignment for a passenger
Fields
SeatMapObject
A map of seats for each coach
Fields
SeatMapCoachObject
A coach with seats
Fields
Facilities marked on the floor plan, such as toilets, exits and bicycle spaces
SeatMapFeatureObject
A facility marked on a coach's floor plan
Fields
SeatMapFloorPlanObject
The floor plan of a coach, drawn landscape with the direction of travel to the left. Seats and features are positioned by their top-left corner in the plan's pixels.
Fields
SeatMapSeatObject
A seat on a coach
Fields
The way the seat faces, in degrees clockwise from the direction of travel on the floor plan: 0 faces the direction of travel, 180 faces away from it. Null when the provider doesn't say.
Whether the seat can be turned to face either way, in which case orientation
is only how it is set. Null when the provider doesn't say.
SegmentObject
Individual train segment representing a single physical train journey between two stops.
A segment is the atomic unit of travel - it represents one train/bus/ferry that
travels from origin to destination, possibly with intermediate stops but no
change of transport. Multiple segments can be combined to form an individual
journey leg, see SegmentCollection.
Fields
Distance traveled on this segment by one passenger, in km. Null when unknown, for example when we hold no coordinates for a station; always null on orders placed before the figures shipped and on refund items. A journey's distance is the sum of its segments, and unknown if any segment is unknown. The method is described on the distance and CO2 methodology page.
CO2 emitted for one passenger on this segment, in kg. Multiply by the number of passengers for the party. It is CO2e, well-to-wheel (it includes producing the energy), at average occupancy. Null when unknown, for example when we hold no coordinates for a station; always null on orders placed before the figures shipped and on refund items. A journey's CO2 is the sum of its segments, and unknown if any segment is unknown. The method is described on the distance and CO2 methodology page.
SegmentCollectionObject
A collection of connected segments that form a logical journey leg.
Represents a sequence of segments that:
- Share the same availability status
- Can be booked together
- Have common offer options
- Form a continuous path between major stops
Used to group related segments together for pricing and booking purposes.
Fields
Strings representing series of Positions encoded using the Google Maps Polyline algorithm.
May require decoding. See https://developers.google.com/maps/documentation/utilities/polylinealgorithm
SelectedFareObject
The selected fare of a journey offer
Fields
SelfServiceResourceObject
Resource that provides a self-service link for customers to manage their booking on the provider's website
Fields
Metadata about the self-service resource, e.g. the booking number and email
ServiceBrandObject
The brand of the service
Fields
SmartJourneyObject
A journey that optimizes for comfort by limiting daily travel time.
For short distances, provides direct connections when available. For longer routes, automatically segments the journey into multiple days to avoid excessively long travel times. This ensures passenger comfort and builds in buffer time in case of disruptions.
Segmentation logic considers factors like night trains, connection times, and time of day to determine whether splitting into multiple days would improve the overall experience.
This is the default journey type returned by the API.
Typical use cases:
- Long-distance trips that would be exhausting in a single day
- Routes where overnight breaks improve reliability
- Itineraries benefiting from night trains or natural break points
Fields
StopoverObject
Location for an overnight stopover
Fields
StripePaymentObject
Payment using Stripe
Fields
TicketDeliveryObject
The ticket delivery choice for an offer.
Record a pick with the setTicketDelivery mutation, before creating the order.
Fields
The ways this offer's tickets can be issued. Never empty — an offer with no
established delivery information carries no ticketDelivery at all — but it
can hold a single option, meaning delivery is known and there is nothing to
pick.
The recorded pick, or null when nothing has been picked yet — in which case
the operator applies its own default when the order is placed. Always one of
availableOptions.
TicketDeliveryOptionObject
One way an offer's tickets can be delivered.
Fields
How the tickets are handed to the traveler.
TicketOnDepartureObject
Ticket which can be retrieved on departure
Fields
TravelCardObject
A travel/discount card held by a passenger.
Represents loyalty, discount, or rail cards that may entitle the passenger to reduced fares. Examples include BahnCard (Germany), Halbtax (Switzerland), Carte Avantage (France), or Interrail.
Use the travelCardOptions query to discover available cards and their
required input fields.
Fields
TravelCardOptionObject
An available travel card type that passengers can hold.
Use the code field when constructing a TravelCardInput and consult
inputFields to determine which additional fields are needed.
Fields
Unique card type code
Human-readable name of the card
Fields required when using this card type
TravelConditionObject
A rule about how the ticket may be used, other than the dates it is valid on
(those are a ValidityCondition). type says what kind of rule it is,
description is always the complete text, and url is set when a web page
holds the full wording of this specific rule. Render description; when url
is present, make it a link.
Fields
What kind of rule this is. A subset of ConditionType: only ever ROUTE,
TRAIN_BOUND or RESTRICTION.
Web page holding the complete wording of this condition, or null when
there is none. Show it as a link, labeled by description. Today only
RESTRICTION conditions carry one.
UserObject
The authenticated end user, as identified by their user token (JWT)
Fields
The user's unique id
The user's email address
The user's given name. Null when their account carries none.
The user's family name. Null when their account carries none.
The user's own passenger profile, for prefilling their passenger details.
Null when the sales agent keeps no profile directory, when no profile in it belongs to this user, or when the directory could not be reached. None of those is an error — ask the traveler for their details instead.
ValidityConditionObject
The dates on which the ticket may be used. validFrom and validUntil are
inclusive calendar dates in the operator's local time zone, and they are
definite: travel may start on validFrom and no later than validUntil.
There is deliberately no time of day. Operators let the last valid day run on
into the following morning — UK National Rail until 04:29, Deutsche Bahn
Flexpreis until 10:00 — and they differ on what that overrun permits (starting
a journey, or only finishing one), so it is never encoded in these dates;
where a provider states it, it is in description. Do not convert the dates
to timestamps or shift them between time zones. A part with a TRAIN_BOUND
TravelCondition never has a ValidityCondition: the booked departure is its
validity. A part with neither has a provider that did not state a validity
window; it is not valid indefinitely.
Fields
First day, inclusive, on which travel may start. A calendar date in the operator's local time zone — for a ticket bought for a specific outbound date this is that date. Not a timestamp; do not attach a time or a time zone.
Last day, inclusive, on which travel may start; equal to validFrom for a
ticket valid on one day only. A calendar date in the operator's local time
zone. Operators extend this day into the following morning (UK National Rail
until 04:29, Deutsche Bahn Flexpreis until 10:00) and differ on what that
extension permits, so it is deliberately not part of this value; look in
description for it.
Whether the passenger may leave the station partway through the journey and
continue later on the same ticket, within the validity dates. true:
allowed. false: not allowed — the ticket buys one continuous journey.
null: the provider did not say; treat as unknown, never as allowed. UK
fares state this per ticket type; many other providers only imply it through
the fare family, and those arrive as null.
Interfaces
BookedOfferPartInterface
One part that makes up a booked offer.
Each part references the exact segments it applies to. The optional price
reflects the original cost of this part.
Possible types
BookedAdmissionPart BookedReservationPart
Fields
ConditionInterface
A rule attached to an offer part about using, refunding or exchanging the
ticket. Every condition carries description: complete, human-readable text
that is always safe to show on its own. Tell the kinds apart by __typename
and read their typed fields through inline fragments
(... on ValidityCondition { validFrom validUntil }). New kinds may be added
over time: render description for any __typename you do not recognize
rather than dropping the entry. The list holds only what the provider stated —
the absence of a kind (no ValidityCondition, no TRAIN_BOUND) means the
provider did not say, never that the rule does not apply.
type and timeframe sit on the interface only so that selections written
against the previous [ReturnCondition!]! shape keep validating; see their
deprecation reasons.
Possible types
ReturnCondition TravelCondition ValidityCondition
Fields
FareInterface
Fare offer for given itinerary item
Possible types
BookingFare JourneyFare SelectedFare
Fields
JourneyInterface
Journey result produced by any given search algorithm
Possible types
BlueprintJourney JourneyOffer NonStopJourney SmartJourney
Fields
NodeInterface
Any unique resource with an ID
Possible types
AccessToken BlueprintJourney Booking BookingFare JourneyFare JourneyOffer NoChargeRedirect NonStopJourney Offer Order PassBundle PassengerProfile PlacePreference Refund SelectedFare SmartJourney StripePayment
Fields
OfferPartInterface
One part that makes up an offer.
Each part references the exact segments it applies to. The optional price
reflects the cost of this part; the overall total is reported on
Offer.price.
Possible types
Fields
PassengerInterface
A passenger with minimal details
Possible types
FullPassenger PassengerPlaceholder
Fields
The corporate agreement codes the passenger was searched and booked with
The passenger profile this passenger was named by when the booking was
created, as passengerProfiles and me.profile return its id. It
identifies a profile in a profile directory, not a person: the passenger's
details are the booking's own, filled in from the profile when the booking
was created, and a later change to the profile does not reach them. Null
when no profile was named. Only booking creation sets it: updateBooking
cannot change it, and the order's passenger keeps it. node resolves it to
the profile, read from the directory again rather than from the booking (see
PassengerProfile.id).
The passenger's custom fields: every field the passenger's company defines
for its travelers in its profile directory, such as a cost center, an
employee number or a project number. The company is that of the passenger
profile this passenger was named by, else the booking's. Each field holds
the profile's value when the booking was created, or none. From then on
the values are the booking's own: a later change to the profile does not
reach them, updateBooking can set or change them until the booking's
order is paid or confirmed, and the order's passenger keeps them. Empty when the company has no profile directory.
Booking creation is refused when the company's fields cannot be read.
PaymentInterface
Represents a payment that needs to be processed to complete an order. The payment interface defines the common fields shared across different payment methods:
id: Unique identifier for the paymenturl: URL where the customer can complete the payment
Different payment implementations (like StripePayment or NoChargeRedirect)
may provide additional fields specific to their payment flow.
The payment URL typically redirects to a payment page hosted by All Aboard where the customer can securely enter their payment details.
Possible types
NoChargeRedirect StripePayment
Fields
PlaceAssignmentInterface
A place assignment for a passenger
Possible types
Fields
PlacementInterface
A placement on a coach, eg. a seat or a bed
Possible types
Fields
RefundableItemInterface
Represents a potential refund opportunity before execution
Possible types
RefundableOfferItem RefundablePassItem
Fields
The amount that will be refunded
The passengers this item covers, when known
RefundItemInterface
Represents a refund line item after execution has been initiated
Possible types
RefundOfferItem RefundPassItem
Fields
The amount that will be refunded
The passengers this item covers, when known
StopInterface
Generic train stop
Possible types
Fields
Enums
AccessTokenCapabilityEnum
What an access token may do on the order it is bound to.
READ is implied by WRITE, so a token minted with [WRITE] comes back
carrying both — a credential that may refund an order may read it.
Values
Read the order, its bookings, its refunds and its payments.
Start a refund of the order, and pay for it by card.
AccommodationTypeEnum
The type of accommodation available
Values
Seat in a seated area
Bed in a couchette cabin
Bed in a comfortable sleeper cabin
Accommodation is unknown
ConditionTypeEnum
Transitional union of ReturnType and the travel-condition kinds, present only
while Condition.type exists on the interface. Each concrete type returns only
its own values: ReturnCondition REFUND, EXCHANGE or UNKNOWN;
TravelCondition ROUTE, TRAIN_BOUND or RESTRICTION; ValidityCondition has no
meaningful type and returns UNKNOWN. The end state removes type from
Condition, narrows ReturnCondition.type back to ReturnType and
TravelCondition.type to TravelConditionType, and retires this enum. Do not
write new code against it: select type through ... on ReturnCondition or
... on TravelCondition.
Values
An exchange rule; only returned by ReturnCondition.
A refund rule; only returned by ReturnCondition.
The provider stated a refund or exchange rule without saying which — or the
condition is a ValidityCondition, which has no type.
The ticket is only valid on a particular route or with particular operators;
description says which. Example: "Only valid on booked London Northwestern
Railway and Northern services."
The ticket is only valid on the specific train(s) it was booked for; the
passenger may not take an earlier or later service. Typical of UK Advance
fares and Deutsche Bahn Sparpreis. A part carrying this never also carries a
ValidityCondition. A train-bound ticket cannot be broken: the passenger
travels the booked trains and changes only at the booked connections, so no
separate break-of-journey statement is made.
Time-of-day and day-of-week limits on when the ticket may be used — peak-hour
exclusions and the like — too detailed to repeat inline. description points
at the full rules and url links to the page holding them.
CustomFieldTypeEnum
The kind of value a custom field holds, as configured in the profile directory.
Values
A single line of text.
Text that may run over several lines.
Yes or no, typically a checkbox or toggle.
A calendar date.
A phone number, kept as written.
FieldRequirementEnum
Whether a travel card field is required
Values
The field must always be provided
The field is required under certain conditions
The field is optional
FlexibilityEnum
Flexibility of a fare
Values
No refunds or exchanges
Partly refundable or exchangeable
Fully refundable or exchangeable
Flexibility is unknown
JourneyStatusEnum
The current status for a journey result
Values
JourneyTypeEnum
Type of journey
Values
Journeys built from predefined itinerary blueprints (curated or editorial routes). May include planned stopovers and specific paths.
Fastest end-to-end journeys without planned overnight stopovers. Transfers may occur, but no intentional multi-day segments are included.
Comfort-optimized journeys that may split long routes across days to limit daily travel time and improve overall experience. Default type.
LogoVariantEnum
A version of an operator or service brand logo.
Values
The logo for light backgrounds.
The logo for dark backgrounds.
OnboardAmenityCategoryEnum
Categories of amenities describing onboard services and facilities
Values
OrderStatusEnum
Current status of an order
Values
Order is confirmed
Order is pending confirmation
The order has failed
All refundable items have been refunded
Some refundable items have been refunded
The refund attempt failed
The order has been voided
Unknown state
PassengerBundleTypeEnum
The resulting product type definition for a passenger
Values
PassengerTitleEnum
The perferred title of a passenger
Values
PassengerTypeEnum
The type of passenger
Values
Ages 28-59
Ages 0-27
Ages 60+
PaymentMethodEnum
Valid agent payment method
Values
PlaceAvailabilityEnum
The availability of a place, eg. seat or bed
Values
RateLimitUnitEnum
The unit for a given rate limit
Values
RefundItemStateEnum
State of a refund item
Values
RefundStateEnum
State of a refund
Values
ReturnConditionTimeframeEnum
Indicates if, and during what timeframe, an offer part is returnable/exchangeable. Use this field to signal:
- If the offer part is refundable/exchangeable or not
- If so, the relevant period (e.g. only before departure, or at any time) Consult the accompanying description for refund/exchange details (e.g. % refunded, fees).
Values
The offer part is refundable/exchangeable at any time, as described in the condition.
The offer part is refundable/exchangeable only up to the point of departure. See description for details.
The offer part is not refundable/exchangeable.
It is uncertain or varies when the offer part is refundable/exchangeable; see description for specifics.
ReturnTypeEnum
Type of return covered by a return policy
Values
SeatMapFeatureTypeEnum
The kind of facility a floor plan marks, named after OSDM's Graphics Items code list. Expect values to be added.
Values
SegmentCollectionStatusEnum
Status indicating whether a segment collection was successfully loaded or encountered an error
Values
The request is loading
The request was successful
Status could not be determined due to an error with a prior connection
An unexpected error occurred
Too many journey searches in a short time, retry later. See rateLimits on SalesAgent
Allow at least one day from todays date
No fares available for the requested connection
No timetable available for the requested date
No availability
The requested date falls outside current timetable planning period
Online prebook is not possible due to sales restrictions
The party is larger than the train operator behind this leg sells to in one booking
ServiceClassEnum
Normalized class of service
Values
Best class available, premium comfort with top-tier amenities and exclusive services
Standard first class, high comfort with enhanced seating and additional perks
Standard second class, balanced service with essential comfort and amenities
Most economical class available, minimal service focused on affordability and essential needs
Service class is not known
SortDirectionEnum
Sort direction for ordering results
Values
TicketDeliveryMethodEnum
How the tickets for an offer are handed to the traveler
Values
Delivered electronically; there is nothing to collect before travel.
Collected from a ticket machine at the departure station before travel, using the collection reference issued with the order.
TransportEnum
The mode of transport
Values
Unions
BookingSelectionUnion
Selections that can be part of a booking
Possible types
ItineraryItemUnion
Items that can make up the itinerary of a Journey
Possible types
OrderItemUnion
Items that can be part of an order
Possible types
OrderResourceUnion
A resource associated with an order
Possible types
CheckInResource FileResource PdfTicket SelfServiceResource TicketOnDeparture
PlaceMapUnion
A map of places on e.g. a leg of a journey
Possible types
Scalars
BooleanScalar
The Boolean scalar type represents true or false.
CustomFieldValueScalar
A custom field's value, typed by the field's type: a Boolean for
BOOLEAN, a date as a YYYY-MM-DD String for DATE, and a String for
INPUT, TEXTAREA and TEL.
DateScalar
Date string (ISO 8601 – YYYY-MM-DD)
DateTimeScalar
Naive date and time string, seconds omitted (ISO 8601 – YYYY-MM-DDThh:mm)
DurationScalar
ISO 8601 formatted string, e.g. PT2H15M, P2D, P1M
FloatScalar
The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.
IDScalar
The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.
IntScalar
The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.
JSONObjectScalar
The JSONObject scalar type represents JSON objects as specified by ECMA-404.
StringScalar
The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.
ZonedDateTimeScalar
A date-time string at UTC, such as 2007-12-03T10:15:30Z, compliant with the date-time format outlined in section 5.6 of the RFC 3339 profile of the ISO 8601 standard for representation of dates and times using the Gregorian calendar.
Inputs
AccessTokenRestrictionsInputInput
What an access token is narrowed to. Exactly one order today; the shape is an object so a later narrowing is an added field rather than a breaking change.
Fields
The order the token may reach, as its order_… id.
Nullable only so that omitting it fails with INVALID_RESTRICTIONS rather
than as a schema validation error — a token bound to nothing is never
minted. An order that does not exist, and one the caller may not read, both
fail with NOT_FOUND.
AddAncillaryInputInput
Ancillary to add to a booking for a given passenger
Fields
BookingSelectionInputInput
Selection for a booking
Fields
CorporateCodeInputInput
Input for attaching a corporate agreement code to a passenger
Fields
CostCenterInputInput
Selects a cost center to bill this passenger's travel against
Fields
CustomFieldInputInput
A new value for a custom field, named by its key.
Fields
The key of the custom field, as customFields returns it.
The new value, of the field's type as CustomFieldValue describes it:
a Boolean for a BOOLEAN field, a YYYY-MM-DD date for a DATE field,
a String otherwise. Text is trimmed. Null, or blank text, clears it. A
value that does not fit the field's type is refused.
FareSelectionInputInput
Selection of fare for a journey
Fields
FullPassengerInputInput
Full passenger details required to complete a booking.
Represents the complete set of passenger data that may be required by
ticketing providers and operators. Exactly one passenger per booking must be
marked as the contact person using isContactPerson: true. The contact person
must provide both email and tel so they can receive operational updates.
Notes:
- Only one passenger should be marked as contact person per booking
- When
isContactPersonis true,emailandtelmust be provided - Other fields may be required depending on operator (see
PassengerRequirements)
Fields
Phone number with country code (E.123)
Mark this passenger as the booking contact person; requires email, tel
Travel cards held by the passenger. Fixed when the booking is created. On updateBooking either leave the field out or echo the stored cards unchanged; any other value is rejected with TRAVEL_CARDS_IMMUTABLE, and null is read as an empty list rather than as an omission
Corporate agreement codes held by the passenger. Fixed when the booking is created. On updateBooking either leave the field out or echo the stored codes unchanged; any other value is rejected with CORPORATE_CODES_IMMUTABLE, and null is read as an empty list rather than as an omission
New values for the passenger's custom fields, each naming a field by its
key. Fields not listed keep their values; omit this field or send null to
change none. A key named twice, a key the passenger has no custom field
with, and a field that is readonly for you, are refused. Custom fields
cannot change once the booking's order is paid or confirmed.
GeoJSONInputInput
A point in GeoJSON format, following RFC 7946 and using the WGS84 coordinate system.
Coordinates are given as [longitude, latitude] (note the order), and type is
always "Point".
Examples:
- London: { type: "Point", coordinates: [-0.1278, 51.5074] }
- Stockholm: { type: "Point", coordinates: [18.0686, 59.3293] }
Fields
JourneyFilterInputInput
Filter for journey search results by journey type.
Use this to restrict which journey variants are returned. Supported types:
- SMART: Comfort-optimized journeys; may split long routes across days. Default journey type returned by the API.
- BLUEPRINT: Journeys based on predefined itinerary blueprints (curated or editorial routes), can include planned stopovers.
- NON_STOP: Fastest end-to-end journeys without planned overnight stopovers.
You can combine multiple types to retrieve several variants at once.
Fields
LocationInputInput
Identifies a location.
Holds the location's uid today. Future identifiers will be added as further
optional fields rather than as new arguments.
Fields
Unique identifier of the location
LocationsFilterInput
Narrows and orders locations. Every field is optional, and which of query
and near are given decides the order: query ranks by relevance, near
without query orders by distance, and neither keeps the stable walk order.
countryCode and isMeta only narrow.
Fields
Text to find locations by: a name, part of one, or an alias, optionally with an English country name ("paris france"). Case and diacritics are ignored, so "Koln" finds "Köln". Every word has to match. Best matches first: the whole text equal to a name or alias, then starting one, then each word starting a word, then close misspellings. Among equal matches a city comes before its stations and a popular location before a rare one. Empty or blank text is no text.
ISO 3166-1 alpha-2 country the locations must be in.
A GeoJSON Point, [lng, lat]. Without query the locations are ordered by
their distance from it; with query it only breaks ties between equally
good matches.
With near: leaves out locations further away than this many metres.
Only cities (true) or only single stations and stops (false).
OfferSelectionInputInput
Selection of offer for a journey
Fields
OrdersFilterInput
Narrows orders. Every field set must match.
Fields
Text to find orders by. An order reference, a legacy numeric order id, a
provider booking reference (PNR or DNR), a pass number or an Interrail
order number matches when it equals the whole text; a passenger name
("first last") or email matches when it contains it. Case is ignored and
double quotes are dropped. Names and emails are matched as a regular
expression, so . matches any character, and text with an odd number of
double quotes or that is not a valid regular expression is refused. Empty
or blank text is no text.
Only orders that belong to this sales agent: the order's salesAgent, the
agent whose cost center it is on, not createdBy.salesAgent. Your own uid
or one accessibleSalesAgents lists; any other uid, whether a sales agent
has it or not, is refused with UNAUTHORIZED.
Only orders this user created: createdBy.user.id. That is the person who
placed the order, not a traveler on it, so an order someone else booked
for a person is not among theirs. Orders created with an API key have no
user and never match. An id that is not a user id is refused with
INVALID_ARGUMENT; a user who created none of the orders you can see
leaves an empty list.
PassBundleFilterInputInput
Filter for filtering pass bundles by various criteria.
Supported filters:
- product: Filter by specific pass product type, e.g. "interrail-global-pass"
- class: Filter by travel class (e.g. "1stclass" or "2ndclass")
- campaignCode: Filter by promotional campaign code, e.g. "INTERRAIL_2025"
Use this to narrow down pass bundle results when searching for available passes.
Fields
PassengerPlaceholderInputInput
Input type for basic passenger details. When specifying a passenger's age, either:
- Provide the
birthDatefield with their date of birth, OR - Provide the
agefield with their age at time of travel
For passenger types YOUTH and SENIOR, one of these age fields must be
provided to validate eligibility for age-based fares and discounts.
For the ADULT passenger type, age fields are optional.
Fields
Age at the time of travel
Travel cards held by the passenger. They are part of the price, so pass the same cards when pricing the journey and when creating the booking
Corporate agreement codes priced into this passenger's offers. They are part of the price, so pass the same codes when pricing the journey and when creating the booking. Every passenger in a search or booking carries the same codes, or the request is refused with CORPORATE_CODES_MIXED: passengers on different agreements are searched and booked separately
Cost center to bill this passenger against; defaults to the agent's default cost center
The passenger profile this passenger is, as passengerProfiles and
me.profile return its id. The profile supplies the birth date, the
travel cards and, where the request is priced on a cost center (journey
search and booking), the cost center. A field sent here overrides the
profile's: a type, age or birthDate sent here replaces the profile's
birth date, so a YOUTH or SENIOR type then needs an age, as for any
passenger. Otherwise type and age are derived from the profile's birth
date at the travel date, so a request naming a profile passenger needs a
date to derive them at, such as a departure date. A profile without a
birth date is priced as an ADULT unless a type or age is sent.
Booking creation fills the passenger's details from the profile, where
updateBooking can change them. Null names no profile, and a null field
takes the profile's.
Naming any profile but the viewer's own requires the
passenger_profiles:read scope (FORBIDDEN). A profile that does not
exist and one the caller may not book for are both
PASSENGER_PROFILE_NOT_FOUND; a profile that cannot be read fails the
request (NO_PROFILE_DIRECTORY, UPSTREAM_UNAVAILABLE). Booking creation
refuses two passengers naming the same profile (INVALID_ARGUMENT).
Search results show nothing of the profile beyond the type and age.
PassengerProfilesFilterInput
What to search passenger profiles by. query is required.
Fields
Text to find passenger profiles by, at least one character besides
blanks, else INVALID_ARGUMENT. Matched against names the way the
directory's own search does, or against email addresses when it
contains an @.
Narrows the search to the passenger profiles of this sales agent: the
caller's own, or one of accessibleSalesAgents, else UNAUTHORIZED; one
whose orders are off is FORBIDDEN. It must be a company in the
profile directory, else INVALID_ARGUMENT. Without it the search
spans every company the caller may book for.
PassPassengerInputInput
Passenger details for passholder
Fields
PlacePropertyInputInput
Place property to update
Fields
PlaceSelectionInputInput
A place selection for a passenger
Fields
RemoveAncillaryInputInput
Ancillary selection to remove from a booking
Fields
SalesAgentsFilterInput
Narrows a list of sales agents. Every field set must match.
Fields
Text to find sales agents by: part of a name or a uid. Case is ignored. Best matches first: a name or uid equal to the text, then one starting with it, then a word of the name or a part of the uid starting with it, then any other match. Equal matches are in name order, a sales agent without a name by its uid. Empty or blank text is no text.
SeatSelectionInputInput
A seat selection for a passenger
Fields
TravelCardInputInput
Input for attaching a travel card to a passenger
Fields
ViaInputInput
Via stopover for a journey to break up long trips.
Allows passengers to specify intermediate locations where they want to stop and spend time before continuing their journey. This is useful for long-distance travel where passengers want to explore cities along the way or break up overnight journeys.
Field requirements:
- uid: Required - the location UID where the stopover occurs
- duration: Optional - how long to stay (e.g., "P2D" for 2 days) If not specified, the journey will simply route via that location with a change of trains (no extended stopover)