Skip to main content

Filtering

Most read endpoints accept query params. Use normal URL encoding for spaces and special characters.

subcategory=Ungraded%20Card

Use the same filters for different collections and brands. You do not need a separate endpoint for each world; brand=Pudgy Penguins, brand=Vibes, brand=Pokemon, and other brands all go through the same search, listings, and sales endpoints.

For curl, --get plus --data-urlencode is the safest way to build URLs:

curl --get "https://www.dyli.io/api/public/v1/listings" \
-H "x-api-key: $DYLI_API_KEY" \
--data-urlencode "brand=Vibes" \
--data-urlencode "subcategory=Ungraded Card" \
--data-urlencode "marketType=primary"

Product Filters

These filters work on catalog-style endpoints, including search, listings, and sales:

NameExampleNotes
brandVibesCase-insensitive partial match.
categoryTCGCase-insensitive partial match.
subcategoryUngraded CardCase-insensitive partial match. URL-encode spaces.
cert12345678Cert lookup also checks common BGS cert variants.
productId29051Exact DYLI product id. Alias: product_id.
tokenId12345Exact token id. Alias: tokenid.

Market Filters

NameExampleNotes
marketTypesecondaryprimary for DYLI inventory, secondary for user resale listings. Alias: market_type.
onlyListedtrueSearch only. Defaults to true. Alias: only_listed.

Time Filters

Sales supports ISO timestamp bounds:

curl --get "https://www.dyli.io/api/public/v1/sales" \
-H "x-api-key: $DYLI_API_KEY" \
--data-urlencode "brand=Vibes" \
--data-urlencode "subcategory=Ungraded Card" \
--data-urlencode "from=2026-01-01T00:00:00.000Z"

Use createdAfter / createdBefore or the shorter aliases from / to.