---
title: "The planner conversation and open proposals"
method: GET
path: "/api/trips/{id}/plan"
tags: ["Planner"]
---

# The planner conversation and open proposals

`GET /api/trips/{id}/plan`

## Request

- Base URL: `https://trvlrr.app`
- URL: `https://trvlrr.app/api/trips/{id}/plan`
- Auth: HTTP bearer

## Path parameters

- `id` string, required: The trip id.

## Response `200`

Messages, open proposals and whether a turn is in progress.

- PlanState
  - `messages` PlanMessage[], required
    - `role` 'user' | 'assistant', required
    - `content` string, required
    - `created_at` string, required
  - `proposals` PlanProposal[], required: Open proposals.
    - `id` string, required
    - `kind` 'stay' | 'segment' | 'activity' | 'place' | 'trip_dates', required
    - `payload` object, required: The proposed item, shaped like the matching input.
    - `rationale` string, nullable, required
    - `status` string, required
  - `turn` object, required
    - `state` 'idle' | 'pending' | 'failed', required
    - `error` string, nullable, required

## Other responses

- `401`: No usable credential: a Clerk session token, a device token or an OAuth access token is required.
- `402`: Trvlrr Plus is required, or this month's AI allowance is used up.
- `404`: No such thing, or not one the caller can see.

---

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