# Review an order

> Submit a completed-order review

`PUT /v2/orders/{id}/review`

Submit a completed-order review.

**Authentication:** Required: the order’s owner session in `X-Session-ID`.

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | string (pattern `^[A-Za-z0-9:_-]{1,128}$`) | Yes | Public order identifier. Not a credential: every read still requires the owner session or the destination proof. |

## Request body

- `ratingSpeed` · integer (1–5) · **required** — How fast the order settled. 1 is worst, 5 is best.
- `ratingRate` · integer (1–5) · **required** — How good the rate felt. 1 is worst, 5 is best.
- `ratingExperience` · integer (1–5) · **required** — Overall experience. 1 is worst, 5 is best.
- `comment` · string (max 500) or null — Optional free-text feedback.

## Response

`200` returns an object with:

- `success` · `true` · **required**

Errors use the [standard error envelope](https://docs.wagyu.xyz/actions-and-retries.md#the-error-envelope): branch on `code`, never on the message.

## Example

<!-- curl -->
```bash
curl -X PUT 'https://api-beta.wagyu.xyz/v2/orders/<orderId>/review' \
  -H 'x-session-id: <sessionId>' \
  -H 'content-type: application/json' \
  -d '{
    "ratingSpeed": 5,
    "ratingRate": 4,
    "ratingExperience": 5,
    "comment": "Fast and simple."
  }'
```

<!-- JavaScript -->
```javascript
const res = await fetch('https://api-beta.wagyu.xyz/v2/orders/<orderId>/review', {
  method: 'PUT',
  headers: {"content-type":"application/json","x-session-id":"<sessionId>"},
  body: JSON.stringify({
    "ratingSpeed": 5,
    "ratingRate": 4,
    "ratingExperience": 5,
    "comment": "Fast and simple."
  }),
});
const data = await res.json();
```

<!-- Python -->
```python
import requests

res = requests.put('https://api-beta.wagyu.xyz/v2/orders/<orderId>/review', headers={"x-session-id":"<sessionId>"}, json={
        "ratingSpeed": 5,
        "ratingRate": 4,
        "ratingExperience": 5,
        "comment": "Fast and simple."
    }, timeout=30)
data = res.json()
```

_No response is captured for this route: calling it creates or changes a real order. The response fields above come from the live contract._

---
Source: https://docs.wagyu.xyz/api-reference/submit-order-review · Built from the live Wagyu API on 2026-11-04.
