POST /lines/lookup

Look up up to 500 (sellerId, skuId) pairs, the maximum number of cart lines. This public buyer-facing endpoint returns display details and current state for each line; Snapcaster implements it. If a listing has sold out or been removed, the response still includes catalog product and SKU details, with currentPrice: null and available: 0. Unknown sellers or SKUs produce null values instead of errors. The response contains one element per requested pair, in request order.

Snapcaster implements this buyer-facing operation. Use the reference to see how your listings appear to buyers.

Example

These examples send requests to the sandbox.

Generated cURL request - Sandbox: Generated request
curl --request POST \
  --url 'https://api-sandbox.snapcaster.ca/api/v1/marketplace/lines/lookup' \
  --header 'Content-Type: application/json' \
  --data '{
  "lines": [
    {
      "sellerId": 1,
      "skuId": 1
    }
  ]
}'
Generated Response 200: Generated response 200
{
  "success": true,
  "data": {
    "lines": [
      {
        "sellerId": 0,
        "skuId": 0,
        "seller": {
          "name": "string"
        },
        "product": {
          "productId": 0,
          "name": "string",
          "set": "string",
          "image": "string"
        },
        "sku": {
          "condition": "string",
          "language": "string",
          "finish": "string"
        },
        "currentPrice": 0,
        "available": 0
      }
    ]
  }
}

Endpoint

EnvironmentURL
Sandboxhttps://api-sandbox.snapcaster.ca/api/v1/marketplace/lines/lookup
Productionhttps://api.snapcaster.ca/api/v1/marketplace/lines/lookup
Authentication

None.

Request

Request body

lines array of object required

The line items in this request, response, or event.

Constraints: maximum items: 500

Show child fieldsHide child fields
lines[].sellerId integer required

Constraints: exclusive minimum: 0

lines[].skuId integer required

See Canonical catalog in Core concepts.

Constraints: exclusive minimum: 0

Response

200

Cart line details, one per requested pair.

Response body: LineLookupResponse

success boolean required

Whether the operation completed as requested.

Constraints: allowed values: true

data object required

The operation or event payload.

Show child fieldsHide child fields
data.lines LineLookupLine[] required

One element per requested pair, in request order.

Show child fieldsHide child fields
data.lines[].sellerId integer required

The requested seller id. Together with skuId, identifies the cart line.

data.lines[].skuId integer required

The requested SKU id. Together with sellerId, identifies the cart line.

data.lines[].seller object or null required

Null when the seller is unknown.

Show child fieldsHide child fields
data.lines[].seller.name string required

Seller display name; not a handle/slug.

data.lines[].product object or null required

Canonical catalog display data; null when the SKU is unknown.

Show child fieldsHide child fields
data.lines[].product.productId integer required

See Canonical catalog in Core concepts.

data.lines[].product.name string or null required
data.lines[].product.set string or null required

The card set or expansion.

data.lines[].product.image string or null required

The product image URL shown to the buyer.

data.lines[].sku object or null required

The catalog condition, language, and finish. Null when the SKU is unknown.

Show child fieldsHide child fields
data.lines[].sku.condition string or null required

The normalized condition assigned to the card.

data.lines[].sku.language string or null required

The language of the card printing.

data.lines[].sku.finish string or null required

The physical finish or foil treatment of the card.

data.lines[].currentPrice integer or null required

The current listing price in integer cents. Null when there is no live listing for this pair.

data.lines[].available integer required

On-hand minus committed units. Zero when there is no live listing for this pair.

data.lines[].sellerUnavailable object

Present when the store cannot accept checkout; absent when it is ready. The response keeps the line and its current currentPrice and available values. Use this field to decide how to display the line in the cart. If several lines belong to the same unavailable store, each includes the same block.

Show child fieldsHide child fields
data.lines[].sellerUnavailable.sellerId integer required

The unavailable store id, matching the cart line.

data.lines[].sellerUnavailable.reason string required

SELLER_ON_VACATION means the store has enabled vacation mode and is otherwise ready. SELLER_UNAVAILABLE covers all other causes without exposing the store's private account status.

Constraints: allowed values: SELLER_ON_VACATION, SELLER_UNAVAILABLE

data.lines[].policy object

The eligibility and buyer-protection decision for this line.

Show child fieldsHide child fields
data.lines[].policy.status string required

Constraints: allowed values: eligible, blocked

data.lines[].policy.error object or null required

Error details for a failed request.

Show child fieldsHide child fields
data.lines[].policy.error.code string required

The stable machine-readable code for this result.

data.lines[].policy.error.message string required

A human-readable explanation of the result.

data.lines[].policy.error.action string required

How to resolve this issue.

data.lines[].disclosures ListingDisclosures or null

Provenance, grading, and authenticity statements shown to the buyer.

Show child fieldsHide child fields
data.lines[].disclosures.imageSource string required

Constraints: allowed values: catalog

data.lines[].disclosures.conditionSource string required

Constraints: allowed values: seller_declared

data.lines[].disclosures.authenticitySource string required

Constraints: allowed values: seller_attestation

data.lines[].disclosures.snapcasterInspected boolean required

Constraints: allowed values: false

data.lines[].disclosures.snapcasterGraded boolean required

Constraints: allowed values: false

data.lines[].disclosures.snapcasterAuthenticated boolean required

Constraints: allowed values: false

data.lines[].disclosures.gradingStandard string required

Constraints: allowed values: snapcaster-magic-v1, seller-declared-no-specialist-promise

data.lines[].disclosures.declaredGrade string or null required
data.lines[].disclosures.buyerProtection string required

Constraints: allowed values: magic-grade-and-authenticity, genuine-and-as-described

data.lines[].fulfillmentObligation ListingFulfillmentObligation or null
Show child fieldsHide child fields
data.lines[].fulfillmentObligation.sku string required

The SKU that identifies the card variant.

Constraints: allowed values: exact

data.lines[].fulfillmentObligation.printing string required

The card printing the seller must supply.

Constraints: allowed values: exact

data.lines[].fulfillmentObligation.language string required

The language of the card printing.

Constraints: allowed values: exact

data.lines[].fulfillmentObligation.finish string required

The physical finish or foil treatment of the card.

Constraints: allowed values: exact

data.lines[].fulfillmentObligation.condition string required

The normalized condition assigned to the card.

Constraints: allowed values: declared-or-better

Errors

Errors return a ApiError body, except HTTP 400 (MarketplaceError). Error codes explains both error bodies and lists every code.

  • 400 INVALID_REQUEST

    The request failed validation (INVALID_REQUEST).

    Do this: Correct the fields named in the error details, then retry the request.

  • 413 PAYLOAD_TOO_LARGE

    The body is larger than this route accepts (PAYLOAD_TOO_LARGE).

    Do this: Send a smaller body and retry.

  • 500 INTERNAL_ERROR

    An unexpected failure (INTERNAL_ERROR).

    Do this: Retry with bounded retries and jitter. If the failure persists, contact Snapcaster with the X-Correlation-ID response header.