---
title: "Bulk create listings"
method: POST
path: "/seller/listings/bulk"
tags: ["seller-listings"]
---

# Bulk create listings

`POST /seller/listings/bulk`

Create many listings in one request with per-record success tracking.

Use this endpoint for high-volume listing ingestion from seller tools or migration flows.

Request limits and validation:
- Accepts up to `200` listing payloads per call.
- Each listing uses the same schema and validation rules as single listing creation.
- Optional `reference` metadata is accepted per listing and normalized the same way as single-create.
- Duplicate URNs in the request are allowed but each array entry is still processed independently.

Processing model:
- Listings are processed one by one; one failure does not stop other records.
- Missing items, validation failures, or persistence errors are captured per listing.
- Empty-string `reference` values are treated as a clear request (`null` in storage).
- The response always returns two URN arrays: `successful` and `failed`.

Seller and listing rules:
- Caller must be an active seller.
- Item URNs must exist in the catalog index to create a listing.
- Listing validity follows the same photo requirement logic as single-create:
  - price `>= 2000` or grading metadata requires at least one attachment to become valid.

Side effects:
- Emits `LISTING_CREATED` webhook events for each successfully created listing.
- Invalidates seller stats cache tags as successful records are written.
- Writes per-listing analytics events.

## Request body

- BulkListingRequest — Request payload for bulk listing creation
  - `listings` ListingInput[], required — Listings to create or update
    - `condition` string, required — Product condition
    - `price` integer, required — Price in pence
    - `quantity` integer — Total quantity for this listings
    - `language` string, required — Languages of the card
    - `variants` string[] — Variants of the listed card
    - `comment` string, nullable — Seller's comment about the listing
    - `gradingProvider` string, nullable — Provider responsible for grading the card
    - `gradingScore` string, nullable — Score assigned to the card by the grading provider
    - `gradingNumber` string, nullable — Certificate or registration number issued by the grading provider
    - `hidden` boolean — True when the listing is hidden from buyers
    - `urn` string, required — URN of the product being listed
    - `notes` string, nullable — Private notes for the seller such as SKUs or storage locations
    - `reference` string, nullable — Third-party integration reference for this listing

## Response `200`

Result of processing each listing

- BulkListingResponse — Result of processing bulk listings
  - `successful` string[], required — URNs processed successfully
  - `failed` string[], required — URNs that failed to process

## Other responses

- `400` — Seller not onboarded

---

[API](https://skmtc.net/managem/apis/managem-api.md) · [All operations](https://skmtc.net/managem/apis/managem-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/managem/managem-api/revisions/e8d78a3a2e8b/schema)
