---
title: "Fork a session"
method: POST
path: "/v3/organizations/{orgId}/sessions/{sessionId}/fork"
tags: ["Sessions"]
---

# Fork a session

`POST /v3/organizations/{orgId}/sessions/{sessionId}/fork`

## Request

- Base URL: `https://api.reasonmachines.com`
- URL: `https://api.reasonmachines.com/v3/organizations/{orgId}/sessions/{sessionId}/fork`
- Auth: HTTP bearer

Requires run. Creates a new Session from this one's conversation up to its latest reply. The source Session is unchanged. 404 sidechat_source_not_found or sidechat_fork_point_not_found when there is nothing to fork from (no reply yet). Repeating a request with the same client_session_id returns the first fork.

<sub>Scope: `run`</sub>

## Request body

- object
  - `message` string: The fork's first message. Without one the fork opens on the conversation so far and waits for a message.
  - `title` string: Title shown for the new Session. Omitted, it is "Fork of" followed by the source Session's title, or "Fork of session" when it has none.
  - `client_session_id` string, uuid: A fresh UUID for the new Session; repeating it returns the first fork instead of making another.

## Response `200`

The fork's session_id.

- SessionForked
  - `ok` true, required: Always true on success.
  - `session_id` string, nullable, required: The new Session the fork created. Typed nullable with the admission receipt; a 200 carries an id.

## Other responses

- `400`: Invalid request.
- `401`: Missing, invalid, or expired key.
- `402`: The Workspace has no usage left: error quota_exhausted, with reason and message. A fork Reason already recorded keeps its session_id here, so it can be opened or deleted rather than left hidden.
- `403`: The key lacks the required scope or role.
- `404`: Resource not found.
- `409`: The Session's state does not allow this now; `error` says why (for example not_terminal while a turn runs).
- `413`: The request body or the first message is too large (request_too_large, message_too_large).
- `429`: Too many requests. Retry after the number of seconds in the `Retry-After` response header.
- `503`: Product writes are disabled.

## Changes

- **2026-10-15** `52a86b8b91b0`: 1 info
  - added the media type `application/json` for the response with the status `200`
- **2026-10-15** `fad7b15a74a7`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/ara/apis/reason-api/changes/v3/organizations/:orgId/sessions/:sessionId/fork/post.md)

---

[API](https://skmtc.dev/ara/apis/reason-api.md) - [All operations](https://skmtc.dev/ara/apis/reason-api/llms.txt) - [OpenAPI document](https://skmtc.dev/ara/apis/reason-api/revisions/e97c8704807c?raw)
