import requests
url = "https://api.trychannel3.com/experimental/find-products-in-image"
payload = {
"image_url": "<string>",
"base64_image": "<string>",
"limit": 10,
"filters": {
"brand_ids": ["<string>"],
"conditions": [],
"age": [],
"price": {
"min_price": 123,
"max_price": 123
},
"availability": [],
"sale": "on_sale",
"website_ids": ["<string>"],
"category_ids": ["<string>"],
"exclude_brand_ids": ["<string>"],
"exclude_website_ids": ["<string>"],
"exclude_category_ids": ["<string>"],
"colors": {
"palette": [
{
"hex": "<string>",
"percentage": 123
}
],
"match": "standard"
},
"attributes": {},
"dimensions": {
"length": {
"min": 123,
"max": 123
},
"width": {
"min": 123,
"max": 123
},
"height": {
"min": 123,
"max": 123
},
"weight": {
"min": 123,
"max": 123
}
}
},
"config": { "collection_id": "<string>" },
"max_things": 6
}
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({
image_url: '<string>',
base64_image: '<string>',
limit: 10,
filters: {
brand_ids: ['<string>'],
conditions: [],
age: [],
price: {min_price: 123, max_price: 123},
availability: [],
sale: 'on_sale',
website_ids: ['<string>'],
category_ids: ['<string>'],
exclude_brand_ids: ['<string>'],
exclude_website_ids: ['<string>'],
exclude_category_ids: ['<string>'],
colors: {palette: [{hex: '<string>', percentage: 123}], match: 'standard'},
attributes: {},
dimensions: {
length: {min: 123, max: 123},
width: {min: 123, max: 123},
height: {min: 123, max: 123},
weight: {min: 123, max: 123}
}
},
config: {collection_id: '<string>'},
max_things: 6
})
};
fetch('https://api.trychannel3.com/experimental/find-products-in-image', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request POST \
--url https://api.trychannel3.com/experimental/find-products-in-image \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"image_url": "<string>",
"base64_image": "<string>",
"limit": 10,
"filters": {
"brand_ids": [
"<string>"
],
"conditions": [],
"age": [],
"price": {
"min_price": 123,
"max_price": 123
},
"availability": [],
"sale": "on_sale",
"website_ids": [
"<string>"
],
"category_ids": [
"<string>"
],
"exclude_brand_ids": [
"<string>"
],
"exclude_website_ids": [
"<string>"
],
"exclude_category_ids": [
"<string>"
],
"colors": {
"palette": [
{
"hex": "<string>",
"percentage": 123
}
],
"match": "standard"
},
"attributes": {},
"dimensions": {
"length": {
"min": 123,
"max": 123
},
"width": {
"min": 123,
"max": 123
},
"height": {
"min": 123,
"max": 123
},
"weight": {
"min": 123,
"max": 123
}
}
},
"config": {
"collection_id": "<string>"
},
"max_things": 6
}
'{
"things": [
{
"thing": "<string>",
"bbox": [
123
],
"matches": [
{
"id": "<string>",
"title": "<string>",
"description": "<string>",
"brands": [
{
"id": "<string>",
"name": "<string>"
}
],
"images": [],
"category": {
"slug": "<string>",
"title": "<string>",
"has_children": true,
"path": [
{
"slug": "<string>",
"title": "<string>"
}
]
},
"gender": "male",
"age": "newborn",
"materials": [
"<string>"
],
"key_features": [
"<string>"
],
"offers": [
{
"url": "<string>",
"domain": "<string>",
"price": {
"price": 123,
"currency": "<string>",
"compare_at_price": 123
},
"availability": "InStock",
"condition": "new",
"max_commission_rate": 0,
"dimensions": {
"length": {
"number": 123,
"unit": "mm"
},
"width": {
"number": 123,
"unit": "mm"
},
"height": {
"number": 123,
"unit": "mm"
},
"weight": {
"number": 123,
"unit": "mg"
}
}
}
],
"variants": {
"options": [
{
"name": "<string>",
"values": [
{
"label": "<string>",
"exists": true,
"available": "InStock",
"thumbnail_url": "<string>",
"product_id": "<string>"
}
]
}
],
"selected": [
{
"name": "<string>",
"label": "<string>"
}
]
},
"structured_attributes": {}
}
]
}
],
"image_size": [
123
]
}{
"detail": "Must provide exactly one of image_url or base64_image."
}{
"detail": "<string>"
}{
"detail": "You have used all of your free credits. Add a payment method to continue."
}{
"detail": "<string>"
}{
"detail": "<string>"
}Find products in an image
Name objects in a scene image, localize them, and search the catalog per crop.
Charges 1 credit for the call plus 1 credit per detected thing. filters
apply to every per-thing search. limit is per thing, not across the
whole response.
import requests
url = "https://api.trychannel3.com/experimental/find-products-in-image"
payload = {
"image_url": "<string>",
"base64_image": "<string>",
"limit": 10,
"filters": {
"brand_ids": ["<string>"],
"conditions": [],
"age": [],
"price": {
"min_price": 123,
"max_price": 123
},
"availability": [],
"sale": "on_sale",
"website_ids": ["<string>"],
"category_ids": ["<string>"],
"exclude_brand_ids": ["<string>"],
"exclude_website_ids": ["<string>"],
"exclude_category_ids": ["<string>"],
"colors": {
"palette": [
{
"hex": "<string>",
"percentage": 123
}
],
"match": "standard"
},
"attributes": {},
"dimensions": {
"length": {
"min": 123,
"max": 123
},
"width": {
"min": 123,
"max": 123
},
"height": {
"min": 123,
"max": 123
},
"weight": {
"min": 123,
"max": 123
}
}
},
"config": { "collection_id": "<string>" },
"max_things": 6
}
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({
image_url: '<string>',
base64_image: '<string>',
limit: 10,
filters: {
brand_ids: ['<string>'],
conditions: [],
age: [],
price: {min_price: 123, max_price: 123},
availability: [],
sale: 'on_sale',
website_ids: ['<string>'],
category_ids: ['<string>'],
exclude_brand_ids: ['<string>'],
exclude_website_ids: ['<string>'],
exclude_category_ids: ['<string>'],
colors: {palette: [{hex: '<string>', percentage: 123}], match: 'standard'},
attributes: {},
dimensions: {
length: {min: 123, max: 123},
width: {min: 123, max: 123},
height: {min: 123, max: 123},
weight: {min: 123, max: 123}
}
},
config: {collection_id: '<string>'},
max_things: 6
})
};
fetch('https://api.trychannel3.com/experimental/find-products-in-image', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request POST \
--url https://api.trychannel3.com/experimental/find-products-in-image \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"image_url": "<string>",
"base64_image": "<string>",
"limit": 10,
"filters": {
"brand_ids": [
"<string>"
],
"conditions": [],
"age": [],
"price": {
"min_price": 123,
"max_price": 123
},
"availability": [],
"sale": "on_sale",
"website_ids": [
"<string>"
],
"category_ids": [
"<string>"
],
"exclude_brand_ids": [
"<string>"
],
"exclude_website_ids": [
"<string>"
],
"exclude_category_ids": [
"<string>"
],
"colors": {
"palette": [
{
"hex": "<string>",
"percentage": 123
}
],
"match": "standard"
},
"attributes": {},
"dimensions": {
"length": {
"min": 123,
"max": 123
},
"width": {
"min": 123,
"max": 123
},
"height": {
"min": 123,
"max": 123
},
"weight": {
"min": 123,
"max": 123
}
}
},
"config": {
"collection_id": "<string>"
},
"max_things": 6
}
'{
"things": [
{
"thing": "<string>",
"bbox": [
123
],
"matches": [
{
"id": "<string>",
"title": "<string>",
"description": "<string>",
"brands": [
{
"id": "<string>",
"name": "<string>"
}
],
"images": [],
"category": {
"slug": "<string>",
"title": "<string>",
"has_children": true,
"path": [
{
"slug": "<string>",
"title": "<string>"
}
]
},
"gender": "male",
"age": "newborn",
"materials": [
"<string>"
],
"key_features": [
"<string>"
],
"offers": [
{
"url": "<string>",
"domain": "<string>",
"price": {
"price": 123,
"currency": "<string>",
"compare_at_price": 123
},
"availability": "InStock",
"condition": "new",
"max_commission_rate": 0,
"dimensions": {
"length": {
"number": 123,
"unit": "mm"
},
"width": {
"number": 123,
"unit": "mm"
},
"height": {
"number": 123,
"unit": "mm"
},
"weight": {
"number": 123,
"unit": "mg"
}
}
}
],
"variants": {
"options": [
{
"name": "<string>",
"values": [
{
"label": "<string>",
"exists": true,
"available": "InStock",
"thumbnail_url": "<string>",
"product_id": "<string>"
}
]
}
],
"selected": [
{
"name": "<string>",
"label": "<string>"
}
]
},
"structured_attributes": {}
}
]
}
],
"image_size": [
123
]
}{
"detail": "Must provide exactly one of image_url or base64_image."
}{
"detail": "<string>"
}{
"detail": "You have used all of your free credits. Add a payment method to continue."
}{
"detail": "<string>"
}{
"detail": "<string>"
}config.collection_id to search each detected thing inside a collection.Authorizations
Headers
Optional user identifier to attribute clicks and sales to a user in your system. Channel3 appends it to buy URLs in the response.
Body
Find purchasable products in a scene image, grouped by detected thing.
Publicly accessible URL of the image.
Base64 encoded image bytes (no data URI prefix).
Max catalog matches per detected thing.
1 <= x <= 30Applied identically to every per-thing catalog search.
Show child attributes
Show child attributes
Locale and optional collection scope.
Show child attributes
Show child attributes
Cap on named objects to detect and search.
1 <= x <= 6Was this page helpful?