---
title: "Replay Handoff Prompt"
method: POST
path: "/v1/templates/{template_id}/handoff-prompt/replay"
tags: ["templates"]
---

# Replay Handoff Prompt

`POST /v1/templates/{template_id}/handoff-prompt/replay`

## Request

- Base URL: `https://api.roxels.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.roxels.ai/v1/templates/{template_id}/handoff-prompt/replay`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/roxels/apis/interviewer/docs/v1/templates/:template_id/handoff-prompt/replay/post.ts> (a function with typed inputs; its response is checked against the schema)

Queue a handoff-prompt replay and return immediately.

The actual LLM call runs in a background task (it takes ~30-60s, too long
for the ALB's 60s timeout). Poll GET /{template_id}/handoff-prompt/replay
for the result — envelope status: pending | ok | failed.

Reconstructs the LLM state the speaker had at end-of-call: the ONBOARDING
template's system_instructions + full seed transcript + current user-template
state. Asks Claude to produce EXACTLY the handoff text it would have sent
via send_chat_message.

Body (all optional):
    onboarding_template_id: override the onboarding template whose
        system_instructions guide the generated prompt. Default: whatever
        template actually guided the seed interview.
    seed_interview_id: override the seed interview. Default: the one linked
        via interviews.context.created_template_id.

## Path parameters

- `template_id` string, required

## Request body

- HandoffReplayBody
  - `onboarding_template_id` string, nullable
  - `seed_interview_id` string, nullable

## 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.dev/roxels/apis/interviewer/revisions/4ef48ed226e1?raw)
