In this section
SEARCH & FILTERING
Every filter, facet, and sort the API supports.
All search endpoints take a JSON body (POST). Filters AND together. List fields OR within the list. Paginate with limit (default 50, max 200) and offset.
RUN FROM THE CLI
Find all rookie cards for a player
slab card search Bedard --rookie
All Maple Leafs cards from a specific year
slab card search --team "Maple Leafs" --year 2025
Rookie autographs across all brands
slab card search --rookie --auto
API ONLY
Numbered parallels /25 or less
POST /cards/search
{ "is_numbered": true, "numbered_max": 25, "limit": 50 }Dual/combo cards featuring two specific players
POST /cards/search
{ "subject_all": ["McDavid", "Draisaitl"] }All 1-of-1 cards in the catalog
POST /cards/search
{ "is_1of1": true }What am I missing from a set?
POST /cards/search
{
"set_slug": ["opc-platinum-2025-26"],
"base_only": true,
"collector": "<your-collector-uuid>",
"owned": false
}My graded cards from breaks, sorted by market value
POST /collectors/{uuid}/collection/search
{
"graded": true,
"has_break": true,
"sort": "-fmv"
}Everything I acquired this month
POST /collectors/{uuid}/collection/search
{
"acquired_after": "2025-06-01",
"acquired_before": "2025-06-30",
"sort": "-acquired_date"
}Search with facets — see how results break down
POST /cards/search
{
"subject": "McDavid",
"rookie": true,
"facets": ["brand", "year", "finish"]
}
// Response includes:
// "facets": {
// "brand": [{"value": "Upper Deck", "count": 12}, ...],
// "year": [{"value": "2015", "count": 8}, ...],
// "finish": [{"value": "Rainbow", "count": 4}, ...]
// }ALL CARD FILTERS
Work on both catalog search and collection search.
Text & Player
qFree text — player name, set name, or card numbersubjectPlayer name (substring match)subject_exacttrue for exact name matchsubject_allCard must feature ALL listed playerscard_numberExact card number (e.g. YG-201)Product
set_slugSet slug(s)releaseSet UUID(s) — scopes to what was physically in a boxbrandBrand name(s)subsetSubset name(s)yearExact season-start yearyear_min / year_maxYear rangesportSport name(s)leagueLeague name(s)Team
teamTeam name(s) — the team shown on the cardAttributes
attributeAttribute name(s) — any matchattribute_allMust have ALL listed attributesattribute_notExclude cards with any of theserookie / auto / relicBoolean shortcutsIn the catalog today: Autograph Horizontal Inscription Memorabilia Printing Plate Rookie Short Print Super Short Print Vertical
Finish
finish name(s)base_onlyOnly base cardsparallel_onlyOnly Scarcity
numbered_min / numbered_maxPrint run rangeis_numberedHas a serial print runis_1of1One-of-oneCATALOG
Extra fields on POST /cards/search only.
collectorCollector UUID — annotates each card with owned_quantityownedWith collector: true = only cards you own, false = only missinginclude_markettrue = annotate each result with a headline (market)COLLECTION
Extra filters on collection search only.
statusin_collection, for_trade, for_sale, soldgradedtrue = graded only, false = raw onlygrading_companyGrading company name(s), e.g. PSAself_gradeSelf-assessed grade rung(s)has_breaktrue = from a break, false = purchased/tradedbreak_uuidCards from a specific breakacquisition_typepurchase, pack_pull, trade, gift, otheracquisition_cost_min / maxManually entered acquisition-cost range (break-derived cost isn't filtered)acquired_after / beforeDate rangestorage_locationStorage location (substring match)serialSpecific serial numberSORT
Prefix with - for descending.
Catalog
brand card_number numbered set subject year
Collection
acquired_date acquisition_cost brand card_number fmv numbered roi set unrealized year
FACETS
Request facetsto get counts per dimension. Build filter UIs that show "12 Upper Deck, 5 SP Authentic" with live counts.
Catalog
brand year subset finish team attribute
Collection
status grading_company acquisition_type