Overview
The RFQ (Request for Quote) system enables quote-based trade execution by allowing users to request prices from market makers.
The RFQ system is currently in early alpha and requires onboarding. Contact [email protected] to request access.
Roles
Requesters
- Create Requests: unsigned intents to buy or sell outcome tokens
- Anyone may originate Requests from the Polymarket site or API
Quoters (Market Makers)
- Respond to Requests with Quotes: unsigned intents to fill those Requests
- Must be onboarded into the RFQ system by address
- Compete to offer the best price
High-Level Lifecycle
-
Requester creates a Request to BUY or SELL outcome tokens
- This initiates an auction to the community of Quoters
-
Quoter A creates a Quote responding to the Request
-
Quoter B submits a better Quote (e.g., cheaper price)
-
Requester selects and accepts a Quote
- An Order is automatically created, which the Requester signs
- A timer begins: the Quoter must approve within the defined window
-
Selected Quoter has last look
- If approved: another Order is created, which the Quoter signs
- If not approved within timeframe: RFQ is rejected
-
If approved: RFQ is executed onchain
System Parameters
The RFQ API is live at https://clob.polymarket.com/rfq
| Parameter | Value | Description |
|---|
| Last Look | Enabled | Quoters have a final decision window before committing |
| RequestTTL | 10 minutes | How long a Request is live before auto-expiration |
| QuoteAcceptTTL | 10 seconds | Time for Quoter to approve after Requester accepts |
| MultiRequestEnabled | false | Requester can only have 1 active Request at a time |
| QuoteRestrictionMode | OneQuotePerRequestPerMarket | Quoter can only have 1 active Quote per market |
These parameters may change as the system progresses out of alpha.
State Transitions
Request States
| State | Description |
|---|
STATE_ACCEPTING_QUOTES | Request is live, accepting quotes from market makers |
STATE_QUOTE_ACCEPTED | Requester accepted a quote, waiting for Quoter approval |
STATE_MAKER_ORDER_APPROVED | Quoter approved, pending onchain execution |
STATE_COMPLETED | Successfully executed onchain |
STATE_USER_CANCELED | Requester canceled the request |
STATE_INTERNAL_CANCELED | System canceled the request |
STATE_REQUEST_EXPIRED | Request TTL expired |
STATE_REQUEST_EXECUTION_FAILED | Onchain execution failed |
Quote States
| State | Description |
|---|
STATE_REQUEST_QUOTED | Quote submitted, waiting for Requester decision |
STATE_REQUEST_ACCEPTED_QUOTE | Requester accepted this quote, last look timer started |
STATE_MAKER_APPROVED | Quoter approved, pending execution |
STATE_COMPLETED | Successfully executed |
STATE_MAKER_CANCELED | Quoter canceled their quote |
STATE_REQUEST_CANCELED | Parent request was canceled |
STATE_REQUEST_EXPIRED | Parent request expired |
STATE_EXECUTION_FAILED | Onchain execution failed |
STATE_MAKER_REJECTED_CANCELED | Quoter rejected during last look |
STATE_MAKER_REJECTED_EXPIRED | Quoter did not respond during last look window |
Authentication
All RFQ endpoints use L2 Auth from the Polymarket CLOB API. See CLOB Authentication for details on generating and using API credentials.
Next Steps