---
title: "List repricing history"
method: GET
path: "/api/v1/sa/repricer/history"
tags: ["Repricer"]
---

# List repricing history

`GET /api/v1/sa/repricer/history`

## 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/history`
- Auth: one of:
  - API key in query parameter `api_key`
  - API key in header `X-Api-Key`

Lists the repricing runs of the team, the newest first.

The history keeps the runs of the last 32 days only. Without `from_date`, `to_date` or `period`, the list gives the last 32 days. An older `from_date` starts at the 32-day limit.

A run has the old and the final price, the status, the strategy, the limits, the market data and the mode in effect.

**Statuses**
- `PRICE_UPDATE_SUBMITTED`: the run sent the new price to Amazon.
- `PRICE_ALREADY_OPTIMAL`: the price of the seller is the target price.
- `PRICE_SKIPPED_OUT_OF_BOUNDS`: the target price is outside the limits, so the run sent no price.
- `PRICE_UPDATE_SKIPPED_BY_ALLOW_FLAG`: the price is correct, but a setting stops the update.
- `DRY_RUN_PRICE_UPDATE_EMULATED`: the mode is dry, so the run sent no price to Amazon.
- `SKIPPED`: the run stopped on an expected condition. `error_code` gives the reason, for example `MISSING_COST_DATA_FOR_ECONOMICS_RULE`.
- `FAILED`: the run stopped on an error. `error_code` gives the reason.
- `PRICE_UPDATE_CONFIRMED`: Amazon confirmed the price. The repricer does not write this status yet.

**Error codes of a failed run**
- `FAILED_TO_LOAD_REPRICER_PRODUCT`: the repricer could not load the settings of the product.
- `NO_REPRICER_PRODUCT_FOUND`: the repricer has no such product for the team.
- `FAILED_TO_RESOLVE_STRATEGY`: the repricer could not load the strategy.
- `FAILED_TO_RESOLVE_AMAZON_SELLER_CONTEXT`: the repricer could not find the seller account for the marketplace.
- `NO_AMAZON_SELLER_AUTHORIZATION_FOUND`: the Amazon account of the seller is not connected.
- `FAILED_TO_FETCH_SELLER_PRICE_FROM_AMAZON`: Amazon did not give the price of the seller.
- `REPRICER_PRODUCT_PAUSED`: the product is paused.
- `NO_SELLER_LISTINGS_FOUND_ON_AMAZON`: Amazon has no listing of the seller for the product.
- `INACTIVE_SELLER_LISTING`: the listing is inactive.
- `NO_SELLER_PRICE_FOUND_ON_AMAZON_LISTINGS`: the listing has no usable price.
- `FAILED_TO_FETCH_COMPETITIVE_PRICING_FROM_AMAZON`: Amazon did not give the market data.
- `NO_LOWEST_PRICED_OFFERS_FOUND`: the market data has no lowest-priced offers.
- `NO_COMPETITIVE_PRICE_FOUND`: the market data has no competitive price.
- `CURRENCY_MISMATCH_BETWEEN_LISTING_AND_MARKET_DATA`: the listing and the market data have different currencies.
- `FAILED_TO_CALCULATE_TARGET_PRICE`: the strategy could not calculate the target price.
- `FAILED_TO_SUBMIT_PRICE_TO_AMAZON`: Amazon did not accept the price.

## Query parameters

- `asin` string
- `marketplace_id` string
- `sku` string
- `from_date` string, date
- `to_date` string, date
- `period` '24h' | '7d' | '30d'
- `status` 'FAILED' | 'SKIPPED' | 'PRICE_SKIPPED_OUT_OF_BOUNDS' | 'PRICE_ALREADY_OPTIMAL' | 'PRICE_UPDATE_SKIPPED_BY_ALLOW_FLAG' | 'PRICE_UPDATE_SUBMITTED' | 'PRICE_UPDATE_CONFIRMED' | 'DRY_RUN_PRICE_UPDATE_EMULATED'
- `search` string
- `mode` 'all' | 'off' | 'dry' | 'live'
- `sort` string
- `error_code` string
- `page` integer
- `per_page` integer

## Response `200`

Successful response. See HistorySearchResponse schema for details.

