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:
| Name | Example | Notes |
|---|---|---|
brand | Vibes | Case-insensitive partial match. |
category | TCG | Case-insensitive partial match. |
subcategory | Ungraded Card | Case-insensitive partial match. URL-encode spaces. |
cert | 12345678 | Cert lookup also checks common BGS cert variants. |
productId | 29051 | Exact DYLI product id. Alias: product_id. |
tokenId | 12345 | Exact token id. Alias: tokenid. |
Market Filters
| Name | Example | Notes |
|---|---|---|
marketType | secondary | primary for DYLI inventory, secondary for user resale listings. Alias: market_type. |
onlyListed | true | Search 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.