---
title: "Explore Trip Modules"
method: GET
path: "/explore/trips/modules"
tags: ["explore"]
---

# Explore Trip Modules

`GET /explore/trips/modules`

The Saved tab's per-trip rail anchors: the top 4 soonest UPCOMING trips
(past excluded, undated after dated), each resolved to its first servable
region anchor — PLUS anchors for any `trip_ids` the caller names.

`trip_ids` exists because the client's context pills are picked by a
different rule than this ranking, so a pill regularly named a trip the
ranked list had no room for; the client's lookup missed, and the surface
fell through to a feed anchored somewhere else entirely (audit §1-2). The
caller knows what is on screen — it says so, and the lookup becomes total.
One question, one endpoint, one answer per trip.

Anchors come back soonest-first with named extras last, so a client taking
a prefix still gets the ranked set. Two trips may now share a region: that
is a fact about the trips, and collapsing them into one rail is the
renderer's call, not this endpoint's.

## Query parameters

- `trip_ids` string[], nullable

## Headers

- `x-client-build` string, nullable

## Response `200`

Successful Response

- TripRegionAnchor[]
  - `trip_id` string, required
  - `trip_title` string, nullable, required
  - `rung` 'country' | 'region' | 'city', required
  - `label` string, required
  - `country` string, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/stardrift/apis/fastapi.md) · [All operations](https://skmtc.dev/stardrift/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/stardrift/fastapi/revisions/00746572572a/schema)
