Skip to main content
POST
/
v1
/
brand
/
products
Products
curl --request POST \
  --url https://api.upriver.ai/v1/brand/products \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <api-key>' \
  --data '
{
  "brand_url": "https://glossier.com",
  "brand_name": "Glossier",
  "response_format": "json",
  "cursor": "<string>",
  "effort": "auto"
}
'
{
  "brand_url": "https://www.glossier.com",
  "brand_name": "Glossier",
  "products": [
    {
      "name": "<string>",
      "category": "Brows",
      "description": "A brushable, buildable brow gel that shapes and fills brows.",
      "url": "https://www.glossier.com/products/boy-brow"
    }
  ],
  "next_cursor": "<string>",
  "has_more": true,
  "effort": "low"
}

Authorizations

X-API-Key
string
header
required

Body

application/json

Input model for brand product research endpoint.

brand_url
string | null

The URL of the brand's website to research for products

Example:

"https://glossier.com"

brand_name
string | null

Optional brand name hint (resolved automatically from URL if omitted)

Example:

"Glossier"

response_format
enum<string>
default:json

Format for the response: 'json' for structured data, 'text' for natural language

Available options:
json,
text
Example:

"json"

cursor
string | null

Use this to paginate through results, providing the next_cursor returned from a previous request. If omitted, the first page of results is returned.

effort
enum<string>
default:auto

Effort level for product research; 'auto' will adjust hydration effort based on result quality.

Available options:
auto,
low,
mid,
high

Response

Successful Response

Response model for brand product research results.

brand_url
string
required

The brand's primary website URL

Example:

"https://www.glossier.com"

brand_name
string
required

The resolved brand name

Example:

"Glossier"

products
ProductInfo · object[]
required

List of products found on the brand's website

next_cursor
string | null

Pagination cursor for the next page of results (if available).

has_more
boolean | null

Whether there are more pages available.

Example:

true

effort
enum<string>
default:low

Effective effort level actually used to produce these results (resolved; never 'auto').

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

"low"