---
title: "Post Founding Turn"
method: POST
path: "/founding/{founding_id}/turn"
tags: ["founding"]
---

# Post Founding Turn

`POST /founding/{founding_id}/turn`

Answer the pending question (or kick) and stream the resulting segment.

An **empty body is the idempotent kick**: it starts the first segment after
naming, retries a segment that died (deploy, crash), and retries a failed
founding. That single entry point is why the Retry button, the frontend
watchdog and the heartbeat backstop are all the same code path.

The segment runs as a task that a client disconnect cannot cancel; this
response is only a view of it.

**The claim is taken before anything else happens**, for two reasons that
are easy to get backwards. It has to precede the STATUS CODE, because a 409
delivered as an error event inside a 200 is not a 409: the client's
re-attach branch never fires and the connection sits open. And it has to
precede the APPEND, because appending outside the claim writes at the seq a
running segment is about to use — the loser leaves the transcript ending
``assistant(tool_use) -> user(text)`` with no tool_result, which is not a
valid conversation and 400s on every replay from then on. That one is not
recoverable except by starting over.

## Path parameters

- `founding_id` string, uuid, required

## Headers

- `X-Posthog-Session-Id` string, nullable
- `X-Client-Mobile` string, nullable

## Request body

- AnswerFoundingRequest — The body of ``POST /founding/{id}/turn``. Four shapes in one schema, all optional, because the route is one idempotent entry point: a chosen option, composer text resolving a pending question, a plain message after a textual end_turn, or an **empty body** — the kick that starts the first segment, retries a dead one, and retries a failed founding.
  - `question_id` string, nullable
  - `selected_option_ids` string[], nullable
  - `text` string, nullable
  - `skip` boolean
  - `had_discarded_text` boolean
  - `is_section_edit` boolean
  - `trigger` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/nanocorp/apis/nanocorp-api.md) · [All operations](https://skmtc.dev/nanocorp/apis/nanocorp-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/nanocorp/nanocorp-api/revisions/f4f24ae2935f/schema)
