The Get Product endpoint retrieves a single product by its unique identifier. By default, the response includes core product data — name, brand, category, pricing, regions, and hair profile. Pass ?include=ingredients to receive a complete ingredient breakdown, including sulphate, silicone, and paraben flags, protein and moisture levels, and porosity match data — all in one call.
Endpoint
GET https://api.blackhairapi.com/v1/products/{product_id}
Header Value Description X-API-Keybha_...Your Black Hair API key. All requests must include this header.
Requests without a valid X-API-Key header return a 401 Unauthorized response. Keep your key secret and never expose it in client-side code.
Path parameters
The unique identifier of the product to retrieve. UUIDs are returned in the id field of the List Products response.
Query parameters
A comma-separated list of related data to expand inline. Currently supported value: ingredients. When included, the response body gains an ingredients object containing the full parsed ingredient analysis for the product.
Response
A successful request returns HTTP 200 with a JSON object representing the product.
The product’s unique identifier.
The full product name as it appears on packaging.
A summary of the product’s parent brand. Show Brand summary fields
The brand’s unique identifier.
The brand’s display name.
Whether the brand is Black-owned.
The product category (e.g., shampoo, conditioner, oil, styler).
A text description of the product and its intended use.
The typical retail price range for the product. The minimum price in USD.
The maximum price in USD.
The regions where this product is available (e.g., ["US", "UK", "NG"]).
URLs pointing to product images.
A direct URL to purchase the product.
Whether the product is currently active in the catalog.
The hair profile this product is recommended for. Hair type codes this product suits (e.g., ["3C", "4A", "4B"]).
Porosity levels this product is recommended for (e.g., ["high", "normal"]).
Hair concerns this product addresses (e.g., ["dryness", "breakage", "frizz"]).
Only present when you pass ?include=ingredients. Contains the parsed ingredient analysis for the product. The raw, unparsed ingredient text as printed on the product label.
Whether the ingredient list contains one or more sulphates.
Whether the ingredient list contains one or more parabens.
Whether the ingredient list contains one or more silicones.
The assessed protein content of the formula. Common values: "none", "low", "medium", "high".
The assessed moisture content of the formula. Common values: "low", "medium", "high".
The porosity types this product’s formulation is best suited for (e.g., ["high", "normal"]).
A list of formulation flags identified during ingredient parsing (e.g., ["heavy-oils", "film-former", "humectant"]).
Examples
Without ingredient data
curl https://api.blackhairapi.com/v1/products/a1b2c3d4-e5f6-7890-abcd-ef1234567890 \
-H "X-API-Key: bha_your_api_key"
Example response
{
"id" : "a1b2c3d4-e5f6-7890-abcd-ef1234567890" ,
"name" : "Honey Transforming Collection Moisturizing Leave-In" ,
"brand" : {
"id" : "b2c3d4e5-f6a7-8901-bcde-f12345678901" ,
"name" : "Mielle Organics" ,
"is_black_owned" : true
},
"category" : "leave-in" ,
"description" : "A lightweight leave-in conditioner infused with honey and ginger to deeply moisturize and strengthen natural hair." ,
"price_range" : {
"min" : 9.99 ,
"max" : 12.99
},
"regions" : [ "US" , "UK" , "CA" ],
"images" : [
"https://cdn.blackhairapi.com/images/mielle-leave-in-front.jpg" ,
"https://cdn.blackhairapi.com/images/mielle-leave-in-back.jpg"
],
"buy_url" : "https://mielleorganics.com/products/honey-leave-in" ,
"is_active" : true ,
"hair_profile" : {
"hair_types" : [ "4A" , "4B" , "4C" ],
"porosity" : [ "high" , "normal" ],
"concerns" : [ "dryness" , "breakage" , "shrinkage" ]
}
}
With ingredient data (?include=ingredients)
curl "https://api.blackhairapi.com/v1/products/a1b2c3d4-e5f6-7890-abcd-ef1234567890?include=ingredients" \
-H "X-API-Key: bha_your_api_key"
Example response
{
"id" : "a1b2c3d4-e5f6-7890-abcd-ef1234567890" ,
"name" : "Honey Transforming Collection Moisturizing Leave-In" ,
"brand" : {
"id" : "b2c3d4e5-f6a7-8901-bcde-f12345678901" ,
"name" : "Mielle Organics" ,
"is_black_owned" : true
},
"category" : "leave-in" ,
"description" : "A lightweight leave-in conditioner infused with honey and ginger to deeply moisturize and strengthen natural hair." ,
"price_range" : {
"min" : 9.99 ,
"max" : 12.99
},
"regions" : [ "US" , "UK" , "CA" ],
"images" : [
"https://cdn.blackhairapi.com/images/mielle-leave-in-front.jpg" ,
"https://cdn.blackhairapi.com/images/mielle-leave-in-back.jpg"
],
"buy_url" : "https://mielleorganics.com/products/honey-leave-in" ,
"is_active" : true ,
"hair_profile" : {
"hair_types" : [ "4A" , "4B" , "4C" ],
"porosity" : [ "high" , "normal" ],
"concerns" : [ "dryness" , "breakage" , "shrinkage" ]
},
"ingredients" : {
"raw_list" : "Water, Honey, Glycerin, Behentrimonium Methosulfate, Cetyl Alcohol, Ginger Root Extract, Biotin, Panthenol, Fragrance" ,
"has_sulphates" : false ,
"has_parabens" : false ,
"has_silicones" : false ,
"protein_level" : "low" ,
"moisture_level" : "high" ,
"porosity_match" : [ "high" , "normal" ],
"flags" : [ "humectant" , "emollient" , "conditioning-agent" ]
}
}
The ingredients object is only included in the response when you explicitly pass ?include=ingredients. Products without an associated ingredient record will return null for this field even when the parameter is set.
Error responses
Status Code Description 401UnauthorizedThe X-API-Key header is missing or the key is invalid. 404Not FoundNo product exists with the supplied product_id. 429Too Many RequestsYou have exceeded your plan’s monthly request limit. Upgrade to continue.