---
title: "Update Activities"
method: PUT
path: "/api/v1/itineraries/{externalId}/activities"
tags: ["Itinerary"]
---

# Update Activities

`PUT /api/v1/itineraries/{externalId}/activities`

## Request

- Base URL: `https://www.endlesstravelplans.com`
- URL: `https://www.endlesstravelplans.com/api/v1/itineraries/{externalId}/activities`
- Auth: HTTP bearer

Two accepted shapes, deliberately:

  `itinerary_data`: the legacy wholesale replace. The caller owns the
  entire itinerary and everything absent from the payload is gone.

  `days`: the delta the live app actually sends: the complete activity
  list of each TOUCHED day, where each row carries only the keys the app
  knows (id + sort_order/is_completed/rating). Sending that through the
  wholesale path is what silently thinned stored activities down to four
  keys: descriptions, coordinates, prices and travel legs all lost on the
  first reorder. This branch MERGES instead: it is the only write path the
  app uses, and it can never remove a field or a row.

## Request body

- object
  - `itinerary_data` object[]: The complete itinerary data (legacy wholesale replace). Required without `days`.
  - `days` object[]: Per-day activity deltas: [{day_number, activities: [{id, sort_order, is_completed, rating}]}]. Required without `itinerary_data`.
    - `day_number` integer, required
    - `activities` object[]
      - `sort_order` integer, nullable
      - `is_completed` boolean, nullable
      - `rating` number, nullable
  - `markers` object[]: Map marker data.

## Response `200`

- object
  - `itinerary` object
    - `external_id` string

## Other responses

- `401`: unauthenticated: No valid bearer token was sent.
- `422`
- `429`: rate_limited: A throttle or a per-account allowance refused the request; `retry_after` or `remaining` may be present.
- `500`

---

[API](https://skmtc.dev/endlesstravelplans/apis/endless-travel-plans-api.md) · [All operations](https://skmtc.dev/endlesstravelplans/apis/endless-travel-plans-api/llms.txt) · [OpenAPI document](https://skmtc.dev/endlesstravelplans/apis/endless-travel-plans-api/revisions/ae82ed3e4a8f?raw)
