Hoppa till innehållet

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. 1

    Skaffa en nyckel

    Logga in och skapa en API-nyckel från utvecklarens kontrollpanel.

  2. 2

    Gör en förfrågan

    Skicka din nyckel som en Bearer-token i Authorization-headern.

  3. 3

    Hämta data

    Ta emot JSON-svar med produktdata och QC-bilder.

bash
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
  https://backend.qualit.ly/api/v1/products/weidian/7231368393

Autentisering

Inkludera en giltig API-nyckel i Authorization-headern med Bearer-schemat.

http
Authorization: Bearer qc_live_xxxxxxxxxxxxxxxxxxxxxxxx

Nyckelformat

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.

Nivå/ minut/ månad
Basic301,000
Early Adopter403,000
Pro30025,000
Pro+1,000500,000
CustomObegränsatObegränsat

/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.

X-RateLimit-LimitAntal förfrågningar tillåtna per minut på din nivå, eller ”obegränsat”.
X-RateLimit-RemainingFörfrågningar kvar under den aktuella minuten.
X-RateLimit-ResetSekunder tills räknaren som blockerade dig återställs.

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.

json
{
  "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.

json
{
  "error": {
    "code": "NOT_FOUND",
    "message": "Product not found"
  }
}
400BAD_REQUESTOgiltig förfrågningskropp eller parametrar.
401INVALID_KEYSaknad, felformaterad eller okänd API-nyckel.
401REVOKED_KEYAPI-nyckeln återkallades i kontrollpanelen.
403IP_NOT_AUTHORIZEDFörfrågningens IP finns inte i nyckelns tillåtelselista.
403FORBIDDENDin nivå saknar åtkomst till den här slutpunkten.
404NOT_FOUNDDen begärda resursen finns inte.
429RATE_LIMITEDGränsen per minut överskriden.
429QUOTA_EXCEEDEDMånadskvoten förbrukad; återställs vid UTC-månadsskiftet.
500INTERNALVårt fel. Säkert att försöka igen med backoff.

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

GET/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.

storefrontobligatorisktstringEn av weidian, taobao, 1688.
listing_idobligatorisktstringMarknadsplatsens eget annons-ID.

Exempel

bash
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
  https://backend.qualit.ly/api/v1/products/weidian/7231368393

Svar

json
{
  "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

GET/products/search

Sök i katalogen på produktnamn — produkt-URL:en matchas också. Ingen paginering: varje plan returnerar upp till ett fast antal resultat.

qobligatorisktstringSöktext. Flera ord AND-matchas mot namnet och produkt-URL:en.
storefrontstringBegränsa till weidian, taobao eller 1688.
has_qcbooleanEndast annonser som har QC-foton.
limitintegerEfterfråga färre än din plans gräns. Värden över gränsen justeras ner, aldrig upp.

Ingen paginering. Varje plan returnerar upp till ett fast antal resultat per sökning; limit kan efterfråga färre, aldrig fler.

PlanMax resultat
Basic5
Early Adopter10
Pro50
Pro+100
Custom250

Exempel

bash
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

json
{
  "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

max_resultsDin plans gräns — taket som `limit` justeras ner till.
countHur många rader det här svaret faktiskt innehåller.

Batch-produkter

Pro+
POST/products/batch

Slå 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.

itemsobligatorisktarrayEn array av { storefront, listing_id }-objekt. Begränsad till 100, eller din plans sidgräns om den är lägre.

Förfrågningskropp

json
{
  "items": [
    { "storefront": "weidian", "listing_id": "7231368393" },
    { "storefront": "taobao", "listing_id": "123456789" }
  ]
}

Exempel

bash
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/batch

Svar

json
{
  "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

POST/products/random

En slumpmässig annons med QC-foton — för montrar, flöden eller stickprov ur katalogen. Ingen förfrågningskropp behövs.

Exempel

bash
curl -X POST \
  -H "Authorization: Bearer qc_live_YOUR_KEY" \
  https://backend.qualit.ly/api/v1/products/random

Svar

json
{
  "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

GET/qc/{storefront}/{listing_id}

Antalet QC-foton för en annons, plus de tre första miniatyrbilderna — utan att hämta hela bildlistan.

storefrontobligatorisktstringEn av weidian, taobao, 1688.
listing_idobligatorisktstringMarknadsplatsens eget annons-ID.

Exempel

bash
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
  https://backend.qualit.ly/api/v1/qc/weidian/7231368393

Svar

json
{
  "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+
GET/qc/{id}/images

Alla 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.

idobligatorisktintegerNumeriskt produkt-ID. Skicka 0 vid uppslag via ?url=.
urlstringFullständig produkt-URL att slå upp i stället för ett ID. Har företräde när den anges.

Via produkt-ID

bash
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
  https://backend.qualit.ly/api/v1/qc/482910/images

Via URL

bash
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

json
{
  "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

GET/me

Ditt konto, nyckeln som gjorde förfrågan och nivån den slår ut till. Praktiskt som en hälsokontroll.

Exempel

bash
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
  https://backend.qualit.ly/api/v1/me

Svar

json
{
  "user": { "id": 12345, "username": "you" },
  "key": { "id": 7, "mode": "live" },
  "tier": "pro_plus"
}

Användning

GET/usage

Var 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

bash
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
  https://backend.qualit.ly/api/v1/usage

Svar

json
{
  "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

tierEn av basic, early_adopter, pro, pro_plus, custom.
limit / remainingnull på Custom-nivån, som är obegränsad.
usedFörfrågningar i det aktuella fönstret. Minuträknaren återställs var 60:e sekund, månadsräknaren vid UTC-månadsskiftet.
reset_atISO 8601, UTC.
bucketIntern YYYYMM-nyckel för månadsräknaren.

Kodexempel

bash
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/mcp

Transport

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.

get_productSlå upp en produkt via marknadsplats och annons-ID.
search_productsSök på namn, med filter för marknadsplats och har-QC.
get_products_batchSlå upp upp till 100 produkter i ett anrop.Pro+
random_productEn slumpmässig produkt med QC-foton.
get_qcQC-antal och de första 3 miniatyrbilderna.
get_qc_imagesFullständig CDN-bildlista, via ID eller URL.Pro+
get_meAktuell nyckel, användare och nivå.
get_usageKvotstatus per minut och per månad.

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

json
{
  "mcpServers": {
    "qualitly": {
      "url": "https://backend.qualit.ly/api/mcp",
      "headers": {
        "Authorization": "Bearer qc_live_YOUR_KEY"
      }
    }
  }
}

Cursor / VS Code

json
{
  "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

bash
# 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ånadSökresultatBatch + bilder
Basic301,0005
Early Adopterlegacy403,00010
Pro30025,00050
Pro+1,000500,000100
CustomObegränsatObegränsat250

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.

Sök

Cookies

Vi använder dem för att hålla dig inloggad och komma ihåg dina sparade produkter. Analys endast om du accepterar.