# Reviews · Customer API

> Customer API reference for reviews: GET /reviews, POST /reviews, PATCH /reviews.

> Markdown version of https://kanorio.com/en/developers/customer-api/reviews. Append `.md` to any developer docs URL for this format. Index: https://kanorio.com/llms.txt · MCP: https://app.kanorio.com/api/mcp

Base URL: `https://{site}/api/v1/customer` · [Errors](https://kanorio.com/en/developers/basics/errors) · [Pagination](https://kanorio.com/en/developers/basics/pagination)

### The customer's own reviews on the given order lines

`GET /reviews`

- Stability: beta

Returns a map keyed by order line id. Order lines without a review from this customer are omitted. Use it to decide whether to show a “write a review” or “edit your review” button.

**Parameters**

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `orderItemIds` | query | string | yes | Comma-separated order line ids (max 100). |

**Response** (200)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `data` | "PENDING" \| "APPROVED" \| "REJECTED"[] | yes | — |
| `hasMore` | boolean | yes | True when another page exists; pass nextCursor to fetch it. |
| `nextCursor` | string \| null | yes | Cursor for the next page, or null on the last page. |

**Errors**

| Code | Status | When |
| --- | --- | --- |
| `VALIDATION` | 400 | — |

```bash
curl -X GET "https://{site}/api/v1/customer/reviews" \
  -H "Authorization: Bearer $KANORIO_CUSTOMER_TOKEN"
```

### Submit a review for a paid order line

`POST /reviews`

- Stability: beta

Eligibility is checked by the store: the order line must belong to this customer and be paid (digital products also need a live entitlement). The review starts as PENDING until the store approves it. One review per order line.

**Request body**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `orderItemId` | string | yes | Order line id from GET /orders/{id}. |
| `rating` | integer | yes | — |
| `content` | string | no | — |

**Response** (200)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `reviewId` | string | no | — |
| `status` | "PENDING" \| "APPROVED" \| "REJECTED" | yes | — |

**Errors**

| Code | Status | When |
| --- | --- | --- |
| `ORDER_NOT_FOUND` | 404 | — |
| `FORBIDDEN` | 403 | — |
| `REVIEWS_DISABLED` | 403 | — |
| `ALREADY_REVIEWED` | 409 | — |
| `VALIDATION` | 400 | — |

```bash
curl -X POST "https://{site}/api/v1/customer/reviews" \
  -H "Authorization: Bearer $KANORIO_CUSTOMER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### Edit the customer's own review

`PATCH /reviews`

- Stability: beta

Only reviews written by this customer can be edited. An edited review goes back to PENDING and is re-moderated by the store.

**Request body**

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `reviewId` | string | yes | — |
| `rating` | integer | yes | — |
| `content` | string | no | — |

**Response** (200)

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `reviewId` | string | no | — |
| `status` | "PENDING" \| "APPROVED" \| "REJECTED" | yes | — |

**Errors**

| Code | Status | When |
| --- | --- | --- |
| `NOT_FOUND` | 404 | — |
| `FORBIDDEN` | 403 | — |
| `VALIDATION` | 400 | — |

```bash
curl -X PATCH "https://{site}/api/v1/customer/reviews" \
  -H "Authorization: Bearer $KANORIO_CUSTOMER_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{}'
```
