---
title: "Create repricer products"
method: POST
path: "/api/v1/sa/repricer/products"
tags: ["Repricer"]
---

# Create repricer products

`POST /api/v1/sa/repricer/products`

## Request

- Base URL: `https://app.sellerassistant.app` (the document declares no server; this is the origin it was published from)
- URL: `https://app.sellerassistant.app/api/v1/sa/repricer/products`
- Auth: one of:
  - API key in query parameter `api_key`
  - API key in header `X-Api-Key`

Adds products to the repricer. The body is one product, or an array of up to 100 products with no wrapper. A product is the ASIN, the marketplace and the SKU of a listing of the team. The repricer has one product for each ASIN, marketplace and SKU, so a second create of the same key fails.

A create also fails when the plan of the team has no free slot (`GET /api/v1/sa/repricer/info` gives the limits), when the marketplace is not connected, when the limits are not valid (for example `min_price` above `max_price`), or when the strategy is not of the team.

## Request body

- union
  - CreateRepricerProductForm
    - `asin` string, required: Product ASIN.
    - `marketplace_id` string, required: Amazon marketplace ID for this product.
    - `sku` string, required: Seller SKU in the selected marketplace.
    - `strategy_id` integer, required: The strategy the product reprices with. `GET /api/v1/sa/repricer/strategies` lists the strategies of the team.
    - `limits` object, nullable: Per-product pricing limits that override team/default limits.
      - `max_price` number, nullable: Absolute maximum allowed final price. A number, or the string of it.
      - `min_price` number, nullable: Absolute minimum allowed final price. A number, or the string of it.
      - `max_change` number, nullable: Maximum absolute price change per reprice operation.
      - `max_change_percent` number, nullable: Maximum relative price change (percent) per reprice operation.
      - `min_price_mode` 'manual' | 'break_even' | 'break_even_plus' | 'target_roi' | 'target_margin', nullable: How the minimum price is found.
      - `target_roi` number, nullable: The ROI the minimum price aims at, in percent.
      - `target_margin` number, nullable: The margin the minimum price aims at, in percent.
      - `min_price_markup` number, nullable: What the break even price adds to reach the minimum price.
      - `min_price_markup_type` 'amount' | 'percent', nullable
      - `missing_cost_fallback` 'error' | 'manual' | 'none', nullable: What happens when the cost of the SKU is not known.
    - `mode` 'off' | 'live': Repricing mode. An absent mode is off. The values are `off` and `live`. Simulation is a setting of the system, not of a product.
    - `reprice_priority` 'fast' | 'regular', nullable: How often the product reprices.
    - `condition` 'new' | 'used_like_new' | 'used' | 'refurbished', nullable: The condition the offer sells in.
  - CreateRepricerProductForm[]
    - `asin` string, required: Product ASIN.
    - `marketplace_id` string, required: Amazon marketplace ID for this product.
    - `sku` string, required: Seller SKU in the selected marketplace.
    - `strategy_id` integer, required: The strategy the product reprices with. `GET /api/v1/sa/repricer/strategies` lists the strategies of the team.
    - `limits` object, nullable: Per-product pricing limits that override team/default limits.
      - `max_price` number, nullable: Absolute maximum allowed final price. A number, or the string of it.
      - `min_price` number, nullable: Absolute minimum allowed final price. A number, or the string of it.
      - `max_change` number, nullable: Maximum absolute price change per reprice operation.
      - `max_change_percent` number, nullable: Maximum relative price change (percent) per reprice operation.
      - `min_price_mode` 'manual' | 'break_even' | 'break_even_plus' | 'target_roi' | 'target_margin', nullable: How the minimum price is found.
      - `target_roi` number, nullable: The ROI the minimum price aims at, in percent.
      - `target_margin` number, nullable: The margin the minimum price aims at, in percent.
      - `min_price_markup` number, nullable: What the break even price adds to reach the minimum price.
      - `min_price_markup_type` 'amount' | 'percent', nullable
      - `missing_cost_fallback` 'error' | 'manual' | 'none', nullable: What happens when the cost of the SKU is not known.
    - `mode` 'off' | 'live': Repricing mode. An absent mode is off. The values are `off` and `live`. Simulation is a setting of the system, not of a product.
    - `reprice_priority` 'fast' | 'regular', nullable: How often the product reprices.
    - `condition` 'new' | 'used_like_new' | 'used' | 'refurbished', nullable: The condition the offer sells in.

## Response `201`

Product created successfully. See RepricerProduct schema for details.

