Hi all, quick heads up for teams working with Jupiter's Prediction… — Jupiter Dev Notifications — TG.ME

Hi all, quick heads up for teams working with Jupiter's Prediction Markets API.

We're shipping the next step of the fractional contracts migration on Thursday, 4 June 2026 at 6:00 AM UTC (2:00 PM SGT, UTC+8). No downtime is expected.

What's happening

The previous migration on 27 May was step one. On-chain storage moved to micro-contracts and the new *Micro / *Decimal fields became available. This Thursday is step two: the keeper starts executing partial / fractional fills.

What this means for your integration

Legacy fields like contracts and filledContracts are floored to whole numbers, the fractional part is dropped. Until Thursday, fills are always whole numbers, so this has no effect. From Thursday onwards, fills can be fractional, and any integration reading these legacy fields will get the truncated value. The *Micro fields carry the exact amount.

Example (an order partially filled for 2.5 contracts):

filledContracts:        "2"        ← legacy, floored, do NOT use
filledContractsMicro: "2500000" ← exact, use this
filledContractsDecimal: "2.5" ← exact, for display


What you need to do before Thursday

1. Order creation: send contractsMicro instead of contracts. Send exactly one quantity field per order as providing multiple of contracts, contractsMicro, or contractsDecimal is rejected. The legacy contracts field still works for whole-contract orders but cannot express fractions.

2. Reading responses: switch any calculation or accounting logic from legacy fields to their *Micro siblings:

- contracts → contractsMicro
- filledContracts → filledContractsMicro
- contractsSettled → contractsSettledMicro
- newContracts → newContractsMicro
- totalContracts → totalContractsMicro
- totalActiveContracts → totalActiveContractsMicro

Use *Micro for math, *Decimal for display.

3. Number types: *Micro values are returned as strings (u64/u128) and can exceed JavaScript's safe-integer range. Parse with BigInt or a decimal library, never parseFloat or Number. Those will silently produce wrong values for large positions.

What's not changing

USD / price fields stay in micro-USD. depositAmount is unchanged, denominated in the deposit token's native decimals (e.g. 6 for USDC).

Legacy field handling
Legacy whole-contract fields will remain available for backwards compatibility, we won't be removing them anytime soon. There is no firm deprecation date. However, they will continue to return values floored to whole numbers, so you must migrate to the *Micro fields to read accurate data from Thursday onwards.

Full migration guide: https://gist.github.com/julianfssen/322fb55fc6f1eb575a60e7e350ebe822

If you're unsure how this affects your integration, reach out to @anmoldotsol and we'll help verify.
Gist
migration.md
GitHub Gist: instantly share code, notes, and snippets.
June 3, 2026 1.8K 2