diff --git a/docs/changelog/changelog.md b/docs/changelog/changelog.md index 5e7d026..82e9f6b 100644 --- a/docs/changelog/changelog.md +++ b/docs/changelog/changelog.md @@ -6,6 +6,15 @@ > Welcome to the Polymarket Changelog. Here you will find any important changes to Polymarket, including but not limited to CLOB, API, UI and Mobile Applications. + + Polymarket's CLOB V2 upgrade is live on `https://clob.polymarket.com`. + + * **Production URL unchanged**: V2 now runs on the standard CLOB host. New integrations should use `https://clob.polymarket.com`. + * **No V1 compatibility**: Legacy V1 SDKs and V1-signed orders are no longer supported on production. + * **Open orders wiped**: Resting orders from before the cutover did not migrate and must be re-created with V2 signing. + * **Migration guide**: See [Migrating to CLOB V2](/v2-migration) for the SDK, raw order signing, pUSD, and builder attribution changes. + + * **Faster `POST /submit` responses**: The Relayer's `POST /submit` endpoint now returns immediately with just `{ transactionID, state: "STATE_NEW" }`. The `transactionHash` field has been removed from the submit response to improve performance. * **How to get the hash**: Poll [`GET /transaction`](/api-reference/relayer/get-a-transaction-by-id) with the returned `transactionID` to retrieve the onchain `transactionHash` once the transaction has been broadcast. @@ -18,7 +27,7 @@ **Full walkthrough:** [Migrating to CLOB V2](/v2-migration). Follow [Discord](https://discord.gg/polymarket), Telegram, and [status.polymarket.com](https://status.polymarket.com) for the exact start time. - **Test against V2 now:** point your client at `https://clob-v2.polymarket.com`. On April 28, V2 takes over `https://clob.polymarket.com`, so no base-URL change is needed after the cutover. + **Historical pre-cutover note:** before go-live, integrations could test against `https://clob-v2.polymarket.com`. As of April 28, V2 runs on `https://clob.polymarket.com`. **What's changing** @@ -157,7 +166,7 @@ - * We’re adding new fields to the `get-book` and `get-books` CLOB endpoints to include key market metadata that previously required separate queries. + * We're adding new fields to the `get-book` and `get-books` CLOB endpoints to include key market metadata that previously required separate queries. * `min_order_size` * type: string * description: Minimum price increment. @@ -170,7 +179,7 @@ - * We’re excited to roll out a highly requested feature: **order batching**. With this new endpoint, users can now submit up to five trades in a single request. To help you get started, we’ve included sample code demonstrating how to use it. Please see [Create Orders](/trading/orders/create) for more details. + * We're excited to roll out a highly requested feature: **order batching**. With this new endpoint, users can now submit up to five trades in a single request. To help you get started, we've included sample code demonstrating how to use it. Please see [Create Orders](/trading/orders/create) for more details. @@ -185,7 +194,7 @@ - We’re excited to introduce a new order type soon to be available to all users: Fill and Kill (FAK). FAK orders behave similarly to the well-known Fill or Kill (FOK) orders, but with a key difference: + We're excited to introduce a new order type soon to be available to all users: Fill and Kill (FAK). FAK orders behave similarly to the well-known Fill or Kill (FOK) orders, but with a key difference: * FAK will fill as many shares as possible immediately at your specified price, and any remaining unfilled portion will be canceled. * Unlike FOK, which requires the entire order to fill instantly or be canceled, FAK is more flexible and aims to capture partial fills if possible. @@ -199,7 +208,7 @@ * CLOB - /price (100req - 10s / Throttle requests over the maximum configured rate) * CLOB markets/0x (50req / 10s - Throttle requests over the maximum configured rate) * CLOB POST /order - 500 every 10s (50/s) - (BURST) - Throttle requests over the maximum configured rate - * CLOB POST /order - 3000 every 10 minutes (5/s) - Throttle requests over the maximum configured rate + * CLOB POST /order - 3000 every 10 minutes (5/s) - Throttle requests over the maximum configured rate) * CLOB DELETE /order - 500 every 10s (50/s) - (BURST) - Throttle requests over the maximum configured rate - * DELETE /order - 3000 every 10 minutes (5/s) - Throttle requests over the maximum configured rate - + * DELETE /order - 3000 every 10 minutes (5/s) - Throttle requests over the maximum configured rate) + \ No newline at end of file diff --git a/docs/trading/matching-engine.md b/docs/trading/matching-engine.md index 8327b9a..e3d5d9f 100644 --- a/docs/trading/matching-engine.md +++ b/docs/trading/matching-engine.md @@ -125,7 +125,7 @@ Check the HTTP status code on responses to the CLOB API and retry on `425`: ``` ```rust Rust theme={null} - use polymarket_client_sdk::error::{Kind, StatusCode}; + use polymarket_client_sdk_v2::error::{Kind, StatusCode}; // Wrap SDK calls with retry logic for HTTP 425. // Re-build and re-sign the order each attempt since SignedOrder is consumed. @@ -140,7 +140,7 @@ Check the HTTP status code on responses to the CLOB API and retry on `425`: match client.post_order(signed).await { Ok(response) => return Ok(response), Err(err) if err.kind() == Kind::Status => { - if let Some(status) = err.downcast_ref::() { + if let Some(status) = err.downcast_ref::() { if status.status_code == StatusCode::from_u16(425).unwrap() { eprintln!("Engine restarting, retrying in {delay:?}..."); tokio::time::sleep(delay).await; diff --git a/docs/v2-migration.md b/docs/v2-migration.md index ba40cba..c28c4db 100644 --- a/docs/v2-migration.md +++ b/docs/v2-migration.md @@ -6,14 +6,14 @@ > A complete guide to upgrading your integration to Polymarket's CLOB V2 — new contracts, new backend, new collateral token, and a simpler builder program. -Polymarket is shipping a coordinated upgrade of its entire trading infrastructure: **new Exchange contracts**, a **rewritten CLOB backend**, and a **new collateral token** (Polymarket USD, or pUSD). This guide walks you through everything you need to migrate. +Polymarket has shipped a coordinated upgrade of its entire trading infrastructure: **new Exchange contracts**, a **rewritten CLOB backend**, and a **new collateral token** (Polymarket USD, or pUSD). This guide walks you through everything you need to migrate from CLOB V1 to CLOB V2. - **Go-live: April 28, 2026 (\~11:00 UTC)** — approximately 1 hour of downtime. All open orders will be wiped during the cutover. Make sure your integration is on the V2 SDK before the maintenance window starts. + **CLOB V2 is live as of April 28, 2026.** Legacy V1 SDKs and V1-signed orders are no longer supported on production. Upgrade to the V2 SDK or update your raw order signing before submitting orders to `https://clob.polymarket.com`. - **Test against V2 before go-live.** Point your client at `https://clob-v2.polymarket.com` to start integrating now. On April 28th (\~11:00 UTC), V2 takes over the production URL — `https://clob.polymarket.com` — so you don't need to change the base URL again after the cutover. + **Production URL:** CLOB V2 now runs at `https://clob.polymarket.com`. The pre-cutover `https://clob-v2.polymarket.com` testing host is no longer the integration target for production clients. *** @@ -32,7 +32,7 @@ Polymarket is shipping a coordinated upgrade of its entire trading infrastructur | Exchange `verifyingContract` (raw API signers) | V1 addresses | V2 addresses — see [Contracts](/resources/contracts) | | Raw API order signing | V1 Order type | Updated Order type — [see API users section](#for-api-users) | -**If you're on the latest SDK,** most of this is handled automatically. The hot-swap mechanism detects the cutover and refreshes the client without manual intervention. +**If you're on the latest SDK,** most of this is handled automatically. If you're signing orders manually, update the EIP-712 domain, order fields, and contract addresses described below. *** @@ -44,16 +44,16 @@ Polymarket is shipping a coordinated upgrade of its entire trading infrastructur - Install the V2 SDK: [`@polymarket/clob-client-v2`](https://www.npmjs.com/package/@polymarket/clob-client-v2) (TypeScript) or [`py-clob-client-v2`](https://pypi.org/project/py-clob-client-v2/) (Python). Don't keep using the old `clob-client` / `py-clob-client` packages — those only work against V1 and stop functioning after cutover. + Install the V2 SDK: [`@polymarket/clob-client-v2`](https://www.npmjs.com/package/@polymarket/clob-client-v2) (TypeScript) or [`py-clob-client-v2`](https://pypi.org/project/py-clob-client-v2/) (Python). Don't keep using the old `clob-client` / `py-clob-client` packages — those only work against V1 and no longer function against production. - - The order book is wiped during the maintenance window. Test your integration before the cutover. + + Use a small funded wallet to test market discovery, order signing, posting, cancellation, and settlement behavior end-to-end on production. - **Order book wipe:** All open orders are cancelled as part of the cutover. Plan to re-place orders immediately after the window closes. + **Open orders from before the CLOB V2 cutover were wiped.** If you had resting V1-era orders, they did not migrate and must be re-created with V2 order signing. *** @@ -180,6 +180,8 @@ Order( ### POST /order body +`expiration` is still present in the `POST /order` wire body for GTD/order-expiry handling, but it is **not** part of the V2 EIP-712 signed struct. + ```ts theme={null} { "order": { @@ -190,7 +192,7 @@ Order( "tokenId": "102936...", "makerAmount": "1000000", "takerAmount": "2000000", - "expiration": "0", // [!code --] + "expiration": "0", "nonce": "0", // [!code --] "feeRateBps": "0", // [!code --] "side": "BUY", @@ -231,16 +233,16 @@ CLOB V2 ships under new package names. Install them directly — don't keep usin ```bash TypeScript theme={null} - npm install @polymarket/clob-client-v2@1.0.0 + npm install @polymarket/clob-client-v2 viem ``` ```bash Python theme={null} - pip install py-clob-client-v2==1.0.0 + pip install py-clob-client-v2 ``` - The legacy `@polymarket/clob-client` and `py-clob-client` packages only work against V1 and will stop functioning after the April 28 cutover. + The legacy `@polymarket/clob-client` and `py-clob-client` packages only work against V1 and no longer work against production CLOB V2. @@ -475,23 +477,42 @@ Polymarket USD (pUSD) replaces USDC.e as the collateral token. pUSD is a standar ## Test markets -The following events have liquidity on `clob-v2.polymarket.com` — use them to dry-run your integration end-to-end before go-live. +The markets below were used for pre-cutover testing on `clob-v2.polymarket.com` and are retained for migration reference. For live testing, resolve current active markets into token IDs and metadata with [`gamma-api.polymarket.com/markets?condition_ids=`](https://gamma-api.polymarket.com/markets), then submit small orders to production CLOB V2 at `https://clob.polymarket.com`. -### US / Iran nuclear deal in 2027? +### Markets with fees enabled -* Event: [`gamma-api.polymarket.com/events/73106`](https://gamma-api.polymarket.com/events/73106) -* Orderbook: [`token_id=102936…7216`](https://clob-v2.polymarket.com/book?token_id=102936224134271070189104847090829839924697394514566827387181305960175107677216) +Use these to verify fee handling end-to-end. -### Highest grossing movie in 2026? +* `0xaf5e903876ad42de97e1cf02c2ef8484df69bcfc5541b96a400116557d1e504e` +* `0xe9955a31d76ea97457410f61c9b9f2d27ac6fbd8302ed1849d93133884f4fb3b` +* `0x8e6a263fc5f4dd9433b4ccbc9bb9e0d89f4de8a91d3a82d6b437fe73fd847ea5` +* `0xc7d462e462d8d369aee17c9e3ea8f113166cf9a342a6434a0b2a0f7588dc1bbf` +* `0x0440d08e4f534afa8ad9f616a239a19ebf7f2476bd802b1d54180435fa83463f` +* `0xd048b3e9ccad82c57a4eec953e75794aeb5e6d0e08bdb79b9e01b24e0049f16d` +* `0x88310713845c54e36f29791a1c2dc172b9819b645ba82d5f87560805cd2bb788` +* `0xffcab88076a28795281bb07a082c7003a4ff5671420086cb16ec09dfbf9aea68` +* `0x64a5bcfb0c76a75081c8be49c895a976d506fce8d21aa9d73f1099e502f2fa4e` +* `0x8babe4f4d0eff732d660fa02929a581cb8478ed2a1696c158290b2794d3d7ac0` -* Event: [`gamma-api.polymarket.com/events/79831`](https://gamma-api.polymarket.com/events/79831) -* Orderbooks: - * [`token_id=81662…2777`](https://clob-v2.polymarket.com/book?token_id=81662326158871781857247725348568394697379926716334270967994039975048021832777) - * [`token_id=17546…1707`](https://clob-v2.polymarket.com/book?token_id=17546146554206665273662853938002443411871542020107489725107067382874986311707) - * [`token_id=28161…2479`](https://clob-v2.polymarket.com/book?token_id=28161183422242370392388296744035422249088647252796713903067039294971789722479) - * [`token_id=89576…4694`](https://clob-v2.polymarket.com/book?token_id=89576274136595202327975910079635847102293810595609428633134997662847357374694) - * [`token_id=21556…6607`](https://clob-v2.polymarket.com/book?token_id=21556669163785052148858748369786715040594704429426952390307023288865165566607) - * [`token_id=51020…2516`](https://clob-v2.polymarket.com/book?token_id=51020513216536535954567404775362000484668846352577848437115610667663875702516) +### Additional markets with liquidity + +* `0xcf8a237df51a51511c4f96bb4390480ad72b898ca8ec7e9a3c16c47c8e5e468a` +* `0x242d251e7e804f79e1f237896b0f5e73caea72375dcb84e5a60d1cd0d2f80ef5` +* `0x9c47ba9e666983bd8d82bfab790509153bf7756c43913f6ef269e33c8955939c` +* `0x221aaa62fed17db56fbc7983f88110a9c34861c3262154ee3315425378e3ae12` +* `0x625d0091f4c647e5497bd9b03f8526bd486d6c339380b8046e4dd5b3373046b7` +* `0xc9b9f89ac915385c8d77edb73872c49e5bf76e510b74b9609e74e7f8d0339df2` +* `0xde9f827cb2d568db7801439693645a941a38fe6feaeb08b86087ad367d991704` +* `0xfd029ab3d6d27b6e1f3480dce858c97fb12e5bebd6fb50be7520102c56ba8ce1` +* `0x894a61a2baa777adf1d03a263a4b2d8faa7e1ebc7bf6694a37701fae8add01d9` +* `0xcd57f3ad3bbbdaa96aacabd35f50c2d6e30f777e4a33876a4ab2dcd9f0b8c170` +* `0xc4b07998e8f9bf6b95f079d6dc0529f3c6f59698d4e168817ad5f99304de6c57` +* `0xe4f4b614a6c2b4ecd8eb700d19c0e6533d3fbd1bc28193b2255394ef74006e6f` +* `0xec181db4470b152493b58229862af3f6335b77cc719f5a0e7ed58c9f9848b992` +* `0x6ec4fec4885df7f3ac46e5d0051beb6d8ac75de6a8481f13f245ff26dcb4b662` +* `0x8f6e71601903224dc29c69b886a63f248c8051be259e7db299850708f1f86dd6` +* `0xfa40b5612a905f16ee42a18979f23fa1bbfcfc365f11d168f2e22bd0159ada77` +* `0x182390641d3b1b47cc64274b9da290efd04221c586651ba190880713da6347d9` *** @@ -534,9 +555,9 @@ Work through this list as you update your integration: - * [ ] Test full order lifecycle on preprod + * [ ] Test the full order lifecycle with small production orders * [ ] Verify builder attribution appears on the [Builder Leaderboard](https://builders.polymarket.com) - * [ ] Plan for order book wipe — all open orders must be re-placed after migration + * [ ] Re-create any pre-cutover resting orders with V2 signing @@ -544,17 +565,17 @@ Work through this list as you update your integration: ## Cutover day -**Go-live: April 28, 2026 (\~11:00 UTC).** The migration involves approximately **1 hour of downtime** during which trading is paused. +**Go-live occurred on April 28, 2026 (\~11:00 UTC).** The migration involved approximately **1 hour of downtime** during which trading was paused. **During the window:** -* All open orders are wiped. You must re-place orders after the migration completes. -* The SDK's **hot-swap mechanism** queries a version endpoint and auto-refreshes when V2 goes live. -* If you're on the latest V2 SDK, **no manual intervention is needed during the cutover.** +* All open orders were wiped. Any pre-cutover resting orders must be re-placed with V2 signing. +* The SDK's **hot-swap mechanism** queried a version endpoint and auto-refreshed when V2 went live. +* Clients already on the latest V2 SDK did not require manual intervention during the cutover. -**If your integration is on the V1 SDK after migration, it will stop working.** There is no backward compatibility. +**If your integration is still on the V1 SDK, it will not work against production CLOB V2.** There is no backward compatibility. -Follow [Discord](https://discord.gg/polymarket), Telegram, and [status.polymarket.com](https://status.polymarket.com) for the exact maintenance window start time. The window is scheduled to avoid large market resolutions. +Follow [Discord](https://discord.gg/polymarket), Telegram, and [status.polymarket.com](https://status.polymarket.com) for operational updates and incident notices. *** @@ -566,11 +587,11 @@ Follow [Discord](https://discord.gg/polymarket), Telegram, and [status.polymarke - No — all open orders are wiped during the maintenance window. Re-place them after the window closes. + No — open orders from before the CLOB V2 cutover were wiped. Re-place them with V2 signing. - Your V1 client will fail against the V2 backend after cutover. There is no backward compatibility — upgrade before the maintenance window ends. + Your V1 client will fail against the V2 backend. There is no backward compatibility — upgrade before submitting production orders.