---
title: "Get bulk pricing batch status"
method: GET
path: "/v1/pricing/bulk/{batchId}"
tags: ["Pricing"]
---

# Get bulk pricing batch status

`GET /v1/pricing/bulk/{batchId}`

## Request

- Base URL: `https://api.shopfront.app`
- URL: `https://api.shopfront.app/v1/pricing/bulk/{batchId}`
- Auth: HTTP bearer

Poll for bulk pricing results. Returns batch progress and completed item results.
Each item result has the same format as the single `/v1/pricing/analyze` response.

**Polling:** Check every 5-10 seconds until `status` is `"completed"`.
**Retention:** Results are available for 24 hours after batch creation.

## Path parameters

- `batchId` string, uuid, required

## Response `200`

Batch status with results

- object
  - `batchId` string, uuid
  - `status` 'processing' | 'completed'
  - `progress` integer: Percentage of items completed
  - `totalItems` integer
  - `completedItems` integer
  - `failedItems` integer
  - `createdAt` string, date-time
  - `items` union[]
    - union
      - object: Completed item
        - `id` string
        - `status` 'completed'
        - `processingTimeMs` integer
        - `product` PricingProduct
          - `name` string: AI-identified product name
          - `brand` string, nullable
          - `category` string, nullable: Product type (e.g. "sneakers", "t-shirt")
          - `confidence` number: Product identification confidence
        - `pricing` PricingRecommendations
          - `recommended` integer: Recommended asking price (~95% of weighted median)
          - `quickSale` integer: Quick-sale asking price (~95% of Q1)
          - `premium` integer: Premium asking price (~95% of Q3)
          - `marketAverage` integer: Mean price across valid matches
          - `confidence` number: Pricing confidence (0.1 = low, 0.95 = high)
          - `insights` string[]: Human-readable pricing insights
        - `priceRange` PriceRange
          - `min` number
          - `max` number
          - `currency` string: ISO 4217 currency code
        - `statistics` PricingStatistics
          - `median` number
          - `mean` number
          - `trimmedMean` number
          - `standardDeviation` number
          - `iqr` number
          - `validSampleSize` integer: Number of matches after outlier removal
          - `outlierCount` integer
          - `priceRange` object
            - `min` number
            - `max` number
            - `q1` number: 25th percentile
            - `q3` number: 75th percentile
        - `competitors` CompetitorListing[]
          - `title` string
          - `price` number
          - `currency` string
          - `originalPrice` number, nullable: Price before currency conversion
          - `originalCurrency` string, nullable
          - `source` 'ebay' | 'grailed'
          - `link` string, uri
          - `thumbnail` string, uri, nullable
          - `condition` string, nullable
          - `relevance` integer, nullable: AI relevance score — how similar to the target product
        - `marketplaceBreakdown` MarketplaceBreakdown
      - object: Failed item
        - `id` string
        - `status` 'failed'
        - `error` string
        - `processingTimeMs` integer
      - object: Pending item
        - `id` string
        - `status` 'pending'

## Other responses

- `401`: Unauthorized - missing or invalid token
- `404`: Batch not found or belongs to another organisation
- `429`: Rate limit exceeded

---

[API](https://skmtc.dev/shopfront/apis/shopfront-public-api.md) - [All operations](https://skmtc.dev/shopfront/apis/shopfront-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/shopfront/apis/shopfront-public-api/revisions/4dbfb90550d4?raw)
