Skip to main content
Base URL: https://symbols.buildwithtrace.com. Backend base: https://api.buildwithtrace.com. Authenticated routes require Authorization: Bearer <access_token> (see Authentication).

Catalog (public, no backend)

MethodRouteParamsReturns
GET/api/librariescategory, page, limit{ libraries[], total, page, limit, totalPages }
GET/api/libraries/[name]Library + symbols[] (with pins); 404 if missing
GET/api/searchq, category, page, limit{ symbols[], total, page, limit, totalPages }
GET/api/search/suggestq (≥2)[{ id, name, library, pinCount }] (max 8)
GET/api/categories[{ id, count }]
GET/api/thumbnailidimage/svg+xml or 404
GET/api/download/[library]Raw .kicad_sym attachment
GET/api/health{ status, timestamp, data }

Proxied to backend

MethodRouteAuthBackend target
GET/api/search/semanticGET /api/v3/components/search?q=&limit=
POST/api/generatePOST /api/v3/components/generate/symbol
POST/api/generate/savePOST /api/v3/components/generated
POST/api/contribute/validate(local — kicad_parser.ts)
POST/api/contribute/submitPOST /api/v3/components/submit
GET/api/communityGET /api/v3/components/community
GET/api/commentsGET /api/v3/components/comments/{id}
POST/api/commentsPOST /api/v3/components/comments
GET/api/ratingGET /api/v3/components/generated/{id}/rating
POST/api/ratingPOST /api/v3/components/generated/{id}/rate
GET/api/my-symbolsGET /api/v3/components/my
PATCH/api/my-symbolsPATCH /api/v3/components/generated/{id}
DELETE/api/my-symbolsDELETE /api/v3/components/generated/{id}

Detail pages

Common error codes

StatusMeaning
400Validation error (bad params / file / description length)
401Missing or expired bearer token
402 / 403Plan or quota does not permit the action
404Resource not found
422Invalid uploaded file
502 / 504Backend error / generation timeout

Save payload — SaveComponentPayload

{
  type: "symbol" | "footprint";
  name: string; description: string; is_public: boolean;
  keywords?: string[]; datasheet?: string; trace_json: object;
  // symbol-specific
  reference_prefix?: string; pin_count?: number;
  kicad_sym?: string | null; footprint_filters?: string[];
  // footprint-specific
  pad_count?: number; kicad_mod?: string | null; package_type?: string | null;
}