---
title: "Log Plan Event"
method: POST
path: "/api/v1/planner/{plan_id}/events"
tags: ["planner"]
---

# Log Plan Event

`POST /api/v1/planner/{plan_id}/events`

## Request

- Base URL: `https://yondry.app` (the document declares no server; this is the origin it was published from)
- URL: `https://yondry.app/api/v1/planner/{plan_id}/events`
- Auth: HTTP bearer

Log a client-side plan interaction event (alternative swapped in, stop
skipped, plan started/completed/abandoned). Server-visible interactions
(refinements, swap regenerations) are logged automatically by /query —
this endpoint exists for the ones only the app can see.

## Path parameters

- `plan_id` string, uuid, required

## Request body

- PlanEventRequest: Client-side plan interaction event for POST /planner/{plan_id}/events.
  - `event_type` 'swap_requested' | 'alternative_swapped' | 'stop_skipped' | 'plan_started' | 'plan_completed' | 'plan_abandoned' | 'book_tickets_clicked' | 'push_prompt_shown' | 'push_prompt_accepted' | 'push_prompt_dismissed' | 'upgrade_prompt_shown' | 'upgrade_prompt_accepted' | 'upgrade_prompt_dismissed', required
  - `payload` object

## Response `204`

Successful Response

## Other responses

- `422`: Validation Error

---

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