Qualit.ly API
Dati dei prodotti, immagini QC e metadati da Weidian, Taobao e 1688. Autenticazione con bearer token, limiti di frequenza generosi, piani a livelli.
Per iniziare
Tutte le richieste vanno a https://backend.qualit.ly/api/v1. Tre passaggi:
- 1
Ottieni una chiave
Accedi e crea una chiave API dalla dashboard per sviluppatori.
- 2
Effettua una richiesta
Invia la tua chiave come bearer token nell'header Authorization.
- 3
Ottieni i dati
Ricevi risposte JSON con dati dei prodotti e immagini QC.
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/products/weidian/7231368393Autenticazione
Includi una chiave API valida nell'header Authorization usando lo schema Bearer.
Authorization: Bearer qc_live_xxxxxxxxxxxxxxxxxxxxxxxxFormato della chiave
Le chiavi seguono il formato qc_{mode}_{random}, dove mode è live o test e random è composto da 32 caratteri crittograficamente casuali.
Le chiavi vengono mostrate una sola volta alla creazione. Memorizziamo solo l'hash SHA-256, quindi le chiavi smarrite non possono essere recuperate — revocala e generane una nuova.
Allowlist degli IP
Facoltativamente, limita le chiavi a IP o intervalli CIDR specifici dalla dashboard per sviluppatori. Le richieste da IP non elencati ricevono un 403. Una allowlist vuota consente tutti gli IP.
Limiti di frequenza
Due bucket: al minuto e al mese. Il tuo livello viene letto dal tuo account a ogni richiesta — gli upgrade hanno effetto immediato — e i limiti si applicano a tutte le tue chiavi.
/me e /usage richiedono l'autenticazione ma non vengono conteggiati: chiedere a che punto sei non consuma la quota di cui stai chiedendo.
Header
Incluso in ogni risposta, non solo nei rifiuti.
Quando vieni limitato
L'API restituisce 429 — RATE_LIMITED per il picco al minuto, QUOTA_EXCEEDED per la quota mensile — con i secondi di attesa in retry_after.
{
"error": {
"code": "RATE_LIMITED",
"message": "Per-minute rate limit exceeded",
"retry_after": 37
}
}Errori
Gli errori restituiscono uno stato non-2xx e un oggetto error di primo livello con un code stabile e un message. Verifica il code, non il message — i messaggi possono cambiare.
{
"error": {
"code": "NOT_FOUND",
"message": "Product not found"
}
}Endpoint
I percorsi qui sotto sono relativi a https://backend.qualit.ly/api/v1. I negozi sono weidian, taobao e 1688. Gli endpoint senza badge funzionano con ogni piano.
Ottieni prodotto
/products/{storefront}/{listing_id}Una singola inserzione tramite negozio e ID. Restituisce i suoi metadati e fino a 5 anteprime QC. È l'endpoint da cui iniziano la maggior parte delle integrazioni.
Esempio
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/products/weidian/7231368393Risposta
{
"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"
]
}
}Cerca prodotti
/products/searchCerca nel catalogo per nome del prodotto — viene verificato anche l'URL del prodotto. Non c'è paginazione: ogni piano restituisce fino a un numero fisso di risultati.
Nessuna paginazione. Ogni piano restituisce fino a un numero fisso di risultati per ricerca; limit può chiederne di meno, mai di più.
Esempio
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"Risposta
{
"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"]
}
]
}Campi
Prodotti in blocco
Pro+/products/batchRisolvi fino a 100 inserzioni in un'unica chiamata. Ogni elemento viene risolto in modo indipendente, quindi un prodotto mancante non fa fallire l'intero blocco — torna come voce di errore nella stessa posizione.
Corpo della richiesta
{
"items": [
{ "storefront": "weidian", "listing_id": "7231368393" },
{ "storefront": "taobao", "listing_id": "123456789" }
]
}Esempio
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/batchRisposta
{
"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" } }
]
}Prodotto casuale
/products/randomUn'inserzione casuale con foto QC — utile per vetrine, feed o il campionamento del catalogo. Non serve alcun corpo della richiesta.
Esempio
curl -X POST \
-H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/products/randomRisposta
{
"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"]
}
}Metadati QC
/qc/{storefront}/{listing_id}Il numero di foto QC di un'inserzione, più le prime tre anteprime — senza scaricare l'elenco completo delle immagini.
Esempio
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/qc/weidian/7231368393Risposta
{
"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"
]
}
}Immagini QC
Pro+/qc/{id}/imagesTutte le foto QC indicizzate per un'inserzione. Richiede l'ID numerico del prodotto, oppure passa ?url= con qualsiasi link di prodotto supportato e lascia che sia l'API a risolverlo.
Per ID prodotto
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/qc/482910/imagesPer 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"Risposta
{
"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"
]
}
}Il parametro ?url= accetta link di prodotti da Weidian, Taobao e 1688, e da ogni agente supportato dal Link Converter. Le immagini sono sempre URL CDN.
Info account
/meIl tuo account, la chiave che ha effettuato questa richiesta e il livello a cui corrisponde. Utile come controllo di funzionamento.
Esempio
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/meRisposta
{
"user": { "id": 12345, "username": "you" },
"key": { "id": 7, "mode": "live" },
"tier": "pro_plus"
}Utilizzo
/usageA che punto sei in entrambi i bucket dei limiti di frequenza, con i timestamp di reset. Come /me, questo endpoint richiede autenticazione ma non viene conteggiato — chiedere informazioni sulla tua quota non la consuma.
Esempio
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/usageRisposta
{
"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
}
}Campi
Esempi di codice
curl -H "Authorization: Bearer $QUALITLY_KEY" \
"https://backend.qualit.ly/api/v1/products/search?q=jordan+1&storefront=weidian"Server MCP
La stessa API è disponibile come server Model Context Protocol ospitato, così Claude, Cursor, VS Code o qualsiasi client MCP possono interrogare inserzioni e set di foto QC senza scrivere HTTP. La tua chiave API, i limiti di frequenza e le regole di livello restano invariati.
URL del server
https://backend.qualit.ly/api/mcpTrasporto
StreamableHTTP (POST)
Autenticazione
Authorization: Bearer qc_live_…
Strumenti
Vengono registrati solo gli strumenti che il tuo livello può chiamare, quindi una chiave Basic non ne vede mai uno per cui verrebbe rifiutata.
Claude Desktop, Cursor e VS Code
Aggiungi il server a claude_desktop_config.json (Claude → Impostazioni → Sviluppatore), oppure alle impostazioni MCP del tuo editor.
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"
}
}
}
}
}I client che supportano la discovery OAuth — tra cui Claude.ai e ChatGPT — possono fare a meno della chiave hardcoded: una richiesta non autenticata riceve come risposta un header WWW-Authenticate che punta ai metadati OAuth del server, e il client guida i tuoi utenti attraverso una pagina di accesso al suo posto.
Verifica che funzioni
# 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":{}}'Piani e livelli
Il tuo livello viene risolto dal tuo account a ogni richiesta, quindi un upgrade si applica già alla chiamata successiva — non serve una nuova chiave. Le ricerche in blocco, gli elenchi completi delle immagini QC e l'estrazione tramite ?url= sono gli unici endpoint riservati oltre il livello Basic; tutto il resto cambia solo per volume.
| Piano | / minuto | / mese | Risultati di ricerca | Blocco + immagini |
|---|---|---|---|---|
| Basic | 30 | 1,000 | 5 | |
| Early AdopterLegacy | 40 | 3,000 | 10 | |
| Pro | 300 | 25,000 | 50 | |
| Pro+ | 1,000 | 500,000 | 100 | |
| Custom | Illimitato | Illimitato | 250 |
Early Adopter è un piano legacy — riservato agli account esistenti, non più in vendita. Ti serve più di Pro+? [email protected] imposta i limiti Custom.