Flex Plans

A Flex Plan is the purchasable Flex product for a specific departure. There is a unique flex_plans instance per Flex Tier per Departure, exposing the Flex price for that departure per room and price band (e.g. ANY, ADULT, CHILD).

The plan’s name is inherited from the referenced Flex Tier (flex_tier.name), not from the departure. Flex is priced as a percentage of the tour cost; the resolved monetary amounts for the departure appear under rooms[], per room, price band, and currency.

Flex Plans are discovered through the addons[] list on the Departures resource, in the same way as other add-on products. Purchasing a Flex Plan creates a Flex Plan Service on the booking.

This resource is read-only.

Availability

There is no availability.total field on a Flex Plan - Flex is not inventory-managed. The availability.status field exposes two values:

  • AVAILABLE - the plan can be purchased.

  • NOT_BOOKABLE - the plan cannot be purchased. A plan becomes NOT_BOOKABLE once the departure enters the Flex stop-sell window (60 days before the departure start date, or 90 days for National Geographic Signature departures), or when the plan has been superseded by a newer Flex Plan for the same tier and departure (for example after a price-percentage change).

Note that an AVAILABLE plan can still only be attached to a booking within the 48-hour late-attach window after the original departure confirmation - see Flex Plan Services for the purchase constraints.

Fields

Name

Type

Description

id (read-only)

String

href (read-only)

Field

date_created

Datetime

The time when the resource was created, in the standard Dates & Times.

name (required)

String

The name of this resource.

product_line (required)

String

A shared code for this flex plans tier

sku (required)

String

A unique code for this flex plans

type (required)

String

The type of this resource.

sub_type (required)

String

A brief description of the type of product.

finish_date (required)

Date

The date this product ends, in the standard Dates & Times.

booking_company (read-only)

Reference Object

The booking_company for this product

flex_tier (read-only)

Reference Object

The flex tier for this plan.

flex_cancellation_terms (read-only)

Reference Object

The flex cancellation terms for this plan.

departure (read-only)

Reference Object

The departure for this plan.

availability (required)

Nested Object

  • status (required)

Choice

The availability status for this flex plans product. Can be one of ‘AVAILABLE’ or ‘NOT_BOOKABLE’

rooms (required)

Field

A list of available rooming options.

  • code (required)

String

A unique code for this room that is used when creating a booking. This code will never change and can be used as an identifier.

  • name (required)

String

The name of this room.

  • price_bands (required)

Field

Pricing information for this room option on this product.

    • code (required)

String

A unique code for this Pricing option. Possible values are: ‘ANY’, ‘ADULT’, ‘CHILD’, ‘INFANT’.This code will never change and can be used as an identifier.

    • name (required)

String

The name of this Pricing option. This is usually a string representation of the minimum/maximum ages for this Pricing option (e.g. Adult, Child, Infant, etc).

    • min_age (required)

Integer

The minimum age of a traveller (on the start date of this product) that can receive this Pricing option.

    • max_age (required)

Integer

The maximum age of a traveller (on the start date of this product) that can receive this Pricing option.

    • prices (required)

Field

The prices for this price_band.

      • currency (required)

String

The currency ISO code, in the standard Currencies & Prices.

      • amount (required)

Decimal

The amount for this Pricing option, in the standard Currencies & Prices.

      • deposit (required)

Decimal

The deposit amount needed as a payment before a booked service on this product and Pricing option can be confirmed, in the standard Currencies & Prices.

      • promotions (required)

Field

A list of promotions associated with this product. As expected, a promotions Webhooks will fire when it is modified. Clients should then iterate through the list of promotion ‘products’ in order to pull new promotional pricing data. The best promotions (largest discount) are displayed first.

        • id (read-only)

String

        • href (read-only)

Field

        • amount (required)

Decimal

The promotion amount for this Pricing option, in the standard Currencies & Prices.

Get a Flex Plan

GET /flex_plans/(string: flex_plan_id)/

Discovering Flex Plans on a Departure

Flex Plans appear in the addons[] list of the Departures resource with type set to flex_plans and sub_type set to Flex:

{
  "id": "1234567",
  "href": "https://rest.gadventures.com/departures/1234567/",
  "addons": [
    {
      "product": {
        "id": "111",
        "href": "https://rest.gadventures.com/flex_plans/111/",
        "name": "Flexier",
        "type": "flex_plans",
        "sub_type": "Flex"
      },
      "start_date": "2026-08-01",
      "finish_date": "2026-10-01",
      "min_days": 0,
      "max_days": 0,
      "request_space_date": null,
      "halt_booking_date": "2026-10-01"
    }
  ]
}

Note

Flex is not offered where CEU (Central European (DACH) - Austria, Switzerland, or Germany) terms apply.