Skip to main content

Method

GET /v1/products/:id/itinerary

Path Parameters

id
uuid
required
Product ID.

Query Parameters

locale
string
Optional locale override (e.g., fr, en-GB) for day titles/descriptions.
include
string
Comma-separated list of extras to include: segments and/or options.

Headers

Authorization
string
Bearer token (requires products:read).

Request Example

curl "https://api.voyantcloud.com/v1/products/prod_123/itinerary?locale=fr&include=segments,options" \
  -H "Authorization: Bearer $VOYANT_API_KEY"

Response

{
  "itinerary_id": "iti_01J0C3M4N7Z4YB8V5KT7S01Q2X",
  "version_id": "itv_01J0C3MY5Y2D2T3GQH1FH0N4JM",
  "days": [
    {
      "id": "day_001",
      "day_no": 1,
      "title": "Arrivée et installation",
      "description": "Accueil à l'aéroport et transfert à l'hôtel.",
      "thumbnail_url": null,
      "thumbnail_asset_id": null,
      "segments": [
        {
          "id": "seg_001",
          "day_id": "day_001",
          "sort": 1,
          "title": "Transfert privé",
          "description": "Chauffeur anglophone",
          "place_id": "ChIJd_Y0eVIvkIARuQyDN0F1LBA",
          "start_time": "09:00",
          "end_time": "10:30",
          "option_groups": [
            {
              "id": "grp_001",
              "activity_id": "seg_001",
              "type": "addons",
              "label": "Extras",
              "description": null,
              "min_selections": 0,
              "max_selections": 2,
              "is_required": false,
              "sort_index": 1,
              "options": [
                {
                  "id": "opt_001",
                  "group_id": "grp_001",
                  "label": "Champagne à bord",
                  "description": "Bouteille de champagne brut",
                  "price_delta": 45,
                  "currency": "EUR",
                  "duration_minutes": null,
                  "inventory_sku": null,
                  "capacity_per_slot": null,
                  "timeslot_rule_id": null,
                  "min_qty": 0,
                  "max_qty": 1,
                  "is_default": false,
                  "sort_index": 1
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}
include=options implies segments and expands each segment with option_groups. Use include=segments alone when you only need segment ordering without options.