> For the complete documentation index, see [llms.txt](https://docs.auctionplusapp.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.auctionplusapp.com/storefront-api/variants.md).

# Variants

A variant is a Shopify product variant that Auction Plus tracks for a shop. The **externalId** attribute is the Shopify variant ID, and **displayName** combines the product and variant titles for display. The **price** attribute is returned as a price object containing **value** (minor units), **major**, **display**, and **currency** fields.

Variants are looked up by Shopify variant ID through the required `filter[externalId]` parameter.

Include **currentAuctionItem** to return the variant's live auction item alongside it.

## List Variants

> Returns the active variants matching the required \`filter\[externalId]\` filter.

```json
{"openapi":"3.1.0","info":{"title":"Auction Plus Storefront API Documentation","version":"1.0.0"},"tags":[{"name":"Variants","description":"A variant is a Shopify product variant that Auction Plus tracks for a shop. The **externalId** attribute is the Shopify variant ID, and **displayName** combines the product and variant titles for display. The **price** attribute is returned as a price object containing **value** (minor units), **major**, **display**, and **currency** fields.\n\nVariants are looked up by Shopify variant ID through the required `filter[externalId]` parameter.\n\nInclude **currentAuctionItem** to return the variant's live auction item alongside it."}],"servers":[{"url":"https://api.auctionplusapp.com/storefront/v1"}],"security":[{"http":[]},{"apiKey":[]}],"components":{"securitySchemes":{"http":{"type":"http","description":"Your storefront (public) token, sent as <code>Authorization: Bearer STOREFRONT_TOKEN</code>. Generate one in Auction Plus under Settings > API, in the <b>Storefront API</b> section, by clicking <b>Generate Public Token</b>. Required on every request.","scheme":"bearer"},"apiKey":{"type":"apiKey","description":"A Shopify Customer Account API access token for the signed-in customer. Optional: send it to identify the customer for the request. Required for endpoints that act on behalf of a customer (placing bids, watching items) and the <code>viewerFields</code> parameter.","in":"header","name":"X-Shopify-Customer-Access-Token"}},"schemas":{"VariantResource":{"type":"object","properties":{"id":{"type":"string"},"type":{"type":"string","const":"variants"},"attributes":{"type":"object","properties":{"externalId":{"type":["integer","null"]},"displayName":{"type":"string"},"title":{"type":["string","null"]},"price":{"anyOf":[{"$ref":"#/components/schemas/Money"},{"type":"null"}]},"photoUrl":{"type":["string","null"]}}}},"required":["id","type"],"title":"VariantResource"},"Money":{"type":"object","properties":{"value":{"type":"integer"},"major":{"type":"string"},"display":{"type":"string"},"currency":{"type":"string"}},"required":["value","major","display","currency"],"title":"Money"}},"responses":{"AuthenticationException":{"description":"Unauthenticated","content":{"application/vnd.api+json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","description":"The HTTP status code applicable to this problem, expressed as a string."},"code":{"type":"string","description":"An application-specific error code."},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem."},"id":{"type":"string","description":"A unique identifier for this particular occurrence of the problem."},"title":{"type":"string","description":"A short, human-readable summary of the problem."},"source":{"type":"object","description":"An object containing references to the source of the error.","properties":{"pointer":{"type":"string"},"parameter":{"type":"string"},"header":{"type":"string"}}},"meta":{"type":"object","description":"A meta object containing additional information about the error."}},"required":["status","code","detail"]}}},"required":["errors"]}}}},"ValidationException":{"description":"Validation error","content":{"application/vnd.api+json":{"schema":{"type":"object","properties":{"errors":{"type":"array","items":{"type":"object","properties":{"status":{"type":"string","description":"The HTTP status code applicable to this problem, expressed as a string."},"code":{"type":"string","description":"An application-specific error code."},"detail":{"type":"string","description":"A human-readable explanation specific to this occurrence of the problem."},"id":{"type":"string","description":"A unique identifier for this particular occurrence of the problem."},"title":{"type":"string","description":"A short, human-readable summary of the problem."},"source":{"type":"object","description":"An object containing references to the source of the error.","properties":{"pointer":{"type":"string"},"parameter":{"type":"string"},"header":{"type":"string"}}},"meta":{"type":"object","description":"A meta object containing additional information about the error."}},"required":["status","code","detail"]}}},"required":["errors"]}}}}}},"paths":{"/variants":{"get":{"operationId":"listVariants","description":"Returns the active variants matching the required `filter[externalId]` filter.","summary":"List Variants","tags":["Variants"],"parameters":[{"name":"filter[externalId]","in":"query","required":true,"description":"A comma-separated list of Shopify external variant IDs to fetch (maximum 50).","schema":{"type":"string"}},{"name":"viewerFields","in":"query","description":"Comma-separated per-viewer fields to return under `meta.viewer` on the resource and any included resources. Available values: `hasBid`, `isWatching`, `isHighBidder`, `isOwner`. Requires an authenticated customer.","schema":{"type":["string","null"]}},{"name":"perPage","in":"query","description":"Results per page (1–100).","schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"fields[variants]","in":"query","description":"Available values are `externalId`, `displayName`, `title`, `price`, `photoUrl`. You can include multiple values by separating them with a comma.","schema":{"type":"string"}},{"name":"fields[auction-items]","in":"query","description":"Available values are `startPrice`, `bidIncrementStrategy`, `automaticBidding`, `softClose`, `totalBids`, `highBidAmount`, `minimumBid`, `currentIncrement`, `startsAt`, `endsAt`, `position`, `status`, `enableReserve`, `reserveMet`, `processed`, `createdAt`, `updatedAt`, `canceledAt`. You can include multiple values by separating them with a comma.","schema":{"type":"string"}},{"name":"fields[products]","in":"query","description":"Available values are `externalId`, `title`, `vendor`, `type`, `photoUrl`, `handle`. You can include multiple values by separating them with a comma.","schema":{"type":"string"}},{"name":"fields[bids]","in":"query","description":"Available values are `amount`, `placedAt`. You can include multiple values by separating them with a comma.","schema":{"type":"string"}},{"name":"include","in":"query","description":"Comma-separated list of related resources to include in the response. Available values: `product`, `currentAuctionItem`, `currentAuctionItem.highBid`, `currentAuctionItem.highBid.customer`.","schema":{"type":"string"}}],"responses":{"200":{"description":"Paginated set of `VariantResource`","content":{"application/vnd.api+json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/VariantResource"},{"type":"object","properties":{"relationships":{"type":"object","properties":{"currentAuctionItem":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","enum":["auction-items"]},"id":{"type":"string"}},"required":["type","id"]}}},"product":{"type":"object","properties":{"data":{"type":"object","properties":{"type":{"type":"string","enum":["products"]},"id":{"type":"string"}},"required":["type","id"]}}}}}}}]}},"meta":{"type":"object","properties":{"currentPage":{"type":"integer","minimum":1},"from":{"type":["integer","null"],"minimum":1},"lastPage":{"type":"integer","minimum":1},"perPage":{"type":"integer","description":"Number of items shown per page.","minimum":0},"to":{"type":["integer","null"],"description":"Number of the last item in the slice.","minimum":1},"total":{"type":"integer","description":"Total number of items being paginated.","minimum":0}},"required":["currentPage","from","lastPage","perPage","to","total"]}},"required":["data","meta"]}}}},"401":{"$ref":"#/components/responses/AuthenticationException"},"422":{"$ref":"#/components/responses/ValidationException"}}}}}}
```
