v1
components

List Components

Return a paginated list spanning the public catalog and caller's customs.

Query parameters: type (optional; motor|battery|propeller — when omitted returns all three types ordered by name/created_at only), visibility (optional; public/private; default: union), limit (1-100, default 25), cursor (pagination token), search (name substring match; q is an accepted alias — search wins if both are supplied, and q is length-capped identically), sort_by (name, brand, kv, etc.), sort_order (asc/desc).

The cursor is a sort-aware composite keyset: it carries the active sort_by/sort_order, so a cursor issued for one sort cannot be reused with a different sort (400 invalid_cursor).

Numeric spec_json fields are filterable via bracket syntax: ?kv[gte]=900&kv[lt]=1100. Discrete fields accept [in]: ?blades[in]=2,3. Per-type filters and per-type sort keys require type to be set; without type only the generic name and created_at sort keys are accepted.

Every range field answers to two names — the documented one and the raw spec key — on BOTH surfaces: resistance[lte] and R[lte] filter identically, and sort_by=resistance and sort_by=R sort identically. A bracket filter naming a field this type does not have is rejected with 400 unknown_filter listing the fields it does have, so a typo can no longer return the whole catalog in silence. The bounds the server applied come back in filters, keyed by the documented name.

Results are cursor-paginated in the requested sort order.

Readable WITHOUT a credential: an anonymous caller lists the curated public catalog only — never a private row and never a user-submitted one — and is metered per client IP on the same bucket as /v1/public/*. A credential adds the caller's own components and their raw specs. visibility=private is not an error without a credential, it simply matches nothing.

get/v1/components

Request

  • Base URL: https://thrustlab.com
  • URL: https://thrustlab.com/v1/components
  • Auth: HTTP bearer

Query parameters

typestring nullable
visibilitystring nullable
cursorstring nullable
limitinteger
searchstring nullable
qstring nullable

Alias for search (name substring match). If both are supplied, search wins. Length-capped identically to search.

sort_bystring

Sort key. Without type only name and created_at are accepted. With type set, additionally — motor: R (or resistance), iq_max (or current_max), kv, n (or poles), power_max, weight, weight_g; battery: c_rating, energy_density, series_cells, total_capacity_mAh (or capacity), weight_g (or weight); propeller: diameter, inertia, maxRPM (or max_rpm), num_blades, pd_ratio, pitch, weight. Either spelling of a field works, here and in the bracket filters. The pagination cursor is bound to the sort: a cursor issued for one sort_by/sort_order cannot be replayed against another (400 invalid_cursor), so finish a scan before changing the ordering.

sort_orderstring
ids_onlyboolean

When true, return ALL matching component ids in the requested sort order (bounded, NOT cursor-paginated) for Select-all. Response is {object,data:[ids],total,truncated}; cursor/limit are ignored. At most 5000 ids are returned; beyond that the first ids in sort order come back with truncated=true.

Response

Successful Response

OR

Changes

No recorded changes to this operation across all 1 revision of this API.