はじめに
すべてのリクエストは https://backend.qualit.ly/api/v1 に送信します。3 つのステップ:
- 1
キーを取得
サインインして、開発者ダッシュボードから API キーを作成します。
- 2
リクエストを送信
キーを Bearer トークンとして Authorization ヘッダーに含めて送信します。
- 3
データを取得
商品データと QC 画像を含む JSON レスポンスを受け取ります。
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/products/weidian/7231368393認証
有効な API キーを Authorization ヘッダーに Bearer スキームで含めます。
Authorization: Bearer qc_live_xxxxxxxxxxxxxxxxxxxxxxxxキーの形式
キーは qc_{mode}_{random} の形式です。mode は live または test、random は暗号学的にランダムな 32 文字です。
キーは作成時に一度だけ表示されます。保存するのは SHA-256 ハッシュのみのため、紛失したキーは復元できません — 失効して新しく作成してください。
IP 許可リスト
開発者ダッシュボードから、キーを特定の IP または CIDR 範囲に制限できます(任意)。許可リスト外の IP からのリクエストには 403 が返されます。許可リストが空の場合、すべての IP が許可されます。
レート制限
2 つのバケットがあります: 毎分と毎月。段階はリクエストごとにアカウントから判定されるため、アップグレードは即座に反映されます。また、制限はあなたのすべてのキーに共通で適用されます。
/me と /usage は認証は必要ですが計測対象外です: 自分の状況を確認しても、そのクォータ自体は消費されません。
ヘッダー
拒否されたレスポンスだけでなく、すべてのレスポンスに付与されます。
レート制限に達したとき
API は 429 を返します — 毎分のバーストには RATE_LIMITED、毎月のクォータには QUOTA_EXCEEDED — 待機すべき秒数は retry_after に入っています。
{
"error": {
"code": "RATE_LIMITED",
"message": "Per-minute rate limit exceeded",
"retry_after": 37
}
}エラー
エラーは 2xx 以外のステータスと、トップレベルの error オブジェクトを、安定した code と message 付きで返します。判定には message ではなく code を使ってください — message は変更されることがあります。
{
"error": {
"code": "NOT_FOUND",
"message": "Product not found"
}
}エンドポイント
以下のパスはすべて https://backend.qualit.ly/api/v1 からの相対パスです。ストアは weidian、taobao、1688 です。チップが付いていないエンドポイントはすべてのプランで利用できます。
商品取得
/products/{storefront}/{listing_id}ストアと ID で単一の商品を取得します。メタデータと最大 5 枚の QC プレビューサムネイルを返します。ほとんどの連携がまずこのエンドポイントから始めます。
例
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/products/weidian/7231368393レスポンス
{
"data": {
"id": 482910,
"storefront": "weidian",
"listing_id": "7231368393",
"name": "AJ1 Retro High OG",
"price": "¥470.00",
"pic_url": "https://cdn.qualit.ly/covers/62743f38.jpg",
"pic_gif": null,
"product_url": "https://weidian.com/item.html?itemID=7231368393",
"qualitly_url": "https://qualit.ly/weidian/7231368393?utm_source=api&utm_content=key_7",
"qc_count": 12,
"qc_preview": [
"https://cdn.qualit.ly/qc/91c614ef.jpg",
"https://cdn.qualit.ly/qc/b66b2442.jpg"
]
}
}商品検索
/products/search商品名でカタログを検索します — 商品 URL も照合対象です。ページネーションはなく、各プランは決まった件数までの結果を返します。
ページネーションはありません。各プランは 1 回の検索につき決まった件数までの結果を返します。limit で件数を減らすことはできますが、増やすことはできません。
例
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
"https://backend.qualit.ly/api/v1/products/search?q=jordan+1&storefront=weidian&has_qc=true&limit=10"レスポンス
{
"query": "jordan 1",
"count": 10,
"limit": 10,
"max_results": 100,
"data": [
{
"id": 482910,
"storefront": "weidian",
"listing_id": "7231368393",
"name": "AJ1 Retro High OG",
"price": "¥470.00",
"pic_url": "https://cdn.qualit.ly/covers/62743f38.jpg",
"product_url": "https://weidian.com/item.html?itemID=7231368393",
"qualitly_url": "https://qualit.ly/weidian/7231368393?utm_source=api&utm_content=key_7",
"qc_count": 12,
"qc_preview": ["https://cdn.qualit.ly/qc/91c614ef.jpg"]
}
]
}フィールド
商品の一括取得
Pro+/products/batch1 回の呼び出しで最大 100 件の商品をまとめて取得します。各項目は独立して処理されるため、商品が見つからなくてもバッチ全体は失敗せず、同じ位置にエラーとして返ります。
リクエストボディ
{
"items": [
{ "storefront": "weidian", "listing_id": "7231368393" },
{ "storefront": "taobao", "listing_id": "123456789" }
]
}例
curl -X POST \
-H "Authorization: Bearer qc_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"items":[{"storefront":"weidian","listing_id":"7231368393"}]}' \
https://backend.qualit.ly/api/v1/products/batchレスポンス
{
"results": [
{
"data": {
"id": 482910,
"storefront": "weidian",
"listing_id": "7231368393",
"name": "AJ1 Retro High OG",
"price": "¥470.00",
"qualitly_url": "https://qualit.ly/weidian/7231368393?utm_source=api&utm_content=key_7",
"qc_count": 12,
"qc_preview": ["https://cdn.qualit.ly/qc/91c614ef.jpg"]
}
},
{ "error": { "code": "NOT_FOUND" } }
]
}ランダム商品
/products/randomQC 写真がある商品をランダムに 1 件取得します。ショーケースやフィード、カタログのサンプリングに便利です。リクエストボディは不要です。
例
curl -X POST \
-H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/products/randomレスポンス
{
"data": {
"id": 482910,
"storefront": "weidian",
"listing_id": "7231368393",
"name": "AJ1 Retro High OG",
"price": "¥470.00",
"pic_url": "https://cdn.qualit.ly/covers/62743f38.jpg",
"product_url": "https://weidian.com/item.html?itemID=7231368393",
"qualitly_url": "https://qualit.ly/weidian/7231368393?utm_source=api&utm_content=key_7",
"qc_count": 12,
"qc_preview": ["https://cdn.qualit.ly/qc/91c614ef.jpg"]
}
}QC メタデータ
/qc/{storefront}/{listing_id}商品の QC 写真枚数と、最初の 3 枚のサムネイルを返します — 画像リスト全体を取得せずに済みます。
例
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/qc/weidian/7231368393レスポンス
{
"data": {
"storefront": "weidian",
"listing_id": "7231368393",
"qualitly_url": "https://qualit.ly/weidian/7231368393?utm_source=api&utm_content=key_7",
"qc_count": 12,
"thumbnails": [
"https://cdn.qualit.ly/qc/91c614ef.jpg",
"https://cdn.qualit.ly/qc/b66b2442.jpg",
"https://cdn.qualit.ly/qc/0f19ab77.jpg"
]
}
}QC 画像
Pro+/qc/{id}/images商品のインデックス済み QC 写真をすべて返します。数値の商品 ID を指定するか、対応する商品リンクを ?url= で渡して API に解決させることもできます。
商品 ID で
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/qc/482910/imagesURL で
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
"https://backend.qualit.ly/api/v1/qc/0/images?url=https://weidian.com/item.html?itemID=7231368393"レスポンス
{
"data": {
"id": 482910,
"storefront": "weidian",
"listing_id": "7231368393",
"qualitly_url": "https://qualit.ly/weidian/7231368393?utm_source=api&utm_content=key_7",
"qc_count": 12,
"images": [
"https://cdn.qualit.ly/qc/91c614ef.jpg",
"https://cdn.qualit.ly/qc/b66b2442.jpg"
]
}
}?url= パラメーターは、Weidian、Taobao、1688、およびリンクコンバーターが対応するすべてのエージェントの商品リンクを受け付けます。画像は常に CDN の URL です。
アカウント情報
/meアカウント情報、リクエストに使用したキー、そのキーが解決される段階を返します。ヘルスチェックにも便利です。
例
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/meレスポンス
{
"user": { "id": 12345, "username": "you" },
"key": { "id": 7, "mode": "live" },
"tier": "pro_plus"
}使用状況
/usage毎分・毎月両方のレート制限バケットにおける現在位置を、リセット時刻とともに返します。/me と同様、このエンドポイントは認証は必要ですが計測対象外です — クォータについて尋ねても、そのクォータは消費されません。
例
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/usageレスポンス
{
"tier": "pro_plus",
"key": { "id": 7, "mode": "live" },
"minute": {
"limit": 1000,
"used": 12,
"remaining": 988,
"reset_in_seconds": 37,
"reset_at": "2026-08-20T18:42:00.000Z"
},
"month": {
"limit": 500000,
"used": 1843,
"remaining": 498157,
"reset_in_seconds": 1159200,
"reset_at": "2026-09-01T00:00:00.000Z",
"bucket": 202608
}
}フィールド
コードサンプル
curl -H "Authorization: Bearer $QUALITLY_KEY" \
"https://backend.qualit.ly/api/v1/products/search?q=jordan+1&storefront=weidian"MCP サーバー
同じ API が、ホスト型の Model Context Protocol(MCP)サーバーとしても提供されているので、Claude、Cursor、VS Code など、任意の MCP クライアントから HTTP を書かずに商品や QC セットを照会できます。API キー、レート制限、段階のルールはそのまま引き継がれます。
サーバー URL
https://backend.qualit.ly/api/mcpトランスポート
StreamableHTTP (POST)
認証
Authorization: Bearer qc_live_…
ツール
登録されるのは、あなたの段階で呼び出せるツールだけです。そのため Basic のキーには、拒否されるはずのツールは表示されません。
Claude Desktop、Cursor、VS Code
claude_desktop_config.json(Claude → 設定 → 開発者)か、エディタの MCP 設定に、このサーバーを追加します。
Claude Desktop
{
"mcpServers": {
"qualitly": {
"url": "https://backend.qualit.ly/api/mcp",
"headers": {
"Authorization": "Bearer qc_live_YOUR_KEY"
}
}
}
}Cursor / VS Code
{
"mcp": {
"servers": {
"qualitly": {
"url": "https://backend.qualit.ly/api/mcp",
"headers": {
"Authorization": "Bearer qc_live_YOUR_KEY"
}
}
}
}
}OAuth ディスカバリーに対応したクライアント — Claude.ai や ChatGPT など — は、ハードコードしたキーをまったく使わずに済みます。未認証のリクエストには、サーバーの OAuth メタデータを指す WWW-Authenticate ヘッダーが返り、クライアントはそれを使ってユーザーをログインページへ誘導します。
動作確認
# List the tools your key can see
curl -X POST https://backend.qualit.ly/api/mcp \
-H "Authorization: Bearer qc_live_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'プランと段階
段階はリクエストごとにアカウントから判定されるため、アップグレードは次の呼び出しから即座に反映されます — 新しいキーは不要です。Basic より上の段階が必要なのは、バッチ検索・フル QC 画像リスト・?url= 抽出だけで、それ以外はすべて利用量の違いにすぎません。
| プラン | / 分 | / 月 | 検索結果 | バッチ + 画像 |
|---|---|---|---|---|
| Basic | 30 | 1,000 | 5 | |
| Early Adopterレガシー | 40 | 3,000 | 10 | |
| Pro | 300 | 25,000 | 50 | |
| Pro+ | 1,000 | 500,000 | 100 | |
| カスタム | 無制限 | 無制限 | 250 |
Early Adopter はレガシープランです — 既存アカウントのみが保有しており、新規販売はしていません。Pro+ 以上が必要な場合は、[email protected] が Custom の上限を設定します。