---
title: "Deliver Dispatch Results"
method: POST
path: "/api/v1/chat-ai/conversations/{conversation_id}/dispatch-results"
tags: ["chat-ai", "chat_messages"]
---

# Deliver Dispatch Results

`POST /api/v1/chat-ai/conversations/{conversation_id}/dispatch-results`

Deliver a handed-off specialist's answer as its own turn.

The head no longer waits out a slow dispatch: once the specialist has
started, the job is handed off and the turn ends with an acknowledgement
(``DispatchHandoffEvent``). This is what keeps that promise. The surface
polls here while an answer is outstanding; the poll is a 204 until a job
reaches a terminal status, and then this streams a turn that narrates it.

No user message is created — the person did not say anything. The finished
job is the turn's input, the same way ``/tool-result`` resumes from a
ToolMessage rather than fresh text.

Claiming is atomic and exactly-once (``consume_orphaned_sub_agent_jobs``),
so this racing a message the person sent at the same moment cannot deliver
the same answer twice: whichever gets there first has it.

## Path parameters

- `conversation_id` string, uuid, required

## Response `200`

A turn delivering the finished specialist's answer.

- unknown

## Other responses

- `204` — No finished dispatch is waiting — the normal case.
- `401` — Not authenticated.
- `404` — Conversation not found for the caller.
- `422` — Validation Error

## Changes

- **2026-09-12** `0e71c3cd9536` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/getanana/apis/cleon-api/changes/api/v1/chat-ai/conversations/:conversation_id/dispatch-results/post.md)

---

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