---
title: "Get Product"
method: GET
path: "/products/{product_id}"
tags: ["Catalog"]
---

# Get Product

`GET /products/{product_id}`

## Request

- Base URL: `https://vesremont.com/api/v1`
- URL: `https://vesremont.com/api/v1/products/{product_id}`
- Auth: none required

Inspect one product selected by search_products: current price, aggregate warehouse stock and public characteristics. Use its internal product_id, not the SKU; get_products_batch reads several known IDs. Stock does not promise same-day pickup; unknown values remain null. Public; no OAuth required. Read-only. HEAD is also supported and returns the same headers without a body.

## Path parameters

- `product_id` integer, required: Internal numeric Vesremont product ID returned by catalog search or a product response, not the SKU/article or a basket item ID.

## Response `200`

Successful operation.

- object
  - `id` integer, required
  - `sku` string
  - `name` string, required
  - `gtin` string, nullable: Barcode from the published catalog field, if present. Not a product ID and not inferred from the name or URL.
  - `url` string, uri, nullable, required
  - `description` string
  - `images` string[]
  - `price` object, nullable, required
    - `amount` number, required
    - `currency` 'RUB', required
    - `old_amount` number, nullable, required
    - `discount_percent` number, nullable, required
  - `stock` object, required: Both fields are the aggregate across the store warehouse network. They do not promise pickup today or a delivery lead time.
    - `local` number, nullable, required
    - `total` number, nullable, required
  - `requestable` boolean
  - `orderable` boolean, required
  - `availability` 'in_stock' | 'backorder' | 'preorder' | 'out_of_stock' | 'unavailable' | 'unknown', required
  - `updated_at` string, date-time, nullable, required
  - `brand` object, nullable
    - `id` integer, required
    - `name` string, required
    - `url` string, uri, nullable, required
  - `section` object, nullable
    - `id` integer, required
    - `name` string, required
    - `url` string, uri, nullable, required
  - `characteristics` object[]
    - `id` integer, required
    - `name` string, required
    - `value` string, required

## Other responses

- `400`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `403`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `404`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `405`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `406`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `409`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `413`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `414`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `415`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `422`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `429`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `431`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `500`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.
- `503`: Structured failure. The code is stable; do not retry uncertain order writes with a new key.

---

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