Priority Fee Winners
Free
GET /priority-fees/winners
Exact winning prices and priority holding intervals for one slot over the selected range. Prices are returned per interval without hourly or daily averaging.
Rate limits
| Free | Dev | Pro | Team |
|---|---|---|---|
| 30/min | 60/min | 120/min | 120/min |
All priority-fee endpoints, for every range, use the live request quota. This quota is shared with other live endpoints and across all API keys on your account.
On a 429 response, wait for the Retry-After period before retrying. See Rate limits.
Response fields
| Field | Meaning |
|---|---|
| range, slot_id | Selected range and slot. |
| start_time, end_time | UTC bounds of the reported history. end_time may be null when there is no reported interval. |
| interval, timestamp_unit | interval is round and timestamp_unit is us (microseconds). |
| time_origin_us | UTC Unix timestamp in microseconds, matching start_time. |
| series | Participant dictionary. Each entry has key, wallet, and ips. A key is the wallet address when present; otherwise it is ip: followed by the IP address, and wallet is null. |
| data | Chronological five-element tuples: [offset_us, duration_us, series_index, closing_price_hype, closing_price_usdc]. |
Tuple positions
| Field | Meaning |
|---|---|
| 0: offset_us | Interval start offset from time_origin_us, in microseconds. |
| 1: duration_us | Interval duration in microseconds. |
| 2: series_index | Zero-based index into series, or null for an empty interval. |
| 3: closing_price_hype | HYPE closing price for the winner, or null. |
| 4: closing_price_usdc | Historical USDC value of that closing price, or null. |
Reading the response
- Compute start_us = time_origin_us + offset_us and end_us = start_us + duration_us. Divide either value by 1,000 to construct a JavaScript Date. Preserve the microsecond values for exact interval arithmetic.
- An interval starts when the winner gains priority, after the auction closes. Intervals are clipped to the selected range.
- A null series_index denotes a recorded empty interval; both prices are then null. Time with no returned interval must not be counted as an empty auction or extended from the previous winner.
- Each series entry can contain multiple IP addresses for the same wallet. The ips list belongs to the participant across the response; the tuple does not select one IP from that list.
- HYPE is the payment currency. USDC is a historical value estimate. Null differs from a genuine zero. Result arrays in the example are shortened for readability.
Authentication
Requires a valid API key in the X-Api-Key header. Available on all plans.
Parameters
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
range | string | – | 4h, 1d, 7d, 30d, or all. Defaults to all. All available history begins on 10 April 2026. |
slot | integer | – | 0, 1, or 2. Defaults to 0. |
Example request
bash
curl -H "X-Api-Key: lk_live_your_key_here" \
"https://api.loris.tools/priority-fees/winners?range=4h&slot=0"Example response
json
{
"range": "4h",
"slot_id": 0,
"start_time": "2026-11-01T00:00:00Z",
"end_time": "2026-11-01T04:00:00Z",
"interval": "round",
"timestamp_unit": "us",
"time_origin_us": 1793491200000000,
"series": [
{
"key": "0x0000000000000000000000000000000000000001",
"wallet": "0x0000000000000000000000000000000000000001",
"ips": [
"192.0.2.1"
]
}
],
"data": [
[
0,
180000000,
0,
1.25,
50
],
[
180000000,
180000000,
null,
null,
null
]
]
}Errors
400— Invalid range or slot. Supported slot values are 0, 1, and 2.405— Use GET for this endpoint.429— Live request quota exceeded. Wait for the Retry-After period before retrying.503— Priority fee data is temporarily unavailable. Try again shortly.
For authentication errors (401) and rate limit responses (429), see Errors.