Skip to content

Get a variant

Open .md

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

v1Operation ID v1_public_product_variant_show

Returns one live variant by its id, with its own sale state (phased_out, phased_out_at, phased_out_by).

Permission

Any member of the team.

Business rules

  • The product id in the path is not checked: any live variant of the team is returned, whichever product it belongs to.

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
  • idstringrequired

    The variant's id (id from List a product's variants, or attr_data[].id from Load a product for a sales order line). A hash id from an earlier answer; unique keys and document numbers (such as PO0042) don't work here.

    • Example uAu3dAKIaHyAYk

Request body

This operation takes no request body.

Response

200Successful response.

  • dataobjectrequired
    Child fields (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

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.

    When
    No live variant with this id. error.code is null and error.message names the record type.
    Fix
    Check the id; deleted variants are not returned.