Skip to main content
POST
/
v1
/
brand
/
product
Product Details
curl --request POST \
  --url https://api.upriver.ai/v1/brand/product \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <api-key>' \
  --data '
{
  "product_name": "Boy Brow",
  "brand_url": "https://glossier.com",
  "brand_name": "<string>",
  "product_url": "https://www.glossier.com/products/boy-brow",
  "effort": "low"
}
'
import requests

url = "https://api.upriver.ai/v1/brand/product"

payload = {
    "product_name": "Boy Brow",
    "brand_url": "https://glossier.com",
    "brand_name": "<string>",
    "product_url": "https://www.glossier.com/products/boy-brow",
    "effort": "low"
}
headers = {
    "X-API-Key": "<api-key>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
  method: 'POST',
  headers: {'X-API-Key': '<api-key>', 'Content-Type': 'application/json'},
  body: JSON.stringify({
    product_name: 'Boy Brow',
    brand_url: 'https://glossier.com',
    brand_name: '<string>',
    product_url: 'https://www.glossier.com/products/boy-brow',
    effort: 'low'
  })
};

fetch('https://api.upriver.ai/v1/brand/product', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://api.upriver.ai/v1/brand/product",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_POSTFIELDS => json_encode([
    'product_name' => 'Boy Brow',
    'brand_url' => 'https://glossier.com',
    'brand_name' => '<string>',
    'product_url' => 'https://www.glossier.com/products/boy-brow',
    'effort' => 'low'
  ]),
  CURLOPT_HTTPHEADER => [
    "Content-Type: application/json",
    "X-API-Key: <api-key>"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.upriver.ai/v1/brand/product"

	payload := strings.NewReader("{\n  \"product_name\": \"Boy Brow\",\n  \"brand_url\": \"https://glossier.com\",\n  \"brand_name\": \"<string>\",\n  \"product_url\": \"https://www.glossier.com/products/boy-brow\",\n  \"effort\": \"low\"\n}")

	req, _ := http.NewRequest("POST", url, payload)

	req.Header.Add("X-API-Key", "<api-key>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://api.upriver.ai/v1/brand/product")
  .header("X-API-Key", "<api-key>")
  .header("Content-Type", "application/json")
  .body("{\n  \"product_name\": \"Boy Brow\",\n  \"brand_url\": \"https://glossier.com\",\n  \"brand_name\": \"<string>\",\n  \"product_url\": \"https://www.glossier.com/products/boy-brow\",\n  \"effort\": \"low\"\n}")
  .asString();
require 'uri'
require 'net/http'

url = URI("https://api.upriver.ai/v1/brand/product")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n  \"product_name\": \"Boy Brow\",\n  \"brand_url\": \"https://glossier.com\",\n  \"brand_name\": \"<string>\",\n  \"product_url\": \"https://www.glossier.com/products/boy-brow\",\n  \"effort\": \"low\"\n}"

response = http.request(request)
puts response.read_body
{
  "name": "Boy Brow",
  "description": "A brushable, buildable brow gel that thickens and shapes brows. Available in 5 shades, Boy Brow uses a short bristle brush to deposit a flexible, buildable hold formula.",
  "features": [
    "Flexible, buildable hold",
    "Short bristle brush for precise application",
    "Available in 5 shades",
    "Conditioning formula with cellulose and oleic acid"
  ],
  "specifications": {
    "shades": "Blond, Brown, Black, Auburn, Clear",
    "size": "3.12 g / 0.11 oz",
    "type": "Brow gel"
  },
  "price": "$18.00",
  "currency": "USD",
  "reviews_summary": "4.5 stars from 3,200+ reviews. Customers love the natural look and easy application.",
  "alternatives": [
    "Benefit Gimme Brow+",
    "NYX Thick It Stick It Brow Gel"
  ],
  "images": [
    "https://www.glossier.com/cdn/images/boy-brow-brown.jpg"
  ]
}
{
  "detail": "No products found on https://example.com"
}
{
  "detail": [
    {
      "loc": [
        "<string>"
      ],
      "msg": "<string>",
      "type": "<string>"
    }
  ]
}

Authorizations

X-API-Key
string
header
required

Body

application/json

Input model for detailed product research endpoint.

product_name
string
required

The name of the product to research.

Example:

"Boy Brow"

brand_url
string | null

The brand's website URL.

Example:

"https://glossier.com"

brand_name
string | null
deprecated

Deprecated — brand name is now resolved automatically from the URL. This field is accepted but ignored.

product_url
string | null

The product page URL.

Example:

"https://www.glossier.com/products/boy-brow"

effort
enum<string>
default:low

Effort level: 'low' (basic details), 'high' (includes competitive info)

Available options:
auto,
low,
mid,
high
Example:

"low"

Response

Successful Response

Response model for detailed product research.

name
string
required

Official product name

Example:

"Boy Brow"

description
string
required

Detailed product description

Example:

"A brushable, buildable brow gel that thickens and shapes brows. Available in 5 shades, Boy Brow uses a short bristle brush to deposit a flexible, buildable hold formula."

features
string[]

Key features

Example:
[
  "Flexible, buildable hold",
  "Short bristle brush for precise application",
  "Available in 5 shades",
  "Conditioning formula with cellulose and oleic acid"
]
specifications
Specifications · object

Technical specifications

Example:
{
  "shades": "Blond, Brown, Black, Auburn, Clear",
  "size": "3.12 g / 0.11 oz",
  "type": "Brow gel"
}
price
string | null

Price information

Example:

"$18.00"

currency
string | null

Currency code

Example:

"USD"

reviews_summary
string | null

Summary of reviews

Example:

"4.5 stars from 3,200+ reviews. Customers love the natural look and easy application."

alternatives
string[]

Alternative products (high effort only)

Example:
[
  "Benefit Gimme Brow+",
  "NYX Thick It Stick It Brow Gel"
]
images
string[]

Product images

Example:
[
  "https://www.glossier.com/cdn/images/boy-brow-brown.jpg"
]