---
title: "WRITE: put places YOU suggested in this conversation on the traveller's map, when they ask you to plot or save them (\"pl"
method: POST
path: "/actions/plot_places"
tags: ["places"]
---

# WRITE: put places YOU suggested in this conversation on the traveller's map, when they ask you to plot or save them ("pl

`POST /actions/plot_places`

## Request

- Base URL: `https://findinghorizons.ca/api/v1`
- URL: `https://findinghorizons.ca/api/v1/actions/plot_places`
- Auth: OAuth 2 (authorization code, authorization URL `https://findinghorizons.ca/api/mcp/authorize`, token URL `https://findinghorizons.ca/api/mcp/oauth/token`, scopes: `places:write`)

WRITE: put places YOU suggested in this conversation on the traveller's map, when they ask you to plot or save them ("plot those", "add them to my map"). Give each place's name plus its city and country. A place the Finding Horizons community has already verified is saved at once, free, with your name kept as its source. A place nobody has verified yet is returned in `needsImport`: send each through import_from_url with text "<name>, <city>, <country>" — never invent coordinates. Already-saved places come back in `alreadySaved`. To add the plotted places to a trip afterwards, use update_trip_stops with their ids.

## Headers

- `Idempotency-Key` string, required
- `X-FH-Task` string

## Request body

- object
  - `places` object[], required: Up to 15 places
    - `name` string, required
    - `city` string
    - `country` string
    - `why` string: One line on why you suggested it — saved as the place's note
    - `imageUrl` string: Optional https link to a picture of the place (copied into the app; jpeg/png/webp/gif, ≤3 MB)
    - `imageBase64` string: Optional picture as base64 (e.g. one you generated), ≤3 MB
    - `imageIsGenerated` boolean: true when the picture is AI-generated rather than a photo of the place — the app labels it
  - `today` string: The traveller's own date, YYYY-MM-DD, where the action needs one
  - `expectedVersion` integer: For a change to a trip: the planVersion you last read

## Response `200`

Done — { ok, api, action, result, card, operation? }

## Other responses

- `202`: Waiting for the traveller's approval in Finding Horizons
- `400`: Bad body / missing Idempotency-Key
- `401`: No or invalid token
- `403`: Scope not granted
- `409`: Conflict: the plan changed since expectedVersion, or the same key is still running
- `422`: The action said no
- `429`: Rate limited

---

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