OpenTrip Docs
BackendHTTP API

Route index

Route index

Full inventory relative to createApp in app.ts. Paths are absolute from the API origin. Auth: public | session | session + member | session + edit | session + canInvite.

Platform

MethodPathAuthPurpose
GET, POST/api/auth/*Better AuthSign-in, sign-up, session, OAuth, etc.
GET/api/mobile-auth/oauth/startpublic302 to Google with OAuth state cookies
GET/api/mobile-auth/oauth/completeOAuth cookieRedirect to the app with a one-time code
POST/api/mobile-auth/oauth/exchangeone-time codeExchange code for a native Bearer session
POST/api/mobile-auth/webview/mintshell bearerMint a single-use WebView bridge code
POST/api/mobile-auth/webview/exchangeone-time codeExchange code for Better Auth HttpOnly cookies
GET/api/trips/:tripId/realtimesession + memberWebSocket upgrade for trip changes + presence
GET/api/healthpublicLiveness { status: "ok" }
GET/api/uploads/*publicImmutable managed file bytes
GET/api/weathersessionForecast/observed weather
GET/api/fx/ratessessionFX rate table for settle-up display
GET/api/agent/statussessionWhether trip agent is enabled

Trips

MethodPathAuthPurpose
GET/api/tripssessionList trip summaries for the current user
POST/api/tripssessionCreate trip (caller becomes owner)
GET/api/trips/:idsession + memberFull trip DTO
PATCH/api/trips/:idsession + editRename trip, or { clearAgentSeedPending: true }

Street view

MethodPathAuthPurpose
GET/api/trips/:tripId/street-view/imagessession + memberSearch nearby normalized imagery
GET/api/trips/:tripId/street-view/images/:imageIdsession + memberTrusted image metadata
GET/api/trips/:tripId/street-view/images/:imageId/previewsession + memberProxied static preview bytes
GET/api/trips/:tripId/street-view/viewer-configsession + memberMinimum interactive viewer configuration

Itinerary days

MethodPathAuthPurpose
POST/api/trips/:id/dayssession + editAppend empty day
PATCH/api/trips/:id/days/:daysession + editUpdate day metadata (:day = day number)
PUT/api/trips/:id/days/ordersession + editReorder days
DELETE/api/trips/:id/days/:daysession + editDelete a day (renumbers remaining)

Stops

MethodPathAuthPurpose
POST/api/trips/:id/stopssession + editInsert stop
PATCH/api/trips/:id/stops/:stopIdsession + editUpdate stop display metadata
PUT/api/trips/:id/stops/:stopId/positionsession + editMove stop to day/index
POST/api/trips/:id/stops/:stopId/votesession + editToggle current-user vote (viewers 403)
POST/api/trips/:id/stops/:stopId/commentssession + editAdd comment (viewers 403)
POST/api/trips/:id/mediasession + editUpload stop-note image (multipart)

Expenses

MethodPathAuthPurpose
POST/api/trips/:id/expensessession + editAdd expense
PATCH/api/trips/:id/expenses/:expenseIdsession + editReplace expense fields

Reservations

MethodPathAuthPurpose
GET/api/trips/:id/reservationssession + memberList reservations
POST/api/trips/:id/reservationssession + editCreate idempotently
PATCH/api/trips/:id/reservations/:reservationIdsession + editUpdate by revision
POST/api/trips/:id/reservations/:reservationId/cancelsession + editCancel by revision
DELETE/api/trips/:id/reservations/:reservationIdsession + editDelete by revision

Invites

MethodPathAuthPurpose
POST/api/trips/:id/invitessession + canInviteCreate or regenerate invite link
GET/api/trip-invites/:tokenpublicInvite preview
POST/api/trip-invites/:token/acceptsessionAccept invite (join trip)

User

MethodPathAuthPurpose
GET/api/users/preferencessessionUI preferences
PUT/api/users/preferencessessionPlanner sidebar prefs
PUT/api/users/preferences/agent-panelsessionAgent panel collapsed
POST/api/users/avatarsessionUpload avatar (multipart)
DELETE/api/users/avatarsessionRemove managed avatar

Agent (per trip)

All agent trip routes return 404 agent_disabled when AI is not configured. Membership rules still apply when the agent is enabled.

MethodPathAuthPurpose
GET/api/trips/:tripId/agent/messagessession + memberShared history
POST/api/trips/:tripId/agent/messagessession + memberPost plain message
POST/api/trips/:tripId/agent/chatsession + memberStream agent reply
GET/api/trips/:tripId/agent/eventssession + memberPoll after cursor
POST/api/trips/:tripId/agent/suggestions/:suggestionId/approvesession + memberApprove/deny suggestion
POST/api/trips/:tripId/agent/suggestions/:suggestionId/applysession + editAlias approve true
POST/api/trips/:tripId/agent/suggestions/:suggestionId/dismisssession + memberAlias approve false

← API index · Platform · Trips · Itinerary · Expenses · Reservations · Invites · User · Agent

On this page