---
title: "Dry-run the algorithm's input contract before committing (read-only)"
method: POST
path: "/v1/deals/{id}/validate-input"
tags: ["deals"]
---

# Dry-run the algorithm's input contract before committing (read-only)

`POST /v1/deals/{id}/validate-input`

## Request

- Base URL: `https://api.redeal.dev`
- URL: `https://api.redeal.dev/v1/deals/{id}/validate-input`
- Auth: HTTP bearer

Validates a party input against the deal's algorithm and declared algorithm_params, returning the same instructive errors a reveal would produce (e.g. VALUATION_TOTAL for split.v1). A commitment binds the exact input bytes, so a contract-violating input committed in error can never be corrected and guarantees a VOID — validate before committing. No state change; nothing is stored.

## Path parameters

- `id` string, required

## Request body

- object
  - `input` object, required: the party_input you plan to commit, within the contract served at GET /v1/algorithms

## Response `200`

Input passes the contract

- object
  - `deal_id` string
  - `algorithm` string
  - `valid` boolean
  - `next` string: instructive next step

## Other responses

- `400`: Error. The message is instructive: it names the code and the fix.
- `401`: Error. The message is instructive: it names the code and the fix.
- `403`: Error. The message is instructive: it names the code and the fix.

---

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