Skip to main content
Zero Latency Labs lists USDC-quoted perpetual futures. Every market is one perp per asset, quoted in USDC, with no expiry or settlement date. The catch on the wire: the API never accepts decimals, so you convert every human price or size into a raw integer first.
Every price, quantity, and cash amount is a raw integer at a fixed scale. Send a human number (for example 50000 for a 50,000 USDC BTC price) instead of the scaled integer and you are wrong by a factor of billions — the single most common integration error. Build the wire integer yourself: multiply by the scale, then floor.

Markets

Markets use the symbol format `<ASSET>-PERP`. There are six perpetual markets, all quoted in USDC:
SymbolBase assetQuote
BTC-PERPBTCUSDC
ETH-PERPETHUSDC
SOL-PERPSOLUSDC
XRP-PERPXRPUSDC
UNI-PERPUNIUSDC
AAVE-PERPAAVEUSDC
These are perpetual futures, so there is no expiry or settlement date. The order-level expiry field is time-in-force, not a contract expiry.

The three units

Three integer scales cover everything on the wire. All amounts are denominated in USDC, the collateral and quote asset.
UnitFieldScaleUsed for
CentiCentscash size10⁻⁴ USDC (1 = 0.0001 USDC)cash balances, deposits, withdrawals, transfers, fees, notional
PriceOfAtomorder price10⁻¹⁶ USDC per atomlimit order price
Atomsorder quantitythe asset’s smallest unitorder size
An atom is the smallest size unit of an asset. Each asset has its own number of atoms per whole unit (see Atoms per unit). The bridge between the size and cash scales is a fixed constant: 10¹². Notional in 10⁻¹⁶ USDC (= price × quantity) divided by 10¹² gives CentiCents.

Convert human to wire

Price

price is a PriceOfAtom: the USDC price of one atom, in units of 10⁻¹⁶ USDC.
price = floor( price_per_unit_usdc × 10¹⁶ / atoms_per_unit )
Equivalently, in CentiCents: price = price_per_unit_in_centicents × (10¹² / atoms_per_unit). To go back: price_per_unit_usdc = price × atoms_per_unit / 10¹⁶.

Size

quantity is in atoms.
quantity = floor( human_size_in_units × atoms_per_unit )
To go back: human_size = quantity / atoms_per_unit. The sign of quantity is the side: positive = long/buy, negative = short/sell. It is a 64-bit signed integer.

Notional the exchange computes

notional_centicents = floor( price × |quantity| / 10¹² )

Worked examples

BTC has atoms_per_unit = 100,000,000 (10⁸). Conversion factor = 10¹² / 10⁸ = 10⁴.
  • Price50,000 USDC500,000,000 CentiCents → × 10⁴ = 5,000,000,000,000. Send price = 5000000000000.
  • Size0.5 × 10⁸ = 50,000,000 atoms. Buy, so positive: quantity = 50000000.
  • Notional5e12 × 5e7 / 10¹² = 250,000,000 CentiCents = 25,000 USDC (= 0.5 × 50,000).

Atoms per unit

Each asset carries its own atom scale. The asset id is sent as a 16-bit field on every order.
AssetIdAtoms per whole unit
BTC0100,000,000 (10⁸)
ETH110,000,000,000 (10¹⁰)
USDC21,000,000 (10⁶)
SOL31,000,000,000 (10⁹)
XRP41,000,000 (10⁶)
UNI5100 (provisional)
AAVE6100 (provisional)
Provisional values may change before those markets are finalized; treat their sizes and minimums as subject to change. USDC has an atom scale but no perp market — it is the quote asset.

Round down everywhere

Every conversion truncates toward zero — there is no round-to-nearest.
  • Your raw integers are floored when the exchange computes notional.
  • Sub-tick price precision and sub-step size precision are silently lost.
Submit prices already aligned to the market tick and sizes already aligned to the step. Do not assume the exchange rounds to your nearest tick. Anything below the tick or step is dropped, which can change or invalidate your order.

Tick, step, and minimum size

Each market sets a price tick (in USDC), a size step, and a minimum order size (both in atoms). Submit price as a multiple of the tick, and quantity as a multiple of the step at or above the minimum.
MarketPrice tickSize step (atoms)Min order (atoms)Min in units
BTC-PERP1.00 USDC1001,0000.00001 BTC
ETH-PERP0.10 USDC1,00010,0000.000001 ETH
SOL-PERP0.001 USDC1,00010,0000.00001 SOL
XRP-PERP0.0001 USDC1,00010,0000.01 XRP
UNI-PERP0.0001 USDC1,00010,000100 UNI
AAVE-PERP0.01 USDC1,00010,000100 AAVE
SOL, XRP, UNI, and AAVE step and minimum sizes are provisional and may change before those markets are finalized. No live endpoint returns these values today; a Market Data API is planned.

The per-atom price ceiling

price is a 64-bit value capped below 2⁶³, so the maximum representable price is about 922 USDC per atom. This is a per-atom ceiling, not a per-unit ceiling: the per-unit maximum is 922 USDC × atoms_per_unit (for BTC, 922 USDC × 10⁸), which no real price approaches. The per-asset atom scales exist so each asset keeps enough price precision while staying inside this range. Next, see Orders and time-in-force for what to put in price and quantity.