> For clean Markdown of any page, append .md to the page URL. > For a complete documentation index, see https://developer-stage.shipbob.dev/2026-07/api/products/get-product/llms.txt. > For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developer-stage.shipbob.dev/_mcp/server. # Get Product GET https://sandbox-api.shipbob.com/2026-07/product/{productId} Retrieves a product with all its variants and details. Reference: https://developer-stage.shipbob.dev/api/products/get-product ## Authentication - `Authorization` header (bearer token, required) — Authentication using Personal Access Token (PAT) token - `Authorization` header (bearer token, required) — OAuth2 authentication using JWT tokens ## Request ### Path parameters - `productId` (long, required) ## Response ### 200 Success - `created_on` (datetime, optional) — Timestamp when the product was created - `id` (long, optional) — Unique identifier for the product - `name` (string, optional, nullable) — Product name - `taxonomy` (Products.TaxonomyInformationViewModel, optional) — Product categorization information including category hierarchy - `type` (string, optional, nullable) — Product type (e.g., 'Regular' or 'Bundle') - `updated_on` (datetime, optional, nullable) — Timestamp when the product was last updated - `user_id` (long, optional) — ID of the user who owns this product - `variants` (list of ProductsProductViewModelV8VariantsItems, optional, nullable) — List of variants belonging to this product. Each variant represents a specific SKU. ## Errors ### 400 Bad Request Error Bad Request - `map from string to list of string` ### 404 Not Found Error Not Found - `Products.Get.Api.V5.Product.ProductId.Not.Found.OneOf.ProblemDetails.HttpValidationProblemDetails` ## Types ### Products.TaxonomyInformationViewModel - `id` (integer, optional, nullable) — Unique identifier for the taxonomy - `name` (string, optional, nullable) — Name of this taxonomy category - `parent_id` (integer, optional, nullable) — ID of the parent category in the taxonomy hierarchy - `parent_name` (string, optional, nullable) — Name of the parent category in the taxonomy hierarchy - `path` (string, optional, nullable) — Full hierarchical path of the taxonomy category (e.g., 'Electronics > Computers > Laptops') ### ProductsProductViewModelV8VariantsItems ### Products.ProblemDetails - `detail` (string, optional, nullable) - `instance` (string, optional, nullable) - `status` (integer, optional, nullable) - `title` (string, optional, nullable) - `type` (string, optional, nullable) ### Products.HttpValidationProblemDetails - `detail` (string, optional, nullable) - `errors` (map from string to list of string, optional, nullable) - `instance` (string, optional, nullable) - `status` (integer, optional, nullable) - `title` (string, optional, nullable) - `type` (string, optional, nullable) ### Products.VariantViewModelV8 - `additional_hazmat_attributes` (Products.AdditionalHazmatAttributesViewModel, optional) — Additional hazardous materials attributes for lithium batteries and dangerous goods - `associated_bundles` (list of Products.AssociatedBundlesViewModel, optional, nullable) — List of bundle products that include this variant as a component - `barcodes` (list of Products.BarcodeViewModel, optional, nullable) — List of barcodes associated with this variant (UPC, EAN, etc.) - `bundle_definition` (list of Products.BundleDefinitionViewModel, optional, nullable) — If this variant is a bundle, defines which variants and quantities make up the bundle - `channel_metadata` (list of ProductsVariantViewModelV8ChannelMetadataItems, optional, nullable) — Platform-specific metadata for sales channels (e.g., Amazon ASIN, Shopify product IDs) - `created_on` (datetime, optional) — Timestamp when the variant was created - `customs` (Products.CustomsViewModelV8, optional) — Customs and international shipping information (tariff codes, country of origin, declared value) - `dimension` (Products.DimensionViewModel, optional) — Physical dimensions of the variant (length, width, height) - `fulfillment_settings` (Products.FulfillmentSettingsViewModel, optional) — Fulfillment-specific settings (Prop 65, dangerous goods, serial scanning, case pick) - `gtin` (string, optional, nullable) — Global Trade Item Number - standardized product identifier - `id` (long, optional) — Unique identifier for the variant - `inventory` (Products.InventoryViewModel, optional) — Current inventory information including on-hand quantity - `is_digital` (boolean, optional) — Flag indicating whether this is a digital product (no physical fulfillment) - `is_image_uploaded` (boolean, optional) — Flag indicating whether a product image has been uploaded for this variant - `lot_information` (Products.LotInformationViewModel, optional) — Lot tracking settings including whether lot tracking is enabled and minimum shelf life requirements - `merge_children` (list of Products.MergedChildrenViewModel, optional, nullable) — List of variants that have been merged into this variant - `name` (string, optional, nullable) — Variant name or descriptor - `packaging_material_type` (Products.EnumViewModel, optional) — Type of packaging material used for this variant (ID and name) - `packaging_requirement` (Products.EnumViewModel, optional) — Special packaging requirements for this variant (ID and name) - `return_preferences` (Products.ReturnPreferencesViewModel, optional) — Customer return handling preferences including primary and backup actions - `reviews_pending` (list of string, optional, nullable) — List of pending review types for this variant (e.g., compliance checks, quality reviews) - `sku` (string, optional, nullable) — Stock Keeping Unit - unique identifier for the variant used in inventory management - `status` (string, optional, nullable) — Current status of the variant (e.g., 'Active', 'Inactive') - `upc` (string, optional, nullable) — Universal Product Code - 12-digit barcode identifier - `updated_on` (datetime, optional, nullable) — Timestamp when the variant was last updated - `weight` (Products.WeightViewModel, optional) — Weight of the variant including unit of measure ### Products.VariantInternalViewModelV8 - `additional_hazmat_attributes` (Products.AdditionalHazmatAttributesViewModel, optional) — Additional hazardous materials attributes for lithium batteries and dangerous goods - `associated_bundles` (list of Products.AssociatedBundlesViewModel, optional, nullable) — List of bundle products that include this variant as a component - `barcodes` (list of Products.BarcodeViewModel, optional, nullable) — List of barcodes associated with this variant (UPC, EAN, etc.) - `bundle_definition` (list of Products.BundleDefinitionViewModel, optional, nullable) — If this variant is a bundle, defines which variants and quantities make up the bundle - `channel_metadata` (list of ProductsVariantViewModelV8ChannelMetadataItems, optional, nullable) — Platform-specific metadata for sales channels (e.g., Amazon ASIN, Shopify product IDs) - `compliance` (Products.ComplianceViewModel, optional) - `created_on` (datetime, optional) — Timestamp when the variant was created - `customs` (Products.CustomsViewModelV8, optional) — Customs and international shipping information (tariff codes, country of origin, declared value) - `dimension` (Products.DimensionViewModel, optional) — Physical dimensions of the variant (length, width, height) - `fulfillment_settings` (Products.FulfillmentSettingsViewModel, optional) — Fulfillment-specific settings (Prop 65, dangerous goods, serial scanning, case pick) - `gtin` (string, optional, nullable) — Global Trade Item Number - standardized product identifier - `id` (long, optional) — Unique identifier for the variant - `inventory` (Products.InventoryViewModel, optional) — Current inventory information including on-hand quantity - `is_digital` (boolean, optional) — Flag indicating whether this is a digital product (no physical fulfillment) - `is_image_uploaded` (boolean, optional) — Flag indicating whether a product image has been uploaded for this variant - `lot_information` (Products.LotInformationViewModel, optional) — Lot tracking settings including whether lot tracking is enabled and minimum shelf life requirements - `merge_children` (list of Products.MergedChildrenViewModel, optional, nullable) — List of variants that have been merged into this variant - `name` (string, optional, nullable) — Variant name or descriptor - `packaging_material_type` (Products.EnumViewModel, optional) — Type of packaging material used for this variant (ID and name) - `packaging_requirement` (Products.EnumViewModel, optional) — Special packaging requirements for this variant (ID and name) - `return_preferences` (Products.ReturnPreferencesViewModel, optional) — Customer return handling preferences including primary and backup actions - `reviews_pending` (list of string, optional, nullable) — List of pending review types for this variant (e.g., compliance checks, quality reviews) - `sku` (string, optional, nullable) — Stock Keeping Unit - unique identifier for the variant used in inventory management - `status` (string, optional, nullable) — Current status of the variant (e.g., 'Active', 'Inactive') - `upc` (string, optional, nullable) — Universal Product Code - 12-digit barcode identifier - `updated_on` (datetime, optional, nullable) — Timestamp when the variant was last updated - `weight` (Products.WeightViewModel, optional) — Weight of the variant including unit of measure ### Products.AdditionalHazmatAttributesViewModel - `charge_state_percentage` (double, optional, nullable) - `container_type` (string, optional, nullable) - `lithium_battery_packaging` (string, optional, nullable) - `lithium_battery_type` (string, optional, nullable) - `magnet` (boolean, optional, nullable) - `net_volume` (double, optional, nullable) - `net_weight` (double, optional, nullable) - `container_metal` (boolean, optional, nullable, deprecated) ### Products.AssociatedBundlesViewModel - `product_id` (long, optional) - `product_name` (string, optional, nullable) - `quantity` (integer, optional) - `variant_id` (long, optional) - `variant_sku` (string, optional, nullable) ### Products.BarcodeViewModel - `sticker_url` (string, optional, nullable) — URL to download or view a printable barcode sticker - `value` (string, optional, nullable) — The barcode value (e.g., UPC, EAN, GTIN, or other barcode format) ### Products.BundleDefinitionViewModel - `product_id` (long, optional) - `quantity` (integer, optional) - `variant_id` (long, optional) - `variant_name` (string, optional, nullable) - `variant_sku` (string, optional, nullable) ### ProductsVariantViewModelV8ChannelMetadataItems ### Products.CustomsViewModelV8 - `country_code_of_origin` (string, optional, nullable) — ISO 3166-1 alpha-2 country code where the product was manufactured (e.g., 'US', 'CN', 'MX') - `currency` (string, optional, nullable) — ISO 4217 currency code for the declared value (e.g., 'USD', 'EUR', 'GBP') - `description` (string, optional, nullable) — Product description for customs documentation - `hs_tariff_code` (string, optional, nullable) — Harmonized System tariff code used for international customs classification (6-10 digits) - `is321_eligible` (boolean, optional) — Flag indicating eligibility for Section 321 de minimis exemption (imports under $800 to US) - `value` (double, optional, nullable) — Declared customs value of the product for international shipping ### Products.DimensionViewModel - `height` (double, optional) — Height of the product - `is_locked` (boolean, optional) — Flag indicating whether dimensions are locked and cannot be automatically recalculated by the system - `length` (double, optional) — Length of the product - `source` (string, optional, nullable) — Source of the dimension data (e.g., 'User', 'System', 'Warehouse') - `unit` (string, optional, nullable) — Unit of measurement for dimensions (e.g., 'in', 'cm') - `width` (double, optional) — Width of the product ### Products.FulfillmentSettingsViewModel - `dangerous_goods` (boolean, optional) — Flag indicating whether the product is classified as dangerous goods (hazmat) requiring special handling - `is_bpm_parcel` (boolean, optional) — Flag indicating whether this product qualifies for Business Parcel Manager (BPM) parcel shipping - `is_case_pick` (boolean, optional) — Flag indicating whether this product should be picked by the case rather than individual units - `msds_url` (string, optional, nullable) — URL to the Material Safety Data Sheet (MSDS) for hazardous materials - `requires_prop65` (boolean, optional) — Flag indicating California Proposition 65 warning label requirement for products containing chemicals known to cause cancer or reproductive harm - `serial_scan` (Products.SerialScanViewModel, optional) — Serial number scanning configuration for tracking individual units ### Products.InventoryViewModel - `inventory_id` (integer, optional, nullable) - `on_hand_qty` (integer, optional) ### Products.LotInformationViewModel - `is_lot` (boolean, optional) - `minimum_shelf_life_days` (integer, optional, nullable) ### Products.MergedChildrenViewModel - `channel_ids` (list of long, optional, nullable) - `completed_at` (datetime, optional) - `inventory_id` (long, optional, nullable) - `variant_id` (long, optional) - `variant_name` (string, optional, nullable) ### Products.EnumViewModel - `id` (long, optional) - `name` (string, optional, nullable) ### Products.ReturnPreferencesViewModel - `backup_action` (Products.EnumViewModel, optional) — Backup action to take if primary action cannot be completed - `instructions` (string, optional, nullable) — Special instructions for handling returned items - `primary_action` (Products.EnumViewModel, optional) — Primary action to take when product is returned by customer (e.g., 'Restock', 'Dispose', 'Return to Sender') - `return_to_sender_backup_action` (Products.EnumViewModel, optional) — Backup action for undeliverable packages if primary action cannot be completed - `return_to_sender_primary_action` (Products.EnumViewModel, optional) — Primary action for undeliverable packages that are returned to sender ### Products.WeightViewModel - `unit` (string, optional, nullable) — Unit of measurement for weight (e.g., 'lb', 'oz', 'kg', 'g') - `weight` (double, optional) — Weight value of the product ### Products.ComplianceViewModel - `category` (list of string, optional, nullable) - `reasons` (list of string, optional, nullable) - `status` (string, optional, nullable) ### Products.ChannelMetadataViewModel - `channel_id` (long, optional) - `channel_name` (string, optional, nullable) - `currency` (string, optional, nullable) - `id` (long, optional) - `is_inventory_sync_enabled` (boolean, optional) - `legacy_product_id` (long, optional, nullable) - `platform` (string, optional, nullable) - `platform_identifier` (string, optional, nullable) - `platform_inventory_item_id` (string, optional, nullable) - `price` (double, optional) - `seller_sku` (string, optional, nullable) ### Products.AmazonChannelMetadataViewModel - `asin` (string, optional, nullable) - `channel_id` (long, optional) - `channel_name` (string, optional, nullable) - `currency` (string, optional, nullable) - `fnsku` (string, optional, nullable) - `fulfillment_channel` (string, optional, nullable) - `id` (long, optional) - `is_inventory_sync_enabled` (boolean, optional) - `legacy_product_id` (long, optional, nullable) - `platform` (string, optional, nullable) - `platform_identifier` (string, optional, nullable) - `platform_inventory_item_id` (string, optional, nullable) - `price` (double, optional) - `seller_sku` (string, optional, nullable) ### Products.BigCommerceChannelMetadataViewModel - `channel_id` (long, optional) - `channel_name` (string, optional, nullable) - `currency` (string, optional, nullable) - `id` (long, optional) - `is_inventory_sync_enabled` (boolean, optional) - `legacy_product_id` (long, optional, nullable) - `platform` (string, optional, nullable) - `platform_identifier` (string, optional, nullable) - `platform_inventory_item_id` (string, optional, nullable) - `platform_product_id` (long, optional, nullable) - `platform_variant_id` (long, optional, nullable) - `price` (double, optional) - `seller_sku` (string, optional, nullable) ### Products.ShopifyChannelMetadataViewModel - `channel_id` (long, optional) - `channel_name` (string, optional, nullable) - `currency` (string, optional, nullable) - `id` (long, optional) - `is_inventory_sync_enabled` (boolean, optional) - `legacy_product_id` (long, optional, nullable) - `platform` (string, optional, nullable) - `platform_identifier` (string, optional, nullable) - `platform_inventory_item_id` (string, optional, nullable) - `price` (double, optional) - `seller_sku` (string, optional, nullable) ### Products.SerialScanViewModel - `exact_character_length` (integer, optional, nullable) - `is_enabled` (boolean, optional) - `prefix` (string, optional, nullable) - `suffix` (string, optional, nullable) ## Examples **Response** ```json { "created_on": "2019-08-24T14:15:22+00:00", "id": 0, "name": "string", "taxonomy": { "id": 0, "name": "string", "parent_id": 0, "parent_name": "string", "path": "string" }, "type": "string", "updated_on": "2019-08-24T14:15:22+00:00", "user_id": 0, "variants": [ { "barcodes": [ { "sticker_url": "string", "value": "string" } ], "channel_metadata": [ { "channel_id": 0, "channel_name": "string", "currency": "string", "id": 0, "is_inventory_sync_enabled": true, "legacy_product_id": 0, "platform": "string", "platform_identifier": "string", "platform_inventory_item_id": "string", "price": 0.1, "seller_sku": "string" } ], "additional_hazmat_attributes": { "charge_state_percentage": 0.1, "container_metal": true, "container_type": "string", "lithium_battery_packaging": "string", "lithium_battery_type": "string", "magnet": true, "net_volume": 0.1, "net_weight": 0.1 }, "associated_bundles": [ { "product_id": 0, "product_name": "string", "quantity": 0, "variant_id": 0, "variant_sku": "string" } ], "bundle_definition": [ { "product_id": 0, "quantity": 0, "variant_id": 0, "variant_name": "string", "variant_sku": "string" } ], "created_on": "2019-08-24T14:15:22+00:00", "customs": { "country_code_of_origin": "string", "currency": "string", "description": "string", "hs_tariff_code": "string", "is321_eligible": true, "value": 0.1 }, "dimension": { "height": 0.1, "is_locked": true, "length": 0.1, "source": "string", "unit": "string", "width": 0.1 }, "fulfillment_settings": { "dangerous_goods": true, "is_bpm_parcel": true, "is_case_pick": true, "msds_url": "string", "requires_prop65": true, "serial_scan": { "exact_character_length": 0, "is_enabled": true, "prefix": "string", "suffix": "string" } }, "gtin": "string", "id": 0, "inventory": { "inventory_id": 0, "on_hand_qty": 0 }, "is_digital": true, "is_image_uploaded": true, "lot_information": { "is_lot": true, "minimum_shelf_life_days": 0 }, "merge_children": [ { "channel_ids": [ 0 ], "completed_at": "2019-08-24T14:15:22+00:00", "inventory_id": 0, "variant_id": 0, "variant_name": "string" } ], "name": "string", "packaging_material_type": { "id": 0, "name": "string" }, "packaging_requirement": { "id": 0, "name": "string" }, "return_preferences": { "backup_action": { "id": 0, "name": "string" }, "instructions": "string", "primary_action": { "id": 0, "name": "string" }, "return_to_sender_backup_action": { "id": 0, "name": "string" }, "return_to_sender_primary_action": { "id": 0, "name": "string" } }, "reviews_pending": [ "string" ], "sku": "string", "status": "string", "upc": "string", "updated_on": "2019-08-24T14:15:22+00:00", "weight": { "unit": "string", "weight": 0.1 } } ] } ``` **SDK Code** ```python default import requests url = "https://sandbox-api.shipbob.com/2026-07/product/1" headers = {"Authorization": "Bearer "} response = requests.get(url, headers=headers) print(response.json()) ``` ```javascript default const url = 'https://sandbox-api.shipbob.com/2026-07/product/1'; const options = {method: 'GET', headers: {Authorization: 'Bearer '}}; try { const response = await fetch(url, options); const data = await response.json(); console.log(data); } catch (error) { console.error(error); } ``` ```go default package main import ( "fmt" "net/http" "io" ) func main() { url := "https://sandbox-api.shipbob.com/2026-07/product/1" req, _ := http.NewRequest("GET", url, nil) req.Header.Add("Authorization", "Bearer ") res, _ := http.DefaultClient.Do(req) defer res.Body.Close() body, _ := io.ReadAll(res.Body) fmt.Println(res) fmt.Println(string(body)) } ``` ```ruby default require 'uri' require 'net/http' url = URI("https://sandbox-api.shipbob.com/2026-07/product/1") http = Net::HTTP.new(url.host, url.port) http.use_ssl = true request = Net::HTTP::Get.new(url) request["Authorization"] = 'Bearer ' response = http.request(request) puts response.read_body ``` ```java default import com.mashape.unirest.http.HttpResponse; import com.mashape.unirest.http.Unirest; HttpResponse response = Unirest.get("https://sandbox-api.shipbob.com/2026-07/product/1") .header("Authorization", "Bearer ") .asString(); ``` ```php default request('GET', 'https://sandbox-api.shipbob.com/2026-07/product/1', [ 'headers' => [ 'Authorization' => 'Bearer ', ], ]); echo $response->getBody(); ``` ```csharp default using RestSharp; var client = new RestClient("https://sandbox-api.shipbob.com/2026-07/product/1"); var request = new RestRequest(Method.GET); request.AddHeader("Authorization", "Bearer "); IRestResponse response = client.Execute(request); ``` ```swift default import Foundation let headers = ["Authorization": "Bearer "] let request = NSMutableURLRequest(url: NSURL(string: "https://sandbox-api.shipbob.com/2026-07/product/1")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0) request.httpMethod = "GET" request.allHTTPHeaderFields = headers let session = URLSession.shared let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) } }) dataTask.resume() ```