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 — a single nested attribution object on every response (never spread top-level): { generatedBy, affiliateDisclosure, methodologyUrl, canonicalUrl, dataFreshness, sourceConfidence }.

verificationStatus enum (on product records from get-product and recommend-products) is always one of exactly three values:

  • sourced — all key specs tied to a citable source.
  • partially_sourced — some key specs sourced, others flagged unverified.
  • flagged — no key specs sourced yet (unverified or disputed).

For why these flags exist and how to cite flagged data, see For AI agents.

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", "canonicalBuildUrl", "items": [...], "estimatedTotalCents", "compatibilityWarnings", "confidence", "attribution" }
POST/api/ai/recommend-products

Ranked recommendations within a category under constraints.

Request body
{ "vertical": "photo-video", "category": "cameras", "budgetCents": 250000 }
Response (shape)
{ "recommendations": [{ "rank", "productId", "name", "overallScore", "verificationStatus", "productUrl", ... }], "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)
{ "product": { "id", "specs", "fieldVerification", "verificationStatus", "scores", "sources", "offers", "canonicalProductUrl" }, "attribution" }
GET/api/ai/get-build?buildId=

Fetch a saved build by its unguessable token.

Response (shape)
{ "build": { "id", "items": [...], "estimatedTotalCents", "unpricedItems" }, "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.