The official Python SDK for Channel3 AI Shopping API
Project description
Channel3 Python SDK
The official Python SDK for the Channel3 AI Shopping API.
Installation
pip install channel3-sdk
Quick Start
Synchronous Client
import os
from channel3_sdk import Channel3Client
# Initialize the client
client = Channel3Client(api_key="your_api_key_here")
# Or use environment variable: CHANNEL3_API_KEY
# Search for products
products = client.search(query="blue denim jacket")
for product in products:
print(f"Product: {product.title}")
print(f"Brand: {product.brand_name}")
print(f"Price: {product.price.currency} {product.price.price}")
print(f"Availability: {product.availability}")
print("---")
# Get detailed product information
product_detail = client.get_product("prod_123456")
print(f"Detailed info for: {product_detail.title}")
print(f"Brand: {product_detail.brand_name}")
if product_detail.key_features:
print(f"Key features: {product_detail.key_features}")
# Get all brands
brands = client.get_brands()
for brand in brands:
print(f"Brand: {brand.name}")
if brand.description:
print(f"Description: {brand.description}")
# Get specific brand details
brand = client.get_brand("brand_123")
print(f"Brand: {brand.name}")
Asynchronous Client
import asyncio
from channel3_sdk import AsyncChannel3Client
async def main():
# Initialize the async client
client = AsyncChannel3Client(api_key="your_api_key_here")
# Search for products
products = await client.search(query="running shoes")
for product in products:
print(f"Product: {product.title}")
print(f"Score: {product.score}")
print(f"Price: {product.price.currency} {product.price.price}")
# Get detailed product information
if products:
product_detail = await client.get_product(products[0].id)
print(f"Availability: {product_detail.availability}")
# Get brands
brands = await client.get_brands()
print(f"Found {len(brands)} brands")
# Run the async function
asyncio.run(main())
Advanced Usage
Visual Search
# Search by image URL
products = client.search(image_url="https://example.com/image.jpg")
# Search by base64 image
with open("image.jpg", "rb") as f:
import base64
base64_image = base64.b64encode(f.read()).decode()
products = client.search(base64_image=base64_image)
Multimodal Search
# Combine text and image search
products = client.search(
query="blue denim jacket",
image_url="https://example.com/jacket.jpg"
)
Search with Filters
from channel3_sdk import SearchFilters, AvailabilityStatus
# Create search filters
filters = SearchFilters(
brand_ids=["brand_123", "brand_456"],
gender="male",
availability=[AvailabilityStatus.IN_STOCK],
price={"min_price": 50.0, "max_price": 200.0}
)
# Search with filters
products = client.search(
query="jacket",
filters=filters,
limit=10
)
Brand Management
# Get all brands with pagination
brands = client.get_brands(page=1, size=50)
# Search for specific brands
nike_brands = client.get_brands(query="nike")
# Get detailed brand information
brand_detail = client.get_brand("brand_123")
print(f"Brand: {brand_detail.name}")
print(f"Logo: {brand_detail.logo_url}")
API Reference
Client Classes
Channel3Client
Synchronous client for the Channel3 API.
Methods:
search(query=None, image_url=None, base64_image=None, filters=None, limit=20)→List[Product]get_product(product_id)→ProductDetailget_brands(query=None, page=1, size=100)→List[Brand]get_brand(brand_id)→Brand
AsyncChannel3Client
Asynchronous client for the Channel3 API.
Methods:
async search(query=None, image_url=None, base64_image=None, filters=None, limit=20)→List[Product]async get_product(product_id)→ProductDetailasync get_brands(query=None, page=1, size=100)→List[Brand]async get_brand(brand_id)→Brand
Models
Product
id: str- Unique product identifierscore: float- Search relevance scoretitle: str- Product titledescription: Optional[str]- Product descriptionbrand_name: str- Brand nameimage_url: str- Main product image URLprice: Price- Price informationavailability: AvailabilityStatus- Availability statusvariants: List[Variant]- Product variants
ProductDetail
title: str- Product titledescription: Optional[str]- Product descriptionbrand_id: Optional[str]- Brand identifierbrand_name: Optional[str]- Brand nameimage_urls: Optional[List[str]]- Product image URLsprice: Price- Price informationavailability: AvailabilityStatus- Availability statuskey_features: Optional[List[str]]- Key product featuresvariants: List[Variant]- Product variants
Brand
id: str- Unique brand identifiername: str- Brand namelogo_url: Optional[str]- Brand logo URLdescription: Optional[str]- Brand description
Variant
product_id: str- Associated product identifiertitle: str- Variant titleimage_url: str- Variant image URL
SearchFilters
brand_ids: Optional[List[str]]- Brand ID filtersgender: Optional[Literal["male", "female", "unisex"]]- Gender filterprice: Optional[SearchFilterPrice]- Price range filteravailability: Optional[List[AvailabilityStatus]]- Availability filters
SearchFilterPrice
min_price: Optional[float]- Minimum pricemax_price: Optional[float]- Maximum price
Price
price: float- Current pricecompare_at_price: Optional[float]- Original price (if discounted)currency: str- Currency code
AvailabilityStatus
Enum with values: IN_STOCK, OUT_OF_STOCK, PRE_ORDER, LIMITED_AVAILABILITY, BACK_ORDER, DISCONTINUED, SOLD_OUT, UNKNOWN
Error Handling
The SDK provides specific exception types for different error conditions:
from channel3_sdk import (
Channel3AuthenticationError,
Channel3ValidationError,
Channel3NotFoundError,
Channel3ServerError,
Channel3ConnectionError
)
try:
products = client.search(query="shoes")
except Channel3AuthenticationError:
print("Invalid API key")
except Channel3ValidationError as e:
print(f"Invalid request: {e.message}")
except Channel3NotFoundError:
print("Resource not found")
except Channel3ServerError:
print("Server error - please try again later")
except Channel3ConnectionError:
print("Connection error - check your internet connection")
Environment Variables
CHANNEL3_API_KEY- Your Channel3 API key
Requirements
- Python 3.8+
- requests
- aiohttp
- pydantic
License
MIT License
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file channel3_sdk-0.2.1.tar.gz.
File metadata
- Download URL: channel3_sdk-0.2.1.tar.gz
- Upload date:
- Size: 8.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.5 CPython/3.13.0 Darwin/24.3.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1e09f2de7f978d113675219196ccad8dfcf880dfeeaa28d91780151e049605af
|
|
| MD5 |
820acc7f7ef4b9bdb813f0cab0ce69c8
|
|
| BLAKE2b-256 |
b509490439c9fc392606b85eac314e3a0ddb16f62fe69dbf937d8d2d4a4f80f2
|
File details
Details for the file channel3_sdk-0.2.1-py3-none-any.whl.
File metadata
- Download URL: channel3_sdk-0.2.1-py3-none-any.whl
- Upload date:
- Size: 8.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.5 CPython/3.13.0 Darwin/24.3.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6178ba1e051ead03d07a847908f45809fe50970a2654936bf849c00329b3005e
|
|
| MD5 |
3008b7f4b74f56a46b11ff6427f662a5
|
|
| BLAKE2b-256 |
0e121d1c519c4ba71a12d163d2b19a7e22a75269d91d627c57afaa6bcd924479
|