---
title: "Write Phase Event"
method: POST
path: "/v1/sessions/internal/phase-events"
tags: ["sessions"]
---

# Write Phase Event

`POST /v1/sessions/internal/phase-events`

Fire-and-forget phase-lifecycle event from the agent. Internal-secret auth.

Powers the in-app Phases Timeline UI on the session detail page and
serves as queryable observability for debugging multi-phase sessions.
Failures are swallowed by the agent client; we still return 401 on
bad auth so misconfigured workers surface in logs immediately.

## Request body

- PhaseEventPayload — Phases architecture: structured event from the agent at every phase lifecycle moment. Internal-secret auth (same as /internal/trace).
  - `session_id` string, required
  - `interview_id` string, nullable
  - `phase_id` string, nullable
  - `event_name` string, required
  - `payload` object

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/roxels/apis/interviewer.md) · [All operations](https://skmtc.dev/roxels/apis/interviewer/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/roxels/interviewer/revisions/4ef48ed226e1/schema)
