---
title: "Send Private Chat Message"
method: POST
path: "/worker/{worker_id}/private-chat/messages"
tags: ["workers"]
---

# Send Private Chat Message

`POST /worker/{worker_id}/private-chat/messages`

Send into the caller's private chat on this worker, opening it if needed.

The chat is addressed by (parent, owner), so a client never has to open one first —
and **nothing is written until this call**, which is what keeps the registry to
conversations people actually had rather than surfaces they glanced at.

Same request and response as the worker-scoped send. Nothing identifying the chat
comes back, because the caller never needs it: it reads and subscribes through this
same parent-scoped surface.

## Path parameters

- `worker_id` string, required

## Request body

- SendWorkerMessageRequest — One authenticated user message bound for a deployed worker. Worker-scoped, not web-specific: the target is a worker (addressed by its id in the route path), and today that worker is web-native. The web UI is the transport; the domain is "a message to a worker," so a future non-web target needs no new schema.
  - `message_id` string, uuid, required
  - `message` string, required
  - `thread_id` string, nullable

## Response `201`

Successful Response

- SendWorkerMessageResponse — Acknowledges a recorded inbound worker message.
  - `message_id` string, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/traversal/apis/fastapi.md) · [All operations](https://skmtc.net/traversal/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/traversal/fastapi/revisions/2134ebffd1ef/schema)
