---
title: "Create Trip"
method: POST
path: "/trips"
---

# Create Trip

`POST /trips`

Create a new trip with initial message and start streaming response.

## Request body

- ApiIndexCreateTripRequest
  - `message` string, required
  - `model_choice` 'fast' | 'deep', nullable
  - `onboarding` OnboardingPayload — Onboarding answers sent alongside the user's first chat message.
    - `interests` OnboardingInterest[]
      - `category` string, required
      - `subcategories` string[]
    - `vibe` string[]
    - `destinations` string[]
    - `destination_country` string, nullable
    - `start_date` string, nullable
    - `end_date` string, nullable
    - `duration` 'weekend' | 'week' | 'two_weeks' | 'longer', nullable
    - `travelers` string[]
    - `pace` 'relaxed' | 'balanced' | 'packed', nullable
    - `place_ids` string[]
    - `home_location` HomeLocation — The user's home locality and home airports. Provenance drives the confirmation UX: backfilled values carry ``source="auto"`` with ``confirmed_at=None`` until the user accepts or edits them; anything the user picks or accepts is confirmed. The decision engine may consume unconfirmed values, but the app keeps nudging until ``confirmed_at`` is set.
      - `place_id` string, required — Google place_id of the selected locality
      - `lat` number, required
      - `lng` number, required
      - `city` string, required — Canonical locality name, e.g. "São Paulo"
      - `region` string, nullable — Admin area, e.g. "SP" or "California"
      - `country` string, required
      - `country_code` string, nullable — ISO-3166-1 alpha-2, e.g. 'BR'
      - `airports` string[] — Home-airport IATA codes, ordered by relevance
      - `source` 'user' | 'auto'
      - `confirmed_at` string, date-time, nullable
      - `raw_input` string, nullable — Free text the user typed, or the pre-migration users.city value
    - `home_location_skipped` boolean
  - `from_onboarding` boolean
  - `eclipse_mode` boolean
  - `entry_point` string, nullable

## Response `200`

Successful Response

- CreateTripResponse
  - `id` string, required
  - `conversation_id` string, required
  - `should_show_onboarding` boolean, required
  - `created_at` string, date-time, required
  - `updated_at` string, date-time, required
  - `places_attached` integer

## 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)
