Parameters & Types
On every endpoint page, parameters are color coded to show whether they are required, optional, or global options (the global ones — pagination, condense, locale — work the same way everywhere). The value formats those parameters accept are described below.
Ranges
Numeric filters such as price and gear_score accept a range value — one parameter that covers what a min/max pair used to. Pass any of:
- a bare number for an exact match — 300
- an inclusive range — 200:500
- an open-ended bound — 200: (at least 200) or :500 (at most 500)
- an inequality — >=200, >200, <=999, or <999
Bounds are inclusive unless written with a strict > / <. A non-numeric value (or an inverted range like 500:200) returns a 400.
Booleans
Booleans are true or false. As a query parameter the API also accepts common numeric and string forms, converted as follows:
| Input | Converted |
|---|---|
| true | true |
| 1 | true |
| yes | true |
| on | true |
| false | false |
| 0 | false |
| no | false |
| off | false |
Timestamps
Some endpoints support timestamp filters such as from and to. Every form below names the same instant:
- ISO 8601 with Z — 2025-02-17T03:32:08Z
- ISO 8601 with an offset — 2025-02-17T03:32:08%2B00:00 or 2025-02-17T03:32:08-05:00
- ISO 8601 with no zone, read as UTC — 2025-02-17T03:32:08
- a YYYY-MM-DD date, at midnight UTC
- seconds since the epoch (Jan 1, 1970) — 1739763128, or 0 for the epoch itself
A value that is not a timestamp returns a 400.
Escape a + offset as %2B. In a query string a literal + means a space, so ?from=2025-02-17T03:32:08+00:00 arrives as 2025-02-17T03:32:08 00:00 — the API repairs that decode, so the unescaped form works, but %2B is what a correct URL encoder emits and the rule applies to every other parameter you send. In a path segment or a JSON body, + needs no escaping.
Intervals
Intervals define an aggregation period. They may either be an integer representing the number of seconds in each period or one of several predefined values:
| Interval | Value |
|---|---|
| 1m | 60 |
| 3m | 180 |
| 5m | 300 |
| 10m | 600 |
| 15m | 900 |
| 30m | 1800 |
| 45m | 2700 |
| 1h | 3600 |
| 2h | 7200 |
| 4h | 14400 |
| 1d | 86400 |
| 1w | 604800 |
| 2w | 1209600 |
| 4w | 2592000 |
Attributes
Some endpoints support filtering by primary or secondary item attributes. For these endpoints, you can specify &primary[attribute]=... or &secondary[attribute]=.... All attributes support range filters. Here is a list of supported attributes:
| Name | Field |
|---|---|
| Loading… | |
Classes
Fields like required_class take one or more class names. To match several classes, separate them with |. Items with no class restriction always match.
| Class | Filter value |
|---|---|
| Fighter | fighter |
| Barbarian | barbarian |
| Rogue | rogue |
| Ranger | ranger |
| Wizard | wizard |
| Cleric | cleric |
| Bard | bard |
| Warlock | warlock |
| Druid | druid |
| Sorcerer | sorcerer |
For example, to find all chest armor usable by a wizard, cleric or sorcerer: /v2/items?slot_type=Chest&required_class=wizard|cleric|sorcerer.