Scalar temperature markets
Scalar markets track NYC Central Park temperature.
The mark encodes Fahrenheit temperature:
mark = 500 + temperature_f
Examples:
| Temperature | Mark |
|---|---|
| 68.0 F | 568.0 |
| 72.5 F | 572.5 |
| 80.0 F | 580.0 |
Bucket clock
Scalar markets run on 120-minute UTC buckets. Two assets alternate:
| Asset | Role |
|---|---|
NYCTMP1 | Trades during one bucket |
NYCTMP2 | Trades during the next bucket |
Use /v1/bucket to know which asset is live. Do not calculate the active asset only on the client.
Settlement
At the bucket close, the final mark is based on TWAP-120, the time-weighted average of the last 120 seconds.
During settlement, there may be a short gap where the current or next bucket is null. Clients should show a settling state and poll again.
Read scalar market state
curl -s "{API_BASE_URL}/v1/markets"
curl -s "{API_BASE_URL}/v1/bucket"
curl -s "{API_BASE_URL}/v1/ticker?asset=NYCTMP1"
curl -s "{API_BASE_URL}/v1/book?asset=NYCTMP1"
Simple prediction flow
POST /v1/predict creates a scalar prediction package. It is meant for the simple UI path where the user chooses a target temperature, size, and direction.
Typical request shape:
{
"asset": 0,
"target_temp_f": 75.0,
"sz": "10.0000",
"direction": "long",
"slippage_pct": 1.0
}
asset uses the scalar asset id from the API contract. 0 maps to the first scalar asset and 1 to the second.
Direct order flow
POST /v1/orders accepts signed scalar orders. Use it only if your client handles the full signing model.
The body is the signed order envelope SignedOrderRequest { order: ClientOrder, signature }:
{
"order": {
"asset": "NYCTMP1",
"side": "buy",
"size": "10.0000",
"price": "575.00",
"tif": "GTC",
"nonce": 1710000000000,
"timestamp": 1710000000000,
"reduce_only": false
},
"signature": "0x..."
}
Required order fields are:
| Field | Notes |
|---|---|
asset | Scalar asset expected by the deployment |
side | buy or sell |
size | Size string |
price | Encoded mark as a decimal string |
tif | GTC, IOC, or ALO |
nonce | Monotonically increasing client nonce |
timestamp | Millisecond timestamp |
reduce_only | Use true for closes |
Do not send agent-style Hyperliquid fields such as isBuy, limitPx, or sz to
the direct signed order endpoint.
Agent order flow
Use the agent prepare/submit flow when the backend should build the canonical Hyperliquid action for the client to sign.
POST /v1/orders/prepare
POST /v1/orders/submit
Sign exactly the returned message. If the market state changes before submit, prepare again.