Referência da API
Qualit.ly API
Dados de produtos, imagens QC e metadados da Weidian, Taobao e 1688. Autenticação por token Bearer, limites de taxa generosos, planos por níveis.
Começar
Todos os pedidos vão para https://backend.qualit.ly/api/v1. Três passos:
Obtém uma chave
Inicia sessão e cria uma chave de API a partir do painel de programador.
Faz um pedido
Envia a tua chave como um token Bearer no cabeçalho Authorization.
Obtém dados
Recebe respostas JSON com dados de produtos e imagens QC.
Exemplo rápido
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/products/weidian/1234567890Autenticação
Inclui uma chave de API válida no cabeçalho Authorization usando o esquema Bearer.
Authorization: Bearer qc_live_xxxxxxxxxxxxxxxxxxxxxxxxFormato da chave
As chaves seguem qc_{mode}_{random} onde mode é live ou test, e random são 32 caracteres criptograficamente aleatórios.
As chaves são mostradas uma vez, na criação. Guardamos apenas o hash SHA-256, por isso chaves perdidas não podem ser recuperadas.
Lista de permissões de IP
Opcionalmente, restringe as chaves a IPs ou intervalos CIDR específicos através do painel de programador. Pedidos de IPs não listados recebem um 403. Uma lista de permissões vazia permite todos os IPs.
Limites de Taxa
Dois limites: por minuto e por mês. Os limites estão associados ao nível da tua conta e aplicam-se a todas as chaves.
Quando o limite é atingido
A API devolve 429 com o cabeçalho Retry-After.
{
"error": {
"code": "RATE_LIMITED",
"message": "Per-minute limit exceeded",
"retry_after": 12
}
}Erros
Todos os erros devolvem um objeto error de nível superior com code e message.
{
"error": {
"code": "NOT_FOUND",
"message": "Product not found"
}
}BAD_REQUESTCorpo do pedido ou parâmetros inválidos.INVALID_KEYChave de API em falta, malformada ou desconhecida.REVOKED_KEYA chave de API foi revogada no painel.IP_NOT_AUTHORIZEDO IP do pedido não está na lista de permissões da chave.FORBIDDENO teu nível não tem acesso a este endpoint.NOT_FOUNDO recurso pedido não existe.RATE_LIMITEDLimite por minuto excedido, verifica Retry-After.QUOTA_EXCEEDEDQuota mensal esgotada; repõe-se na viragem do mês em UTC.INTERNALErro do servidor. Tenta novamente ou contacta o suporte.Endpoints
Base: https://backend.qualit.ly/api/v1. Lojas: weidian, taobao, 1688.
/products/:storefront/:listingIdBasicConsulta um único produto por loja e ID de listagem. Devolve metadados e até 5 miniaturas de pré-visualização QC.
Parâmetros
storefrontobrigatórioUm de: weidian, taobao, 1688
listingIdobrigatórioO ID de listagem do produto na loja
Exemplo
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/products/weidian/7231368393Resposta
{
"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/searchBasicPesquisa o catálogo por nome de produto (também corresponde ao URL do produto). Opcionalmente, filtra por loja ou por produtos que tenham fotos QC. Sem paginação — a contagem de resultados é limitada pelo teu plano.
Parâmetros de consulta
qobrigatórioTexto de pesquisa. Várias palavras são combinadas com AND contra o nome e o URL do produto. (obrigatório)
storefrontOpcional. Limita os resultados a um de: weidian, taobao, 1688
has_qcOpcional. Define como true para devolver apenas produtos que tenham fotos QC
limitOpcional. Menos resultados do que o limite do teu plano. Valores acima do limite são reduzidos — nunca aumentados.
Limites de resultados
Sem paginação. Cada plano devolve até um número fixo de resultados por pesquisa. Passa um limite menor para obter menos; não podes exceder o limite do teu plano.
Exemplo
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"Resposta
{
"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+Consulta vários produtos num único pedido (até 100). Cada resultado é independente, por isso um produto em falta não faz o lote falhar.
Corpo do pedido
{
"items": [
{ "storefront": "weidian", "listing_id": "7231368393" },
{ "storefront": "taobao", "listing_id": "123456789" }
]
}Exemplo
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/batchResposta
{
"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/:listingIdBasicObtém os metadados QC e os primeiros 3 URLs de miniatura de um produto.
Exemplo
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 completa de imagens QC. Aceita um ID numérico de produto ou um parâmetro de consulta ?url= para consultas por URL.
Por ID do produto
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/qc/482910/imagesPor 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"Resposta
{
"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= aceita URLs completos de produtos da Weidian, Taobao, 1688 e agentes suportados./meBasicDevolve as informações da tua conta, a chave usada no pedido e o teu nível atual.
Exemplo
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"
}/usageBasicVerifica a tua utilização atual de limite de taxa e quota. Devolve contadores por minuto e por mês com marcas temporais de reposição. A própria chamada consome 1 pedido de ambos os contadores.
Exemplo
curl -H "Authorization: Bearer qc_live_YOUR_KEY" \
https://backend.qualit.ly/api/v1/usageResposta
{
"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
}
}Campos
tierUm de: basic, early_adopter, pro, pro_plus, custom
limit / remainingnull no nível custom (ilimitado)
usedPedidos contados na janela atual. O contador de minuto repõe-se a cada 60s; o contador de mês repõe-se na viragem do mês em UTC.
reset_atMarca temporal ISO 8601 UTC
bucketChave interna YYYYMM para o contador do mês
Erros
Iguais às de outras rotas /api/v1/*:401 INVALID_KEY /REVOKED_KEY,403 IP_NOT_AUTHORIZED,429 RATE_LIMITED /QUOTA_EXCEEDED.
Exemplos de Código
Excertos de início rápido em linguagens populares.
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');Servidor MCP
A API da Qualit.ly está disponível como um servidor Model Context Protocol (MCP). Liga-o ao Claude Desktop, Cursor, VS Code ou a qualquer cliente compatível com MCP e consulta produtos, imagens QC e dados de utilização diretamente do teu assistente de IA, sem HTTP manual. Aplicam-se a mesma chave de API, os mesmos limites de taxa e as mesmas regras de nível.
URL do servidor
https://backend.qualit.ly/api/mcpTransporte
StreamableHTTP (POST)
Autenticação
Authorization: Bearer qc_live_…
Ferramentas disponíveis
get_productsearch_productsget_products_batchget_qcget_qc_imagesget_meget_usagehttps://backend.qualit.ly/.well-known/oauth-authorization-server.Claude Desktop (chave fixa no código)
Adiciona isto ao teu claude_desktop_config.json (Claude → Definições → Programador):
{
"mcpServers": {
"qualitly": {
"url": "https://backend.qualit.ly/api/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}Cursor / VS Code (chave fixa no código)
{
"mcp": {
"servers": {
"qualitly": {
"url": "https://backend.qualit.ly/api/mcp",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
}Verificação rápida
# 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":{}}'Planos e Níveis
O teu nível é resolvido em cada pedido, por isso as melhorias têm efeito imediato. Os endpoints de lote e de imagens completas requerem Pro+.
Precisas de limites mais altos? [email protected]
Vê os planos completos, preços e vantagens