Qualit.ly API
Date despre produse, imagini QC și metadate de pe Weidian, Taobao și 1688. Autentificare cu token Bearer, limite de rată generoase, planuri pe niveluri.
Primii pași
Toate cererile merg către https://backend.qualit.ly/api/v1. Trei pași:
- 1
Obține o cheie
Autentifică-te și creează o cheie API din panoul pentru dezvoltatori.
- 2
Fă o cerere
Trimite-ți cheia ca token Bearer în antetul Authorization.
- 3
Obține date
Primești răspunsuri JSON cu date despre produse și imagini QC.
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/products/weidian/7231368393Autentificare
Include o cheie API validă în antetul Authorization folosind schema Bearer.
Authorization: Bearer qc_live_xxxxxxxxxxxxxxxxxxxxxxxxFormatul cheii
Cheile urmează formatul qc_{mode}_{random}, unde mode este live sau test, iar random reprezintă 32 de caractere aleatorii criptografic.
Cheile sunt afișate o singură dată, la creare. Stocăm doar hash-ul SHA-256, așa că cheile pierdute nu pot fi recuperate — revocă-o și generează una nouă.
Listă de permisiuni IP
Opțional, poți restricționa cheile la anumite IP-uri sau intervale CIDR din panoul pentru dezvoltatori. Cererile de la IP-uri nelistate primesc un 403. O listă de permisiuni goală permite toate IP-urile.
Limite de rată
Două praguri: pe minut și pe lună. Nivelul contului tău este citit la fiecare cerere — upgrade-urile intră în vigoare imediat — iar limitele se aplică tuturor cheilor tale.
/me și /usage se autentifică, dar nu sunt contorizate: a întreba unde te afli nu îți consumă cota despre care întrebi.
Anteturi
Trimise la fiecare răspuns, nu doar la respingeri.
Când ești limitat de rată
API-ul returnează 429 — RATE_LIMITED pentru vârful de pe minut, QUOTA_EXCEEDED pentru cota lunară — cu numărul de secunde de așteptare în retry_after.
{
"error": {
"code": "RATE_LIMITED",
"message": "Per-minute rate limit exceeded",
"retry_after": 37
}
}Erori
Erorile returnează un status non-2xx și un obiect error de nivel superior, cu un code stabil și un message. Potrivește după cod, nu după mesaj — mesajele se pot schimba.
{
"error": {
"code": "NOT_FOUND",
"message": "Product not found"
}
}Endpoint-uri
Căile de mai jos sunt relative la https://backend.qualit.ly/api/v1. Magazinele sunt weidian, taobao și 1688. Endpoint-urile fără etichetă funcționează pe orice plan.
Obține produs
/products/{storefront}/{listing_id}Un singur produs, după magazin și ID. Returnează metadatele lui și până la 5 miniaturi de previzualizare QC. Acesta este endpoint-ul de la care pornesc majoritatea integrărilor.
Exemplu
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/products/weidian/7231368393Răspuns
{
"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"
]
}
}Caută produse
/products/searchCaută în catalog după numele produsului — se potrivește și URL-ul produsului. Nu există paginare: fiecare plan returnează până la un număr fix de rezultate.
Fără paginare. Fiecare plan returnează până la un număr fix de rezultate per căutare; limit poate cere mai puține, niciodată mai multe.
Exemplu
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"Răspuns
{
"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"]
}
]
}Câmpuri
Produse în lot
Pro+/products/batchRezolvă până la 100 de produse într-un singur apel. Fiecare element este rezolvat independent, așa că un produs lipsă nu face lotul să eșueze — revine ca o intrare de eroare, pe aceeași poziție.
Corpul cererii
{
"items": [
{ "storefront": "weidian", "listing_id": "7231368393" },
{ "storefront": "taobao", "listing_id": "123456789" }
]
}Exemplu
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/batchRăspuns
{
"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" } }
]
}Produs aleatoriu
/products/randomUn produs aleatoriu care are fotografii QC — pentru vitrine, fluxuri sau eșantionarea catalogului. Nu necesită corp de cerere.
Exemplu
curl -X POST \
-H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/products/randomRăspuns
{
"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"]
}
}Metadate QC
/qc/{storefront}/{listing_id}Numărul de fotografii QC pentru un produs, plus primele trei miniaturi — fără să extragă lista completă de imagini.
Exemplu
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/qc/weidian/7231368393Răspuns
{
"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"
]
}
}Imagini QC
Pro+/qc/{id}/imagesFiecare fotografie QC indexată pentru un produs. Acceptă ID-ul numeric al produsului sau parametrul ?url= cu orice link de produs acceptat, iar API-ul îl rezolvă.
După ID de produs
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/qc/482910/imagesDupă 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"Răspuns
{
"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"
]
}
}Parametrul ?url= acceptă linkuri de produs de pe Weidian, Taobao și 1688, precum și de la orice agent acceptat de convertorul de linkuri. Imaginile sunt întotdeauna URL-uri CDN.
Informații cont
/meContul tău, cheia care a făcut cererea și nivelul la care se rezolvă. Util ca verificare de funcționare.
Exemplu
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/meRăspuns
{
"user": { "id": 12345, "username": "you" },
"key": { "id": 7, "mode": "live" },
"tier": "pro_plus"
}Utilizare
/usageUnde te afli în cele două praguri de limită de rată, cu marcaje de timp de resetare. La fel ca /me, acest endpoint se autentifică, dar nu este contorizat — a întreba despre cota ta nu o consumă.
Exemplu
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/usageRăspuns
{
"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
}
}Câmpuri
Exemple de cod
curl -H "Authorization: Bearer $QUALITLY_KEY" \
"https://backend.qualit.ly/api/v1/products/search?q=jordan+1&storefront=weidian"Server MCP
Același API este oferit ca server Model Context Protocol găzduit, așa că Claude, Cursor, VS Code sau orice client MCP poate interoga produse și seturi QC fără să scrie cod HTTP. Cheia ta API, limitele de rată și regulile de nivel rămân neschimbate.
URL server
https://backend.qualit.ly/api/mcpTransport
StreamableHTTP (POST)
Autentificare
Authorization: Bearer qc_live_…
Instrumente
Sunt înregistrate doar instrumentele pe care nivelul tău le poate apela, așa că o cheie Basic nu vede niciodată unul care i-ar fi refuzat.
Claude Desktop, Cursor și VS Code
Adaugă serverul în claude_desktop_config.json (Claude → Setări → Dezvoltator), sau în setările MCP ale editorului tău.
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"
}
}
}
}
}Clienții care acceptă descoperirea OAuth — printre care Claude.ai și ChatGPT — pot renunța complet la cheia codificată în cod: o cerere neautentificată primește ca răspuns un antet WWW-Authenticate care indică metadatele OAuth ale serverului, iar clientul îi ghidează pe utilizatorii tăi printr-o pagină de autentificare.
Verifică că funcționează
# 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":{}}'Planuri și niveluri
Nivelul tău este determinat din contul tău la fiecare cerere, așa că un upgrade se aplică de la următorul apel — fără să ai nevoie de o cheie nouă. Căutările în lot, listele complete de imagini QC și extragerea prin ?url= sunt singurele endpoint-uri restricționate peste Basic; tot restul diferă doar prin volum.
| Plan | / minut | / lună | Rezultate căutare | Loturi + imagini |
|---|---|---|---|---|
| Basic | 30 | 1,000 | 5 | |
| Early Adoptervechi | 40 | 3,000 | 10 | |
| Pro | 300 | 25,000 | 50 | |
| Pro+ | 1,000 | 500,000 | 100 | |
| Custom | Nelimitat | Nelimitat | 250 |
Early Adopter este un plan vechi — păstrat de conturile existente, dar nu se mai vinde. Ai nevoie de mai mult decât Pro+? [email protected] configurează limite Custom.