Qualit.ly API
Dane produktów, obrazy QC i metadane z Weidian, Taobao i 1688. Uwierzytelnianie bearer tokenem, hojne limity, plany wielopoziomowe.
Pierwsze kroki
Wszystkie żądania trafiają do https://backend.qualit.ly/api/v1. Trzy kroki:
- 1
Uzyskaj klucz
Zaloguj się i utwórz klucz API w panelu dewelopera.
- 2
Wykonaj żądanie
Wyślij swój klucz jako bearer token w nagłówku Authorization.
- 3
Pobierz dane
Otrzymuj odpowiedzi JSON z danymi produktów i obrazami QC.
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/products/weidian/7231368393Uwierzytelnianie
Dołącz prawidłowy klucz API w nagłówku Authorization, używając schematu Bearer.
Authorization: Bearer qc_live_xxxxxxxxxxxxxxxxxxxxxxxxFormat klucza
Klucze mają postać qc_{mode}_{random}, gdzie mode to live lub test, a random to 32 kryptograficznie losowe znaki.
Klucze są pokazywane tylko raz przy tworzeniu. Przechowujemy jedynie hash SHA-256, więc zgubionych kluczy nie można odzyskać — unieważnij go i wygeneruj nowy.
Lista dozwolonych IP
Opcjonalnie ogranicz klucze do konkretnych IP lub zakresów CIDR w panelu dewelopera. Żądania z niewymienionych IP otrzymują 403. Pusta lista dozwolonych zezwala na wszystkie IP.
Limity częstotliwości
Dwa koszyki: na minutę i na miesiąc. Twój poziom jest odczytywany z konta przy każdym żądaniu — ulepszenia działają natychmiast — a limity obowiązują dla wszystkich twoich kluczy.
/me i /usage wymagają uwierzytelnienia, ale nie są liczone do limitu: sprawdzenie, na czym stoisz, nie zużywa limitu, o który pytasz.
Nagłówki
Wysyłane w każdej odpowiedzi, nie tylko przy odrzuceniach.
Gdy zostaniesz ograniczony
API zwraca 429 — RATE_LIMITED dla przekroczenia limitu na minutę, QUOTA_EXCEEDED dla miesięcznego limitu — z liczbą sekund do odczekania w retry_after.
{
"error": {
"code": "RATE_LIMITED",
"message": "Per-minute rate limit exceeded",
"retry_after": 37
}
}Błędy
Błędy zwracają status inny niż 2xx oraz obiekt error najwyższego poziomu ze stałym code i message. Dopasowuj po kodzie, nie po treści komunikatu — komunikaty mogą się zmieniać.
{
"error": {
"code": "NOT_FOUND",
"message": "Product not found"
}
}Endpointy
Poniższe ścieżki są względne wobec https://backend.qualit.ly/api/v1. Sklepy to weidian, taobao i 1688. Endpointy bez oznaczenia poziomu działają w każdym planie.
Pobierz produkt
/products/{storefront}/{listing_id}Pojedyncza oferta według sklepu i ID. Zwraca jej metadane oraz do 5 miniatur podglądu QC. To endpoint, od którego zaczyna większość integracji.
Przykład
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/products/weidian/7231368393Odpowiedź
{
"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"
]
}
}Szukaj produktów
/products/searchPrzeszukuj katalog po nazwie produktu — dopasowywany jest też adres URL produktu. Brak paginacji: każdy plan zwraca do ustalonej liczby wyników.
Brak paginacji. Każdy plan zwraca do ustalonej liczby wyników na wyszukiwanie; limit może poprosić o mniej, nigdy o więcej.
Przykład
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"Odpowiedź
{
"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"]
}
]
}Pola
Produkty zbiorczo
Pro+/products/batchRozwiąż do 100 ofert w jednym wywołaniu. Każdy element jest rozwiązywany niezależnie, więc brakujący produkt nie powoduje niepowodzenia całej partii — wraca jako wpis błędu na tej samej pozycji.
Ciało żądania
{
"items": [
{ "storefront": "weidian", "listing_id": "7231368393" },
{ "storefront": "taobao", "listing_id": "123456789" }
]
}Przykład
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/batchOdpowiedź
{
"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" } }
]
}Losowy produkt
/products/randomJedna losowa oferta ze zdjęciami QC — do prezentacji, kanałów lub próbkowania katalogu. Ciało żądania nie jest potrzebne.
Przykład
curl -X POST \
-H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/products/randomOdpowiedź
{
"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"]
}
}Metadane QC
/qc/{storefront}/{listing_id}Liczba zdjęć QC dla oferty, plus pierwsze trzy miniatury — bez pobierania pełnej listy obrazów.
Przykład
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/qc/weidian/7231368393Odpowiedź
{
"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"
]
}
}Obrazy QC
Pro+/qc/{id}/imagesKażde zindeksowane zdjęcie QC dla oferty. Przyjmuje numeryczne ID produktu albo parametr ?url= z dowolnym obsługiwanym linkiem do produktu — API rozwiąże go samodzielnie.
Według ID produktu
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/qc/482910/imagesWedług URL
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"Odpowiedź
{
"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"
]
}
}Parametr ?url= akceptuje linki do produktów z Weidian, Taobao i 1688 oraz od każdego agenta obsługiwanego przez konwerter linków. Obrazy to zawsze adresy URL CDN.
Informacje o koncie
/meTwoje konto, klucz użyty do żądania i poziom, do którego się rozwiązuje. Przydatne jako szybka kontrola stanu.
Przykład
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/meOdpowiedź
{
"user": { "id": 12345, "username": "you" },
"key": { "id": 7, "mode": "live" },
"tier": "pro_plus"
}Wykorzystanie
/usageTwój stan w obu koszykach limitów, ze znacznikami czasu resetu. Podobnie jak /me, ten endpoint wymaga uwierzytelnienia, ale nie jest liczony do limitu — sprawdzenie limitu go nie zużywa.
Przykład
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/usageOdpowiedź
{
"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
}
}Pola
Przykłady kodu
curl -H "Authorization: Bearer $QUALITLY_KEY" \
"https://backend.qualit.ly/api/v1/products/search?q=jordan+1&storefront=weidian"Serwer MCP
To samo API jest udostępniane jako hostowany serwer Model Context Protocol, dzięki czemu Claude, Cursor, VS Code lub dowolny klient MCP może odpytywać oferty i zestawy QC bez pisania HTTP. Twój klucz API, limity częstotliwości i zasady poziomów pozostają bez zmian.
URL serwera
https://backend.qualit.ly/api/mcpTransport
StreamableHTTP (POST)
Uwierzytelnianie
Authorization: Bearer qc_live_…
Narzędzia
Rejestrowane są tylko narzędzia dostępne dla twojego poziomu, więc klucz Basic nigdy nie widzi narzędzia, do którego i tak nie miałby dostępu.
Claude Desktop, Cursor i VS Code
Dodaj serwer do claude_desktop_config.json (Claude → Ustawienia → Deweloper) albo do ustawień MCP swojego edytora.
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"
}
}
}
}
}Klienci obsługujący automatyczne wykrywanie OAuth — w tym Claude.ai i ChatGPT — mogą całkowicie pominąć zakodowany na stałe klucz: nieuwierzytelnione żądanie otrzymuje w odpowiedzi nagłówek WWW-Authenticate wskazujący na metadane OAuth serwera, a klient prowadzi twoich użytkowników przez stronę logowania zamiast tego.
Sprawdź, czy działa
# 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":{}}'Plany i poziomy
Twój poziom jest ustalany na podstawie konta przy każdym żądaniu, więc ulepszenie planu obowiązuje już od następnego wywołania — bez potrzeby nowego klucza. Wyszukiwania zbiorcze, pełne listy obrazów QC i ekstrakcja przez ?url= to jedyne endpointy zablokowane powyżej planu Basic; wszystko inne różni się tylko wolumenem.
| Plan | / minutę | / miesiąc | Wyniki wyszukiwania | Zbiorczo + obrazy |
|---|---|---|---|---|
| Basic | 30 | 1,000 | 5 | |
| Early Adopterlegacy | 40 | 3,000 | 10 | |
| Pro | 300 | 25,000 | 50 | |
| Pro+ | 1,000 | 500,000 | 100 | |
| Custom | Bez limitu | Bez limitu | 250 |
Early Adopter to plan legacy — utrzymywany przez istniejące konta, nigdy niesprzedawany. Potrzebujesz więcej niż Pro+? [email protected] ustali limity Custom.