Skip to content

List a product's variants

Open .md

GET/v1/api/store/{team_slug}/product/{hash_id}/variant

v1Operation ID v1_public_product_variant_index

Lists the live variants (size and color combinations) of a variant product, paged. Each variant has its id (use it as the db_variant id on sales order lines), size_id, size_label, color_id, color_label, color_hex, default_price, price_data, weight, vendor_id and supplier_id.

Each variant has its own phased_out, phased_out_at and phased_out_by ({id, name} or null: on sale, or nobody recorded), loaded for the whole list in one query. The list is paged: pagination gives total, count, perPage, currentPage and totalPages. Ask for the next page with page; the page size is the team's setting (50 unless changed), and per_page is ignored.

Permission

Any member of the team.

Path parameters

  • team_slugstringrequired

    Your team slug, shown as Team ID next to your API key in Profile.

    • Example your-team
  • hash_idstringrequired

    The product's id (id from List products). A hash id from an earlier answer; unique keys and document numbers (such as PO0042) don't work here.

    • Example EDhVUaC6jbLbed

Query parameters

  • pageinteger

    The page to return. Pages hold the team's page size (pagination_per_page in team settings: 50 unless changed, 5 to 100). per_page is not read here.

    • Default 1
    • Minimum 1
    • Example 1

Request body

This operation takes no request body.

Response

200Successful response.

  • dataarray of objectsrequired
    Fields of each item (23)
    • typestringrequired
      • Always "variant_option"
    • default_priceinteger | number | stringrequired

      This variant's selling price. Never null. Thousandths, an older encoding: 12500 is 12.50. Usually a whole number; an amount finer than a thousandth comes back as a number with a fraction (1234.5 is 1.2345), or as a string ("1234.5") when you send X-Yoprint-Decimal-Format: exact-v1. See Money and quantities.

    • idstringrequired

      The variant id: the db_variant line's product id.

    • phased_outbooleanrequired
    • trashedbooleanrequired
    • barcodestring | null
    • brandstring | null

      The parent product's brand.

    • color_hexstring | null
    • color_idstring | null
    • color_labelstring | null
    • descriptionstring | null

      The parent product's description.

    • enableboolean
    • phased_out_atstring (date-time) | null
    • phased_out_byobject | null

      Who did it, as {id, name}; null when on sale or nobody was recorded.

      Child fields (2)
    • price_dataobject | array

      Prices for pricing groups, as saved: keyed by the pricing group's internal number (not its hash id), each {"price": <thousandths>}. An empty list [] when there are none.

    • size_idstring | null
    • size_labelstring | null
    • supplier_idstring | null
    • taxableboolean

      The parent product's taxable.

    • titlestring | null

      The parent product's title.

    • vendor_idstring

      The vendor id, or an empty string when none.

    • weightnumber | string | null
  • statusintegerrequired
  • successbooleanrequired
  • Child fields (6)
    • countintegerrequired
    • currentPageintegerrequired
    • perPageintegerrequired
    • totalintegerrequired
    • totalPagesintegerrequired

Errors

  • 401The API key is missing or wrong (unauthenticated).

  • 403You are not allowed to do this. api_access_not_in_plan: your team's plan doesn't include API access (Pro and above, with an active subscription or trial), so every request answers this until the team upgrades. When your role lacks the permission the operation needs, the body is only {"message": "Insufficient Permission"}. Other refusals use the error envelope, with unauthorized or user_is_not_authorized.

  • 404Not found. page_not_found: the team slug is unknown, you are not a member of the team, or an id in the path is not one of this team's. code: null, with a message that starts "No query results for": there is no record with that id.

Notes

  • Amounts here use thousandths, an older encoding: 12500 is 12.50. Usually a whole number; an amount finer than a thousandth comes back as a number with a fraction (1234.5 is 1.2345), or as a string ("1234.5") when you send X-Yoprint-Decimal-Format: exact-v1. See Money and quantities.