---
title: "Relay an operator message on a handed-off conversation"
method: POST
path: "/v1/hitl/handoffs/{handoff_id}/messages"
tags: ["hitl"]
---

# Relay an operator message on a handed-off conversation

`POST /v1/hitl/handoffs/{handoff_id}/messages`

## Request

- The document declares no server URL.
- Auth: API key in header `x-api-key`
- TypeScript: <https://skmtc.dev/oneloop-hq/apis/feather-api/docs/v1/hitl/handoffs/:handoff_id/messages/post.ts> (a function with typed inputs; its response is checked against the schema)

Persist an OUTBOUND operator message (§6.4.1) then deliver it.

Persists a ``role='assistant'`` ``ConvMessage`` attributed to the relaying
operator (``authored_by='human_operator'`` + ``operator_actor_id``),
soft-claims the handoff if unassigned, then hands the already-persisted row
to the channel delivery adapter (the adapter never mints a new message).

## Path parameters

- `handoff_id` string, uuid, required

## Request body

- HandoffRelayRequest: Body for the operator-relay mutation (``POST …/messages``). The relaying operator's identity comes from auth, not the body — only the message text the operator wants to send the end-user.
  - `content` string, required

## Response `200`

Successful Response

- HandoffMessageRead: The persisted operator-relay ``conv_messages`` row (HITL-04 §6.4.1). Returned by the relay endpoint so the operator UI can immediately render the message it just sent (with its allocated ``seq`` watermark) without a follow-up poll.
  - `id` string, uuid, required
  - `conversation_id` string, uuid, required
  - `seq` integer, required
  - `role` string, required
  - `content` string, nullable, required
  - `authored_by` string, required
  - `operator_actor_id` string, nullable, required
  - `created_at` string, date-time, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/oneloop-hq/apis/feather-api.md) - [All operations](https://skmtc.dev/oneloop-hq/apis/feather-api/llms.txt) - [OpenAPI document](https://skmtc.dev/oneloop-hq/apis/feather-api/revisions/9cd7291d4228?raw)
