Qualit.ly API
Produktdata, QC-bilder och metadata från Weidian, Taobao och 1688. Bearer-token-autentisering, generösa hastighetsgränser, nivåbaserade planer.
Kom igång
Alla förfrågningar går till https://backend.qualit.ly/api/v1. Tre steg:
- 1
Skaffa en nyckel
Logga in och skapa en API-nyckel från utvecklarens kontrollpanel.
- 2
Gör en förfrågan
Skicka din nyckel som en Bearer-token i Authorization-headern.
- 3
Hämta data
Ta emot JSON-svar med produktdata och QC-bilder.
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/products/weidian/7231368393Autentisering
Inkludera en giltig API-nyckel i Authorization-headern med Bearer-schemat.
Authorization: Bearer qc_live_xxxxxxxxxxxxxxxxxxxxxxxxNyckelformat
Nycklar följer qc_{mode}_{random}, där mode är live eller test och random är 32 kryptografiskt slumpmässiga tecken.
Nycklar visas en gång vid skapandet. Vi lagrar bara SHA-256-hashen, så borttappade nycklar kan inte återställas — återkalla den och skapa en ny.
IP-tillåtelselista
Begränsa valfritt nycklar till specifika IP:er eller CIDR-intervall från utvecklarens kontrollpanel. Förfrågningar från olistade IP:er får en 403. En tom tillåtelselista tillåter alla IP:er.
Hastighetsgränser
Två hinkar: per minut och per månad. Din nivå läses från ditt konto vid varje förfrågan — uppgraderingar träder i kraft omedelbart — och gränserna gäller för alla dina nycklar.
/me och /usage autentiserar men mäts inte: att fråga var du står förbrukar inte den kvot du frågar om.
Headrar
Skickas i varje svar, inte bara vid avslag.
När du är hastighetsbegränsad
API:et returnerar 429 — RATE_LIMITED för minutgränsen, QUOTA_EXCEEDED för månadskvoten — med antalet sekunder att vänta i retry_after.
{
"error": {
"code": "RATE_LIMITED",
"message": "Per-minute rate limit exceeded",
"retry_after": 37
}
}Fel
Fel returnerar en status utanför 2xx och ett error-objekt på toppnivå med en stabil code och ett message. Matcha mot koden, inte meddelandet — meddelanden kan ändras.
{
"error": {
"code": "NOT_FOUND",
"message": "Product not found"
}
}Slutpunkter
Sökvägarna nedan är relativa till https://backend.qualit.ly/api/v1. Marknadsplatserna är weidian, taobao och 1688. Slutpunkter utan märke fungerar på alla planer.
Hämta produkt
/products/{storefront}/{listing_id}En enskild annons via marknadsplats och ID. Returnerar dess metadata och upp till 5 QC-förhandsvisningsminiatyrer. Det här är slutpunkten de flesta integrationer börjar med.
Exempel
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/products/weidian/7231368393Svar
{
"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"
]
}
}Sök produkter
/products/searchSök i katalogen på produktnamn — produkt-URL:en matchas också. Ingen paginering: varje plan returnerar upp till ett fast antal resultat.
Ingen paginering. Varje plan returnerar upp till ett fast antal resultat per sökning; limit kan efterfråga färre, aldrig fler.
Exempel
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"Svar
{
"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"]
}
]
}Fält
Batch-produkter
Pro+/products/batchSlå upp upp till 100 annonser i ett anrop. Varje post slås upp oberoende, så en saknad produkt får inte batchen att misslyckas — den kommer tillbaka som en felpost på samma plats.
Förfrågningskropp
{
"items": [
{ "storefront": "weidian", "listing_id": "7231368393" },
{ "storefront": "taobao", "listing_id": "123456789" }
]
}Exempel
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/batchSvar
{
"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" } }
]
}Slumpmässig produkt
/products/randomEn slumpmässig annons med QC-foton — för montrar, flöden eller stickprov ur katalogen. Ingen förfrågningskropp behövs.
Exempel
curl -X POST \
-H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/products/randomSvar
{
"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-metadata
/qc/{storefront}/{listing_id}Antalet QC-foton för en annons, plus de tre första miniatyrbilderna — utan att hämta hela bildlistan.
Exempel
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/qc/weidian/7231368393Svar
{
"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-bilder
Pro+/qc/{id}/imagesAlla indexerade QC-foton för en annons. Tar emot det numeriska produkt-ID:t, eller skicka ?url= med valfri produktlänk som stöds och låt API:et slå upp den.
Via produkt-ID
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/qc/482910/imagesVia 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"Svar
{
"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"
]
}
}Parametern ?url= accepterar produktlänkar från Weidian, Taobao och 1688, samt från alla agenter som länkkonverteraren stöder. Bilderna är alltid CDN-URL:er.
Kontoinformation
/meDitt konto, nyckeln som gjorde förfrågan och nivån den slår ut till. Praktiskt som en hälsokontroll.
Exempel
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/meSvar
{
"user": { "id": 12345, "username": "you" },
"key": { "id": 7, "mode": "live" },
"tier": "pro_plus"
}Användning
/usageVar du står i båda hastighetsgränshinkarna, med återställningstidsstämplar. Precis som /me autentiserar den här slutpunkten men mäts inte — att fråga om din kvot förbrukar den inte.
Exempel
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/usageSvar
{
"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
}
}Fält
Kodexempel
curl -H "Authorization: Bearer $QUALITLY_KEY" \
"https://backend.qualit.ly/api/v1/products/search?q=jordan+1&storefront=weidian"MCP-server
Samma API serveras som en driftad Model Context Protocol-server, så att Claude, Cursor, VS Code eller vilken MCP-klient som helst kan fråga efter annonser och QC-uppsättningar utan att skriva HTTP. Din API-nyckel, dina hastighetsgränser och nivåregler gäller oförändrat.
Server-URL
https://backend.qualit.ly/api/mcpTransport
StreamableHTTP (POST)
Autentisering
Authorization: Bearer qc_live_…
Verktyg
Endast de verktyg din nivå kan anropa registreras, så en Basic-nyckel ser aldrig ett verktyg den skulle nekas.
Claude Desktop, Cursor och VS Code
Lägg till servern i claude_desktop_config.json (Claude → Inställningar → Utvecklare), eller i din editors MCP-inställningar.
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"
}
}
}
}
}Klienter som stöder OAuth-upptäckt — Claude.ai och ChatGPT bland dem — kan helt hoppa över den hårdkodade nyckeln: en oautentiserad förfrågan besvaras med en WWW-Authenticate-header som pekar mot serverns OAuth-metadata, och klienten leder dina användare genom en inloggningssida i stället.
Kontrollera att det fungerar
# 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":{}}'Planer och nivåer
Din nivå avgörs från ditt konto vid varje förfrågan, så en uppgradering gäller redan från nästa anrop — ingen ny nyckel behövs. Batch-uppslag, fullständiga QC-bildlistor och ?url=-extraktion är de enda slutpunkterna som kräver mer än Basic; allt annat skiljer sig enbart i volym.
| Plan | / minut | / månad | Sökresultat | Batch + bilder |
|---|---|---|---|---|
| Basic | 30 | 1,000 | 5 | |
| Early Adopterlegacy | 40 | 3,000 | 10 | |
| Pro | 300 | 25,000 | 50 | |
| Pro+ | 1,000 | 500,000 | 100 | |
| Custom | Obegränsat | Obegränsat | 250 |
Early Adopter är legacy — innehas av befintliga konton, säljs aldrig. Behöver du mer än Pro+? [email protected] sätter upp anpassade gränser.