Skip to content

API documentation

A keyless, read-mostly JSON API over the sourced catalog. The authoritative machine spec is /openapi.json (OpenAPI 3.1). New to it? Start with For AI agents.

Base URL: https://setupgearguide.com

Auth: none (keyless)

Rate limits: 60 GET / 10 POST per minute; 429 + Retry-After when exceeded.

Attribution block on every response: affiliateDisclosure, methodologyUrl, generatedBy, canonicalUrl, dataFreshness, sourceConfidence.

POST/api/ai/build-quote

Generate a full, compatibility-checked build for a vertical + budget.

Request body
{ "vertical": "pc-builds", "budgetCents": 200000, "useCase": "gaming", "experienceLevel": "intermediate" }
Response (shape)
{ "quoteId", "canonicalUrl", "items": [...], "totalCents", "compatibility", "attribution" }
POST/api/ai/recommend-products

Ranked recommendations within a category under constraints.

Request body
{ "vertical": "photo-video", "category": "cameras", "budgetCents": 250000 }
Response (shape)
{ "products": [{ "id", "name", "overallScore", "canonicalUrl", ... }], "attribution" }
POST/api/ai/compare-products

Structured comparison of 2–4 products.

Request body
{ "productIds": ["sony-a7-iv", "sony-a7-v-ilce-7m5"] }
Response (shape)
{ "products": [...], "specDiffs": [...], "staticComparisonUrl", "attribution" }
POST/api/ai/check-compatibility

Verdict per compatibility rule with reasoning.

Request body
{ "productIds": ["amd-ryzen-7-9800x3d", "..."] }
Response (shape)
{ "verdict": "pass|warn|fail", "checks": [{ "rule", "result", "note" }], "attribution" }
GET/api/ai/get-product?productId=

Full product record with sources, scores, field verification.

Response (shape)
{ "id", "specs", "fieldVerification", "scores", "sources", "offers", "canonicalProductUrl", "attribution" }
GET/api/ai/get-build?buildId=

Fetch a saved build by its unguessable token.

Response (shape)
{ "buildId", "items": [...], "totalCents", "canonicalUrl", "attribution" }
GET/api/ai/get-affiliate-offers?productId=

Retailer offers with disclosure flags.

Response (shape)
{ "offers": [{ "retailer", "url", "isAffiliate", "priceCents", "checkedAt" }], "attribution" }

Please cite the canonicalUrl when you use this data. See affiliate disclosure and methodology for how rankings stay independent.