---
title: "Discovery Handoff Webhook"
method: POST
path: "/v1/webhooks/discovery-handoff"
tags: ["webhooks"]
---

# Discovery Handoff Webhook

`POST /v1/webhooks/discovery-handoff`

End-of-Discovery handoff: create the specialist setup interview.

Receives the discovery template's structured-extraction payload at the end
of the call:
  {
    "event": "complete",
    "interview_id": "<discovery interview id>",
    "person_name": "...",
    "data": {  # extracted via DISCOVERY_FINDINGS_SCHEMA
      "archetype_match": "embedded" | ... | "not_a_fit" | "unsure",
      "caller_context": "...",
      "problem_shape": "...",
      "surrounding_context": "...",
      "pattern_recognized": "...",
      "fit_assessment": {"verdict": "yes|partial|no", "reason": "..."},
      "readiness_signal": "explorer|builder|skeptic",
      "prefill_fragments": [{"raw_text": "...", "context": "..."}, ...],
    },
    "timestamp": "..."
  }

Writes `context.discovery_handoff` on the discovery interview with one of:
  {"status": "ready", "next_interview_id": ..., "next_session_id": ..., "archetype_match": ..., "kind": ...}
  {"status": "not_a_fit", "reason": ...}
  {"status": "error", "reason": ...}

Frontend polls `GET /api/proxy/interviews/{discoveryInterviewId}` and reads
that block to advance.

## Request body

- 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)
