Referință API
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:
Obține o cheie
Autentifică-te și creează o cheie API din panoul pentru dezvoltatori.
Fă o cerere
Trimite-ți cheia ca token Bearer în antetul Authorization.
Obține date
Primești răspunsuri JSON cu date despre produse și imagini QC.
Exemplu rapid
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/products/weidian/1234567890Autentificare
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.
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ă. Limitele sunt legate de nivelul contului tău și se aplică tuturor cheilor.
Când ești limitat de rată
API-ul returnează 429 cu antetul Retry-After.
{
"error": {
"code": "RATE_LIMITED",
"message": "Per-minute limit exceeded",
"retry_after": 12
}
}Erori
Toate erorile returnează un obiect error de nivel superior, cu code și message.
{
"error": {
"code": "NOT_FOUND",
"message": "Product not found"
}
}BAD_REQUESTCorp sau parametri de cerere nevalizi.INVALID_KEYCheie API lipsă, malformată sau necunoscută.REVOKED_KEYCheia API a fost revocată în panou.IP_NOT_AUTHORIZEDIP-ul cererii nu se află în lista de permisiuni a cheii.FORBIDDENNivelul tău nu are acces la acest endpoint.NOT_FOUNDResursa solicitată nu există.RATE_LIMITEDLimita pe minut a fost depășită, verifică Retry-After.QUOTA_EXCEEDEDCota lunară a fost epuizată; se resetează la trecerea în luna următoare, ora UTC.INTERNALEroare de server. Reîncearcă sau contactează asistența.Endpoint-uri
Bază: https://backend.qualit.ly/api/v1. Magazine: weidian, taobao, 1688.
/products/:storefront/:listingIdBasicCaută un singur produs după magazin și ID de anunț. Returnează metadate și până la 5 miniaturi de previzualizare QC.
Parametri
storefrontobligatoriuUnul dintre: weidian, taobao, 1688
listingIdobligatoriuID-ul anunțului produsului din magazin
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/...",
"product_url": "https://weidian.com/item.html?itemID=7231368393",
"qc_count": 12,
"qc_preview": [
"https://cdn.qualit.ly/qc/...",
"https://cdn.qualit.ly/qc/..."
]
}
}/products/searchBasicCaută în catalog după numele produsului (potrivește și URL-ul produsului). Opțional, filtrează după un magazin sau după produse care au fotografii QC. Fără paginare — numărul de rezultate este limitat de planul tău.
Parametri de interogare
qobligatoriuText de căutare. Mai multe cuvinte sunt potrivite cu AND față de numele și URL-ul produsului. (obligatoriu)
storefrontOpțional. Limitează rezultatele la unul dintre: weidian, taobao, 1688
has_qcOpțional. Setează la true ca să returnezi doar produse care au fotografii QC
limitOpțional. Mai puține rezultate decât plafonul planului tău. Valorile peste plafon sunt reduse — niciodată mărite.
Limite de rezultate
Fără paginare. Fiecare plan returnează până la un număr fix de rezultate per căutare. Trimite o limită mai mică ca să obții mai puține; nu poți depăși plafonul planului tău.
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/...",
"product_url": "https://weidian.com/item.html?itemID=7231368393",
"qc_count": 12,
"qc_preview": ["https://cdn.qualit.ly/qc/..."]
}
]
}/products/batchPro+Caută mai multe produse într-o singură cerere (până la 100). Fiecare rezultat este independent, așa că un produs lipsă nu va face lotul să eșueze.
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",
"qc_count": 12,
"qc_preview": ["..."]
}
},
{ "error": { "code": "NOT_FOUND" } }
]
}/qc/:storefront/:listingIdBasicObține metadate QC și primele 3 URL-uri de imagini miniatură pentru un produs.
Exemplu
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/qc/weidian/7231368393{
"data": {
"storefront": "weidian",
"listing_id": "7231368393",
"qc_count": 12,
"thumbnails": ["..."]
}
}/qc/:id/imagesPro+Lista completă de imagini QC. Acceptă un ID numeric de produs sau un parametru de interogare ?url= pentru căutări bazate pe URL.
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",
"qc_count": 12,
"images": [
"https://cdn.qualit.ly/qc/img1.jpg",
"https://cdn.qualit.ly/qc/img2.jpg",
"..."
]
}
}?url= acceptă URL-uri complete de produs de pe Weidian, Taobao, 1688 și agenții acceptați./meBasicReturnează informațiile contului tău, cheia folosită pentru cerere și nivelul tău actual.
Exemplu
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/me{
"user": { "id": 12345, "username": "you" },
"key": { "id": 1, "mode": "live" },
"tier": "basic"
}/usageBasicVerifică-ți utilizarea actuală a limitei de rată și a cotei. Returnează contoare pe minut și pe lună, cu marcaje de timp de resetare. Apelul în sine consumă o cerere din ambele contoare.
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-04-17T18:42:00.000Z"
},
"month": {
"limit": 500000,
"used": 1843,
"remaining": 498157,
"reset_in_seconds": 1159200,
"reset_at": "2026-05-01T00:00:00.000Z",
"bucket": 202604
}
}Câmpuri
tierUnul dintre: basic, early_adopter, pro, pro_plus, custom
limit / remainingnull pe nivelul custom (nelimitat)
usedCereri numărate în fereastra curentă. Contorul pe minut se resetează la fiecare 60 s; contorul lunar se resetează la trecerea în luna următoare, ora UTC.
reset_atMarcaj de timp ISO 8601 UTC
bucketCheie internă YYYYMM pentru contorul lunar
Erori
La fel ca celelalte rute /api/v1/*:401 INVALID_KEY /REVOKED_KEY,403 IP_NOT_AUTHORIZED,429 RATE_LIMITED /QUOTA_EXCEEDED.
Exemple de cod
Fragmente de start rapid în limbaje populare.
const res = await fetch(
'https://backend.qualit.ly/api/v1/products/weidian/7231368393',
{ headers: { Authorization: 'Bearer ' + process.env.QUALITLY_KEY } }
);
const { data } = await res.json();
console.log(data.name, data.qc_count, 'QC images');Server MCP
API-ul Qualit.ly este disponibil ca server Model Context Protocol (MCP). Conectează-l la Claude Desktop, Cursor, VS Code sau orice client compatibil MCP și interoghează produse, imagini QC și date de utilizare direct din asistentul tău AI, fără HTTP manual. Se aplică aceeași cheie API, aceleași limite de rată și reguli de nivel.
URL server
https://backend.qualit.ly/api/mcpTransport
StreamableHTTP (POST)
Autentificare
Authorization: Bearer qc_live_…
Instrumente disponibile
get_productsearch_productsget_products_batchget_qcget_qc_imagesget_meget_usagehttps://backend.qualit.ly/.well-known/oauth-authorization-server.Claude Desktop (cheie codificată în cod)
Adaugă asta în claude_desktop_config.json (Claude → Setări → Dezvoltator):
{
"mcpServers": {
"qualitly": {
"url": "https://backend.qualit.ly/api/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}Cursor / VS Code (cheie codificată în cod)
{
"mcp": {
"servers": {
"qualitly": {
"url": "https://backend.qualit.ly/api/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
}Verificare rapidă
# List available tools
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 la fiecare cerere, așa că upgrade-urile intră în vigoare imediat. Endpoint-urile pentru loturi și imagini complete necesită Pro+.
Ai nevoie de limite mai mari? [email protected]
Vezi planurile complete, prețurile și avantajele