---
title: "Creates or updates an item's reorder point for one location."
method: PUT
path: "/api/v1/items/{id}/reorder-points"
tags: ["Reorder"]
---

# Creates or updates an item's reorder point for one location.

`PUT /api/v1/items/{id}/reorder-points`

## Request

- Base URL: `https://app.flexonthejob.com`
- URL: `https://app.flexonthejob.com/api/v1/items/{id}/reorder-points`
- Auth: HTTP bearer

Requires `ManageInventory` and an `Idempotency-Key` header. The reorder point for
(item, `locationId`) is created, or updated when one exists — the oldest, if the
Thresholds page has made duplicates. Omit `locationId` for the rule on the item's
stock at all locations together. Same values and ranges as Reorder → Thresholds in the
app; send `"isActive": false` to switch it off. Takes effect at once for
`GET /api/v1/items/low-stock`. Example:
`{ "locationId": 3, "minimumStock": 10, "reorderQuantity": 24 }`.

## Path parameters

- `id` integer, required

## Request body

- SetReorderPointApiRequest: Body of `PUT /api/v1/items/{id}/reorder-points`: create or update the item's reorder point for one location (or for all locations together when `locationId` is omitted). Example: `{ "locationId": 3, "minimumStock": 10, "reorderQuantity": 24 }`.
  - `locationId` integer, nullable: Location to watch (see `GET /api/v1/locations`); omit or null for the item's stock at all locations together. Unknown or another organization's id → 422. Example: `3`.
  - `minimumStock` integer, required: Required. Low-stock level, a whole number 0 or more: the item is low while fewer units than this are on hand. Example: `10`.
  - `reorderQuantity` integer, nullable: Units to reorder, 0 or more; omit or null for the default of twice `minimumStock`. Example: `24`.
  - `isActive` boolean, nullable: Whether the reorder point is on; omit for `true`. `false` keeps it but stops it listing the item as low stock.

## Response `200`

Updated an existing reorder point; body is it.

- ReorderPointDto: One reorder point (minimum-stock rule) of an item — a row of the app's Reorder → Thresholds.
  - `id` integer: Reorder point id. Example: `7`.
  - `itemId` integer: Item the reorder point belongs to.
  - `locationId` integer, nullable: Location it watches; null = the item's stock at all locations together.
  - `locationName` string, nullable: Name of LocationId; null for all locations.
  - `minimumStock` integer: Low-stock level: below this many units the item is listed by `GET /api/v1/items/low-stock`. Example: `10`.
  - `reorderQuantity` integer, nullable: Units to reorder; null = twice MinimumStock. Example: `24`.
  - `isActive` boolean: False when the reorder point is switched off (kept, but never low stock).
  - `createdAt` string, date-time: UTC creation time (`0001-01-01T00:00:00Z` for rows made before the API recorded it).
  - `updatedAt` string, date-time: UTC last modification time (same caveat as CreatedAt).

## Other responses

- `201`: Created a reorder point; body is it.
- `400`: Malformed body, missing or negative `minimumStock`, negative `reorderQuantity`, or missing `Idempotency-Key`.
- `401`: Unauthorized
- `403`: Forbidden
- `404`: No such active item in this organization.
- `409`: The key's creator is unknown on this server.
- `422`: No such location in this organization (`locationId`), or `Idempotency-Key` reused with a different body.
- `429`: Too Many Requests

---

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