# TripServices APIs Full Workflow with Optional Steps

The following diagram shows all required API requests in the TripServices API workflow plus several optional steps.

Each box in the diagram represents one API call in the workflow.

Some of these steps can take place at other points in the workflow; see these guides for support details:

- See [All Book and Ticketing Workflows](/docs/flights/workflows/booking-and-ticketing/all-book-and-ticketing-workflows) for all booking options.
- [Fare Rules](/docs/flights/guides/fare-rules-guide) can be requested after Search, after Price, or for an existing reservation.
- Seats and ancillaries can be added either during booking or ticketing, or in a separate workbench session, per the [Seats](/docs/flights/guides/seats-and-ancillaries/seats-guide) and [Ancillaries](/docs/flights/guides/seats-and-ancillaries/ancillaries-and-emd-guide) guides.
- [Comments and special service requests](/docs/flights/guides/booking-and-reservations/remarks-and-service-requests) can be added either in the initial booking flow or in a post-commit session.
- [Form of payment](/docs/flights/guides/booking-and-reservations/flights-booking-guide) for GDS can be added during either initial booking or ticketing. Form of payment for NDC can be added at ticketing.


```mermaid
flowchart TD

    A["Search for <br/>flights"]
    B["Flight Specific <br/>Search <br/>(optional)"]
    C["Price <br/>(required for <br/>some low-cost <br/>& NDC carriers)"]
    D["Standalone fare <br/>rules <br/>(optional)"]
    E["Create <br/>new workbench"]
    F["Add <br/>offer"]
    G["Add <br/>traveler/s <br/>(traveler <br/>remarks optional)"]
    H["Seat map <br/>(optional)"]
    I["Book seat/s <br/>(optional; <br/>repeat for each <br/>segment)"]
    J["Commit <br/>workbench; <br/>create <br/>reservation"]
    K["Create post- <br/>commit <br/>workbench"]
    L["Add <br/>non-traveler <br/>remarks <br/>(optional)"]
    M["Ancillary shop <br/>(optional)"]
    N["Ancillary price <br/>(required for NDC <br/>ancillaries; <br/>not supported <br/>for GDS)"]
    O["Book ancillary <br/>(optional)"]
    P["Commit <br/>workbench"]
    Q["Create post- <br/>commit <br/>workbench"]
    R["Form of <br/>payment"]
    S["Payment for air, <br/>seats, and <br/>ancillaries"]
    T["Commit <br/>workbench; <br/>issue <br/>ticket/s & EMDs"]

    A --> B --> C --> D --> E --> F --> G --> H --> I --> J --> K --> L --> M --> N --> O --> P --> Q --> R --> S --> T
```

Note that the above TripServices APIs workflow uses reference payload requests, which send identifiers to select an offer from previous TripServices API responses. Optionally, you can send the AirPrice full payload request and omit the Search request, or send an Add Offer full payload request and omit the Search and AirPrice requests. This allows you to source your flights outside the TripServices APIs and skip these steps of the TripServices workflow.

Paid ancillaries such as seats or baggage require a separate payment, which issues an EMD. This payment can be added during booking or later. If payment is sent for both the ancillary and the offer, both an EMD and ticket/s are issued. Or, you can send payment for only the ancillary and issue only the EMD at commit.