- HistorySearchResponse
  - `data` RepricerProductHistoryItem[], required
    - `id` integer: History record ID.
    - `asin` string, nullable: Product ASIN used in repricing run.
    - `marketplace_id` string, nullable: Marketplace ID used in repricing run.
    - `sku` string, nullable: Seller SKU used in repricing run.
    - `reprice_priority` string: Reprice priority at run time.
    - `status` 'FAILED' | 'SKIPPED' | 'PRICE_SKIPPED_OUT_OF_BOUNDS' | 'PRICE_ALREADY_OPTIMAL' | 'PRICE_UPDATE_SKIPPED_BY_ALLOW_FLAG' | 'PRICE_UPDATE_SUBMITTED' | 'PRICE_UPDATE_CONFIRMED' | 'DRY_RUN_PRICE_UPDATE_EMULATED': Final repricing status.
    - `error_code` string, nullable: Detailed failure reason. Present when status=FAILED. Values: FAILED_TO_LOAD_REPRICER_PRODUCT, NO_REPRICER_PRODUCT_FOUND, FAILED_TO_RESOLVE_STRATEGY, FAILED_TO_RESOLVE_AMAZON_SELLER_CONTEXT, NO_AMAZON_SELLER_AUTHORIZATION_FOUND, FAILED_TO_FETCH_SELLER_PRICE_FROM_AMAZON, REPRICER_PRODUCT_PAUSED, NO_SELLER_LISTINGS_FOUND_ON_AMAZON, INACTIVE_SELLER_LISTING, NO_SELLER_PRICE_FOUND_ON_AMAZON_LISTINGS, FAILED_TO_FETCH_COMPETITIVE_PRICING_FROM_AMAZON, NO_LOWEST_PRICED_OFFERS_FOUND, NO_COMPETITIVE_PRICE_FOUND, CURRENCY_MISMATCH_BETWEEN_LISTING_AND_MARKET_DATA, FAILED_TO_CALCULATE_TARGET_PRICE, FAILED_TO_SUBMIT_PRICE_TO_AMAZON.
    - `market_data` object, nullable: Raw/normalized market data snapshot used in calculation.
    - `settings_snapshot` object, nullable: Settings snapshot containing default, team-effective and product-effective values used during repricing.
    - `strategy` string, nullable: Resolved strategy used in this run.
    - `strategy_params` object, nullable: Resolved strategy parameters used in this run.
    - `limits` object, nullable: Resolved price limits used in this run.
    - `old_price` number, float, nullable: Seller price before repricing.
    - `currency` string, nullable: Currency code for old/final prices.
    - `price_before_limits` number, float, nullable: Calculated target price before limits were applied.
    - `should_update_before_limits` boolean, nullable: Whether update was needed before limits check.
    - `reason_before_limits` string, nullable: Decision reason before limits check.
    - `final_price` number, float, nullable: Final price after limits/application rules.
    - `should_update_after_limits` boolean, nullable: Whether update should be sent after all checks.
    - `reason_after_limits` string, nullable: Final decision reason after limits and flags.
    - `limits_applied` string[], nullable: List of limits that affected price decision.
    - `mode` 'off' | 'dry' | 'live', nullable: Effective repricing mode for this run.
    - `amazon_submit_price_status` string, nullable: Amazon submission status, if submission attempt was made.
    - `amazon_submit_price_submission_id` string, nullable: Amazon submission identifier for tracking.
    - `amazon_submit_price_blocking_issues` object[], nullable: Blocking issues returned by Amazon for price submission.
    - `created_at` string, date-time: History record creation timestamp.
  - `meta` object, required
    - `pagination` object
      - `page` integer: Current page number.
      - `per_page` integer: Items per page.
      - `total` integer: Total matching records.
      - `last_page` integer: Last available page number.
    - `trial_limit` ApiV1TrialLimit: Present only on trial, when the trial hides rows of the list. The trial shows the first rows of a list, and the pagination counts only these rows.
      - `max_rows` integer: The number of rows that the trial shows.
      - `total` integer, nullable: The true number of rows in the list. It is null for a list that does not count its rows.
      - `code` string
      - `message` string
      - `subscribe_url` string, uri

## 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`)
- `404`: Resource not found
- `422`: Business logic error - operation cannot be completed due to business rules
- `429`: Too many requests - rate limit exceeded
- `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)
