---
title: "Build the full day-by-day plan for one of the user's trips FROM THEIR OWN saved points: days honoring the trip's pace, t"
method: POST
path: "/actions/build_trip_plan"
tags: ["itinerary"]
---

# Build the full day-by-day plan for one of the user's trips FROM THEIR OWN saved points: days honoring the trip's pace, t

`POST /actions/build_trip_plan`

## Request

- Base URL: `https://findinghorizons.ca/api/v1`
- URL: `https://findinghorizons.ca/api/v1/actions/build_trip_plan`
- Auth: OAuth 2 (authorization code, authorization URL `https://findinghorizons.ca/api/mcp/authorize`, token URL `https://findinghorizons.ca/api/mcp/oauth/token`, scopes: `itinerary:read`)

Build the full day-by-day plan for one of the user's trips FROM THEIR OWN saved points: days honoring the trip's pace, transport blocks between city hops (booked flights/trains with airport-survival lead-ins, or mode recommendations weighted by budget), and every ≥4-hour gap with filler suggestions from live events and community points. This runs the app's own deterministic planner — no server-side AI; you (the connected assistant) do the reasoning on top. It is a READ: it shows the plan as it stands and changes nothing (it never adds saves to the trip or saves the plan).

## Request body

- object
  - `tripId` string, required: Trip id from get_my_trips
  - `today` string: The traveller's own date, YYYY-MM-DD, where the action needs one

## Response `200`

Done — { ok, api, action, result, card, operation? }

## Other responses

- `400`: Bad body / missing Idempotency-Key
- `401`: No or invalid token
- `403`: Scope not granted
- `422`: The action said no
- `429`: Rate limited

---

[API](https://skmtc.dev/findinghorizons/apis/finding-horizons-api.md) · [All operations](https://skmtc.dev/findinghorizons/apis/finding-horizons-api/llms.txt) · [OpenAPI document](https://skmtc.dev/findinghorizons/apis/finding-horizons-api/revisions/e347f6070173?raw)