- object
  - `data` RepricerProduct
    - `id` integer, required
    - `team_id` integer, required
    - `asin` string, required
    - `marketplace_id` string, required
    - `sku` string, required
    - `condition` 'new' | 'used_like_new' | 'used' | 'refurbished', nullable
    - `strategy` RepricerStrategy
      - `id` integer
      - `team_id` integer
      - `name` string
      - `description` string, nullable
      - `color` string, nullable
      - `action` 'follow_buybox' | 'follow_lowest' | 'follow_featured_offer' | 'adjust_price', nullable
      - `action_params` object, nullable
        - `price_adjustment` number, float: Price offset. Negative = undercut, positive = premium. The write takes the number, or the string of it.
        - `price_adjustment_type` 'amount' | 'percent': Whether adjustment is a fixed dollar amount or percentage.
        - `reference` 'any' | 'fba' | 'fbm' | 'same_as_mine', nullable: The offers the price follows. Only follow_lowest reads it.
        - `respect_map` boolean, nullable: Keep the price at or above the MAP of the product. Only the follow strategies read it.
        - `when_winning` 'hold' | 'follow_next', nullable: While we hold the Buy Box. hold keeps the price. follow_next follows the next Buy Box-eligible competitor with the same price_adjustment (-0.01 = one cent below, 0 = match). It never lowers the price, never goes above the max price or the competitive price threshold, and holds when neither exists. Only follow_buybox and follow_featured_offer read it. No key is hold; a new strategy gets follow_next. In a rule, no key uses the strategy value.
        - `when_unopposed` 'hold' | 'max', nullable: With follow_next and no Buy Box-eligible competitor: hold (default) or max (go to the max price; holds when no max price is set).
      - `limits` object, nullable: Every number here answers as a number. The keys that name a thing stay words.
        - `min_price_mode` 'break_even_plus' | 'target_roi' | 'target_margin', nullable
        - `target_roi` number, nullable: The ROI the minimum price aims at, in percent.
        - `target_margin` number, nullable
        - `min_price_markup` number, nullable
        - `missing_cost_fallback` 'error' | 'none', nullable
        - `min_price` number, nullable
        - `max_price` number, nullable
        - `max_change` number, nullable
        - `max_change_percent` number, nullable
      - `rules` object[], nullable: The rules the strategy runs before its own action. The first rule that matches wins. A strategy with no rules answers null.
        - `name` string
        - `condition` object
          - `type` string
          - `value` boolean: The value the condition compares against. A number, a word or true.
        - `action` 'follow_buybox' | 'follow_lowest' | 'follow_featured_offer' | 'adjust_price' | 'hold', nullable: The action of the rule. `hold` keeps the price as it is.
        - `action_params` object, nullable
          - `price_adjustment` number, float
          - `price_adjustment_type` 'amount' | 'percent'
          - `reference` 'any' | 'fba' | 'fbm' | 'same_as_mine', nullable: The offers the price follows. Only follow_lowest reads it.
          - `respect_map` boolean, nullable: Keep the price at or above the MAP of the product. Only the follow strategies read it.
          - `when_winning` 'hold' | 'follow_next', nullable: While we hold the Buy Box. hold keeps the price. follow_next follows the next Buy Box-eligible competitor with the same price_adjustment (-0.01 = one cent below, 0 = match). It never lowers the price, never goes above the max price or the competitive price threshold, and holds when neither exists. Only follow_buybox and follow_featured_offer read it. No key is hold; a new strategy gets follow_next. In a rule, no key uses the strategy value.
          - `when_unopposed` 'hold' | 'max', nullable: With follow_next and no Buy Box-eligible competitor: hold (default) or max (go to the max price; holds when no max price is set).
      - `rules_count` integer: How many rules the strategy holds.
      - `is_default` boolean
      - `product_count` integer, nullable: How many products use the strategy. The list of the strategies counts them. A strategy inside another answer does not, and answers null.
      - `created_by` integer, nullable
      - `updated_by` integer, nullable
      - `created_at` string, date-time
      - `updated_at` string, date-time
    - `strategy_id` integer, nullable: The strategy of the row itself. Null says the row takes the strategy of the ASIN, which `strategy` then shows. The update takes this field.
    - `limits` object
      - `max_price` number, nullable
      - `min_price` number, nullable
      - `max_change` number, nullable
      - `max_change_percent` number, nullable
      - `min_price_mode` 'manual' | 'break_even' | 'break_even_plus' | 'target_roi' | 'target_margin', nullable
      - `target_roi` number, nullable
      - `target_margin` number, nullable
      - `min_price_markup` number, nullable
      - `min_price_markup_type` 'amount' | 'percent', nullable
      - `missing_cost_fallback` 'error' | 'manual' | 'none', nullable
    - `mode` 'off' | 'live', nullable: Repricing mode. The values are `off` and `live`. Simulation is a setting of the system, not of a product.
    - `reprice_priority` 'fast' | 'regular', nullable: How often the product reprices. The write takes the same word.
    - `product_map_price` number, float, nullable: The MAP of the supplier, on the ASIN. It belongs to the product, not to this row.
    - `fulfillment_channel` 'FBA' | 'FBM', nullable: Who ships the orders of the SKU: Amazon (FBA) or the seller (FBM). The channel selects the profit formula. `null` means that the channel is not known, and the FBA formula applies.
    - `my_shipping` number, nullable: The shipping charge that our own offer asks from the buyer. `null` means that the repricer did not see our offer yet. The limits are item prices: for FBM with shipping, the buyer pays the item price plus this charge.
    - `fbm_postage` number, nullable: The postage the seller pays for one FBM unit (`cost_overrides.fbm_postage_cost` of the SKU). `null` means unknown, not zero: an FBM SKU then has no profit and no cost-based price floor.
    - `profit` number, nullable: The profit for one unit at the last repriced price. For FBM: item price + shipping − referral fee − closing fee − product cost − prep − postage. `null` when a cost is not known.
    - `roi` number, nullable: The profit as a percent of the cost of one unit.
    - `margin` number, nullable: The profit as a percent of what the buyer pays.
    - `created_at` string, date-time
    - `created_by` integer, nullable
    - `updated_at` string, date-time
    - `updated_by` integer, nullable

## Other responses

- `400`: Bad request - validation failed or invalid parameters
- `402`: Payment Required - subscription expired or payment method required
- `403`: Access denied - insufficient permissions, invalid API key, or the API request limit is used up (`public_api_key_limit`)
- `422`: Business logic error - operation cannot be completed due to business rules
- `429`: Too many requests - rate limit exceeded
- `500`: Internal server error
- `503`: A service of ours did not answer. The call is right, and it can run again later.

---

[API](https://skmtc.dev/sellerassistant/apis/seller-assistant-public-api.md) · [All operations](https://skmtc.dev/sellerassistant/apis/seller-assistant-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/sellerassistant/apis/seller-assistant-public-api/revisions/5b3ecdbcadb6?raw)
