---
title: "Add an activity"
method: POST
path: "/api/trips/{id}/experiences"
tags: ["Activities"]
---

# Add an activity

`POST /api/trips/{id}/experiences`

## Request

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

A restaurant, place, activity or note on a trip. A city given here is recorded among the trip's places.

## Path parameters

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

## Request body

- ExperienceCreate
  - `kind` 'restaurant' | 'place' | 'activity' | 'note', required: restaurant, place, activity or note.
  - `name` string, required: What it is, e.g. teamLab Planets or Sukiyabashi Jiro.
  - `city` string, nullable: City.
  - `country` string, nullable: Country (name or ISO code).
  - `locality` string, nullable: The city it belongs to.
  - `locality_country` string, nullable: ISO alpha-2 of that city.
  - `date` string, nullable: Date, YYYY-MM-DD. Optional.
  - `time` string, nullable: Local time "HH:MM". Optional.
  - `tz` string, nullable: IANA time zone.
  - `at_utc` string, nullable: Derived; only set to override.
  - `rating` integer, nullable: 1–5, for places already visited.
  - `note` string, nullable: A note about it.
  - `price_raw` string, nullable: Price with currency.
  - `lat` number, nullable: Latitude.
  - `lon` number, nullable: Longitude.
  - `remind_on` string, nullable: A day to be reminded about it. Date, YYYY-MM-DD. null clears it.
  - `remind_time` string, nullable: Time of day for the reminder, "HH:MM" local; empty means 09:00.
  - `payment_status` 'paid' | 'due' | 'on_arrival' | 'null', nullable: paid, due (to pay before the trip) or on_arrival (pay there or on the day).
  - `payment_method` 'card' | 'cash' | 'null', nullable: card or cash.

## Response `201`

The new activity.

- Experience
  - `id` string, required
  - `trip_id` string, required
  - `kind` 'restaurant' | 'place' | 'activity' | 'note', required
  - `name` string, required
  - `city` string, nullable, required
  - `lat` number, nullable, required
  - `lon` number, nullable, required
  - `date` string, nullable, required: Date, YYYY-MM-DD.
  - `rating` integer, nullable, required
  - `note` string, nullable, required
  - `created_by` string, nullable, required
  - `created_at` string, required
  - `time` string, nullable, required: Local time "HH:MM".
  - `price_raw` string, nullable, required
  - `booked_at` string, nullable, required
  - `done` integer, required: 0 or 1.
  - `journal` string, nullable, required
  - `category` string, nullable, required
  - `planning_state` string, nullable, required
  - `country` string, nullable, required: ISO alpha-2.
  - `cancellation_state` string, nullable, required
  - `cancelled_reason` string, nullable, required
  - `tz` string, nullable, required
  - `at_utc` string, nullable, required
  - `remind_on` string, nullable: Date, YYYY-MM-DD.
  - `remind_time` string, nullable: "HH:MM"; empty means 09:00.
  - `payment_status` string, nullable
  - `payment_method` string, nullable

## Other responses

- `400`: The request is malformed or fails validation.
- `401`: No usable credential: a Clerk session token, a device token or an OAuth access token is required.
- `403`: The caller may not do this to this account or trip.
- `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)
