---
title: "Retry a session's last turn"
method: POST
path: "/v3/organizations/{orgId}/sessions/{sessionId}/retry"
tags: ["Sessions"]
---

# Retry a session's last turn

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

## Request

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

Requires run. Starts the last turn again in the same Session and workspace. A Session that is still running is refused with 409 not_terminal.

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

## Response `200`

The retry started: ok true with its run_id.

- SessionRetryStarted
  - `ok` true, required: Always true on success.
  - `run_id` string, nullable, required: The new run of the retried turn; poll getSession for its progress. Typed nullable with the 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, message and the run_id the retry was recorded on.
- `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).
- `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/retry/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)
