---
title: "Update listing"
method: PUT
path: "/seller/listings/{id}"
tags: ["seller-listings"]
---

# Update listing

`PUT /seller/listings/{id}`

Update fields on an existing seller-owned listing.

Use this endpoint for partial updates such as price changes, quantity adjustments, visibility toggles, notes, reference metadata, and grading details.

Authorization and state rules:
- Caller must be an active seller.
- Listing must belong to the authenticated seller.
- Listing updates are blocked while active holds exist; locked listings return `423`.

Validation:
- Request body is partial, but grading metadata must remain complete:
  - `gradingProvider`, `gradingScore`, and `gradingNumber` must be provided together.
- `notes` is optional, normalized by the API, and limited to 255 characters.
- `reference` is optional integration metadata, normalized by the API, and limited to 255 characters.
- Setting `reference: null` clears any previously stored value.

Validity recalculation:
- The API recalculates `valid` during update.
- Listings priced at `>= 2000` or containing grading metadata require at least one attachment.
- If photo requirements are not met, `valid` is set to `false`.

Side effects:
- Emits `LISTING_UPDATED` webhook events after a successful update.
- Returns the refreshed listing with item, seller, attachment metadata, and the normalized `reference` value.

## Path parameters

- `id` string, required — Listing ID

## Request body

- ListingUpdate — Fields that can be updated on a listing
  - `condition` string — Product condition
  - `price` integer — Price in pence
  - `quantity` integer — Total quantity for this listings
  - `language` string — 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
  - `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`

Listing

- object
  - `id` string, required
  - `sellerId` string, required
  - `condition` string, required — Product condition
  - `price` integer, required — Price in pence
  - `quantity` integer — Total quantity for this listings
  - `available` integer — Total available for this listing
  - `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
  - `createdAt` union, required — Timestamp when the listing was created
    - string
    - string, date-time
  - `updatedAt` union, required — Timestamp when the listing was last updated
    - string
    - string, date-time
  - `item` union, required — Details of the item being listed
    - object
      - `urn` string, required
      - `type` 'card', required
      - `game` 'Pokemon', required
      - `title` string, required
      - `name` string, required
      - `rarity` string, required
      - `number` string, nullable
      - `description` string
      - `set` object, required
        - `name` string, required
        - `size` number
        - `urn` string, required
        - `counts` object, required
          - `printed` number
          - `total` number
        - `symbol` object
          - `url` string, required
        - `released` string
        - `references` string[], required
      - `series` object, required
        - `name` string, required
        - `urn` string, required
      - `images` object[], required
        - `urn` string, required
        - `illustrator` string
        - `orientation` 'portrait' | 'landscape', required
        - `url` string, uri, required
      - `alternatives` string[], required
      - `metadata` object[], required
        - `name` string, required
        - `value` union
          - string
          - string[]
          - number
          - number[]
        - `detail` union
          - unknown
          - unknown[]
            - unknown
      - `price` integer
      - `available` integer — Total available for this listing
      - `quantity` integer — Total quantity available
      - `min` object
        - `price` integer, nullable, required — Price of the cheapest listing in pence
      - `max` object
        - `price` integer, nullable, required — Price of the most expensive listing in pence
    - object
      - `urn` string, required
      - `type` 'product', required
      - `game` 'Pokemon', required
      - `title` string, required
      - `name` string, required
      - `classification` 'CARD', required
      - `count` number, required
      - `description` string
      - `images` object[], required
        - `urn` string, required
        - `illustrator` string
        - `orientation` 'portrait' | 'landscape', required
        - `url` string, uri, required
      - `series` object, required
        - `name` string, required
        - `urn` string, required
      - `set` object, required
        - `name` string, required
        - `size` number
        - `urn` string, required
        - `counts` object, required
          - `printed` number
          - `total` number
        - `symbol` object
          - `url` string, required
        - `released` string
        - `references` string[], required
      - `metadata` object[], required
        - `name` string, required
        - `value` union
          - string
          - string[]
          - number
          - number[]
        - `detail` union
          - unknown
          - unknown[]
            - unknown
      - `price` integer
      - `available` integer — Total available for this listing
      - `quantity` integer — Total quantity available
      - `min` object
        - `price` integer, nullable, required — Price of the cheapest listing in pence
      - `max` object
        - `price` integer, nullable, required — Price of the most expensive listing in pence
  - `seller` object, required — Seller of the listing
    - `id` string, required — Unique identifier for the user
    - `username` string, required — Public username of the user
    - `joined` string, date-time — ISO timestamp when the user account was created
    - `avatar` string, uri — URL to the user's avatar image
    - `cover` string, uri — URL to the user's cover image
    - `profile` string — Information about the user
    - `reviews` integer, required — Total number of reviews the user has received
    - `rating` number, required — Confidence-based rating between 0 and 5
    - `score` number, required — Average rating between 0 and 5
    - `sales` integer, required — Total number of sales the user has made
    - `purchases` integer, required — Total number of purchases the user has made
  - `locked` boolean, required — True when the listing has active item holds
  - `attachments` ListingAttachment[] — Image attachments for the listing
    - `id` string, required — Image identifier
    - `url` string, uri, required — Public URL for the attachment
  - `valid` boolean, required — True when the listing meets all requirements
  - `hidden` boolean, required — True when the listing is hidden from buyers
  - `notes` string, nullable — Private notes for the seller such as SKUs or storage locations
  - `reference` string, nullable — Third-party integration reference for this listing

## Other responses

- `404` — Listing not found

---

[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)
