125470b24a
Synced from github/main: aebcfa2d copybot: live paper feed [skip ci]
Our additions: serve_dashboard.py, bot_dashboard.html, mihomo-healthcheck.sh,
中文文档, 我们的钱包配置
16 KiB
16 KiB
Documentation Index
Fetch the complete documentation index at: https://docs.polymarket.com/llms.txt Use this file to discover all available pages before exploring further.
Submit a quote
Submit a signed maker quote for an active RFQ. Requires CLOB L2 authentication for the maker role.
REST does not assign a quote ID — generate quote_id client-side.
OpenAPI
openapi: 3.1.0
info:
title: Polymarket Combinatorial RFQ API
description: >
REST API for the combinatorial RFQ (Request for Quote) system.
This spec covers the publicly documented endpoints used by quoters (market
makers): the combo-market catalog and the authenticated maker commands for
submitting, cancelling, and confirming quotes.
Conventions:
- All `*_e6` fields are six-decimal fixed-point values encoded as
**strings**
to avoid number precision issues.
- All timestamps are **Unix milliseconds** (integer); zero/omitted means
unset.
- Errors return an HTTP status code with a body of the form `{ "error":
"..." }`.
license:
name: MIT
identifier: MIT
version: 1.0.0
servers:
- url: https://combos-rfq-api.polymarket.com
description: Production combinatorial RFQ API
security: []
tags:
- name: Combo Markets
description: Public catalog of markets that can be used as combo legs
- name: Maker
description: Authenticated quoter (maker) commands
paths:
/v1/maker/quotes:
post:
tags:
- Maker
summary: Submit a quote
description: |
Submit a signed maker quote for an active RFQ. Requires CLOB L2
authentication for the maker role.
REST does not assign a quote ID — generate `quote_id` client-side.
operationId: submitMakerQuote
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Quote'
example:
quote_id: quote_<id>
rfq_id: rfq_<id>
signer_address: 0xYourSigner
maker_address: 0xYourQuoterWallet
signature_type: 0
price_e6: '450000'
size_e6: '1000000'
signed_order:
salt: <order_salt>
maker: 0xYourQuoterWallet
signer: 0xYourSigner
tokenId: <yes_or_no_position_id>
makerAmount: <amount_to_pay>
takerAmount: <taker_amount>
side: 0
signatureType: 0
timestamp: <unix_seconds>
metadata: >-
0x0000000000000000000000000000000000000000000000000000000000000000
builder: >-
0x0000000000000000000000000000000000000000000000000000000000000000
signature: 0x...
responses:
'200':
description: Current RFQ snapshot after the quote was accepted
content:
application/json:
schema:
$ref: '#/components/schemas/RFQSnapshot'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'404':
$ref: '#/components/responses/NotFound'
'409':
$ref: '#/components/responses/Conflict'
'429':
$ref: '#/components/responses/TooManyRequests'
'503':
$ref: '#/components/responses/ServiceUnavailable'
security:
- polyApiKey: []
polyAddress: []
polySignature: []
polyPassphrase: []
polyTimestamp: []
components:
schemas:
Quote:
type: object
description: A signed maker quote.
properties:
quote_id:
type: string
description: Maker-generated quote ID (required for REST submissions).
example: quote_<id>
rfq_id:
type: string
description: RFQ ID from the `RFQ_REQUEST`.
example: rfq_<id>
auth_address:
type: string
description: Derived from the authenticated session; ignored if provided.
readOnly: true
signer_address:
type: string
example: 0xYourSigner
maker_address:
type: string
example: 0xYourQuoterWallet
signature_type:
$ref: '#/components/schemas/SignatureType'
price_e6:
type: string
description: Quote price in six-decimal fixed-point units (must be positive).
example: '450000'
size_e6:
type: string
description: >
Fillable share count in six-decimal fixed-point units (must be
positive).
Note this differs from the request's size field, which may be
notional or shares.
example: '1000000'
valid_until:
type: integer
format: int64
description: Optional quote expiry in Unix milliseconds.
signed_order:
$ref: '#/components/schemas/ExchangeV3Order'
received_at:
type: integer
format: int64
description: Server-assigned receipt time in Unix milliseconds.
readOnly: true
required:
- quote_id
- rfq_id
- signer_address
- maker_address
- signature_type
- price_e6
- size_e6
- signed_order
RFQSnapshot:
type: object
description: Point-in-time view of an RFQ and its competition/confirmation windows.
properties:
request:
$ref: '#/components/schemas/RFQRequest'
status:
$ref: '#/components/schemas/RFQStatus'
competition_started_at:
type: integer
format: int64
description: Unix milliseconds.
competition_ends_at:
type: integer
format: int64
description: Unix milliseconds.
confirmation_started_at:
type: integer
format: int64
description: Unix milliseconds.
confirmation_ends_at:
type: integer
format: int64
description: Unix milliseconds.
quote_id:
type: string
bundle:
$ref: '#/components/schemas/FillBundle'
maker_confirmations:
type: array
items:
$ref: '#/components/schemas/MakerConfirmationSnapshot'
required:
- request
- status
SignatureType:
type: integer
description: |
CLOB signature type:
- `0` EOA
- `1` POLY_PROXY
- `2` GNOSIS_SAFE
- `3` POLY_1271
enum:
- 0
- 1
- 2
- 3
example: 0
ExchangeV3Order:
type: object
description: >-
Signed Exchange v3 order. Combinatorial RFQ trades settle through
Exchange v3.
properties:
salt:
type: string
description: Order salt (uint256 as a decimal string)
maker:
type: string
description: Wallet that funds the order
example: 0xYourQuoterWallet
signer:
type: string
description: Address that signs the order
example: 0xYourSigner
tokenId:
type: string
description: YES or NO combo position ID (uint256 as a decimal string)
makerAmount:
type: string
description: >-
Amount the maker pays, in six-decimal base units (uint256 as a
string)
takerAmount:
type: string
description: >-
Amount the maker receives, in six-decimal base units (uint256 as a
string)
side:
type: integer
description: Order side — `0` BUY, `1` SELL
enum:
- 0
- 1
signatureType:
$ref: '#/components/schemas/SignatureType'
timestamp:
type: string
description: Order timestamp in Unix seconds (as a string)
metadata:
type: string
description: 32-byte hex field; defaults to the zero value
example: '0x0000000000000000000000000000000000000000000000000000000000000000'
builder:
type: string
description: 32-byte hex field; defaults to the zero value
example: '0x0000000000000000000000000000000000000000000000000000000000000000'
signature:
type: string
description: EIP-712 signature over the order
example: 0x...
required:
- salt
- maker
- signer
- tokenId
- makerAmount
- takerAmount
- side
- signatureType
- timestamp
- signature
RFQRequest:
type: object
description: The RFQ request as stored by the engine.
properties:
rfq_id:
type: string
auth_address:
type: string
signer_address:
type: string
maker_address:
type: string
signature_type:
$ref: '#/components/schemas/SignatureType'
requestor_public_id:
type: string
leg_position_ids:
type: array
items:
type: string
condition_id:
type: string
yes_position_id:
type: string
no_position_id:
type: string
direction:
$ref: '#/components/schemas/Direction'
side:
$ref: '#/components/schemas/Side'
requested_size:
$ref: '#/components/schemas/RequestedSize'
created_at:
type: integer
format: int64
description: Creation time in Unix milliseconds.
required:
- rfq_id
- leg_position_ids
- direction
- side
RFQStatus:
type: string
description: Lifecycle status of the RFQ
enum:
- CREATED
- COLLECTING_QUOTES
- AWAITING_REQUESTER_ACCEPTANCE
- AWAITING_MAKER_CONFIRMATION
- EXECUTING
- FILLED
- FAILED
- EXPIRED
- CANCELED
- REJECTED
FillBundle:
type: object
description: The selected executable bundle of maker allocations.
properties:
requested_shares_e6:
type: string
description: Requested share size in six-decimal fixed-point units.
requested_notional_e6:
type: string
description: Requested notional in six-decimal fixed-point units (BUY RFQs only).
blended_price_e6:
type: string
description: Blended bundle price in six-decimal fixed-point units.
allocations:
type: array
items:
$ref: '#/components/schemas/FillAllocation'
required:
- requested_shares_e6
- blended_price_e6
- allocations
MakerConfirmationSnapshot:
type: object
properties:
quote_id:
type: string
signer_address:
type: string
maker_address:
type: string
decision:
type: string
enum:
- CONFIRM
- DECLINE
- TIMED_OUT
reason:
type: string
responded_at:
type: integer
format: int64
description: Response time in Unix milliseconds.
required:
- quote_id
- signer_address
- maker_address
ErrorResponse:
type: object
properties:
error:
type: string
description: Human-readable error detail
required:
- error
Direction:
type: string
description: Requester trade direction
enum:
- BUY
- SELL
Side:
type: string
description: Combinatorial position side. Currently only `YES` is supported.
enum:
- 'YES'
- 'NO'
RequestedSize:
type: object
description: Requested RFQ size and unit
properties:
unit:
type: string
description: >
`notional` for requester BUY RFQs and `shares` for requester SELL
RFQs.
enum:
- notional
- shares
value_e6:
type: string
description: Six-decimal fixed-point value encoded as a string.
example: '1000000'
required:
- unit
- value_e6
FillAllocation:
type: object
properties:
maker_quote_id:
type: string
signer_address:
type: string
maker_address:
type: string
size_e6:
type: string
description: >-
Accepted fill size for this maker quote, in six-decimal fixed-point
units.
price_e6:
type: string
description: Fill price in six-decimal fixed-point units.
received_at:
type: integer
format: int64
description: Receipt time in Unix milliseconds.
required:
- maker_quote_id
- signer_address
- maker_address
- size_e6
- price_e6
responses:
BadRequest:
description: >-
Invalid request (malformed JSON, invalid parameters, or failed
validation)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: invalid quote
Unauthorized:
description: Missing or invalid CLOB L2 authentication
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: unauthenticated
Forbidden:
description: >-
Authenticated identity does not match the request, or role is not
allowed
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: auth address mismatch
NotFound:
description: The referenced RFQ is not active or no longer exists
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: unknown rfq
Conflict:
description: The RFQ is not in a state that accepts this command
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: competition window closed
TooManyRequests:
description: Rate limited
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: rate limited
ServiceUnavailable:
description: An RFQ service dependency is temporarily unavailable
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
error: service unavailable
securitySchemes:
polyApiKey:
type: apiKey
in: header
name: POLY_API_KEY
description: CLOB API key
polyAddress:
type: apiKey
in: header
name: POLY_ADDRESS
description: Wallet address associated with the API key
polySignature:
type: apiKey
in: header
name: POLY_SIGNATURE
description: HMAC-SHA256 signature of the request
polyPassphrase:
type: apiKey
in: header
name: POLY_PASSPHRASE
description: CLOB API key passphrase
polyTimestamp:
type: apiKey
in: header
name: POLY_TIMESTAMP
description: Unix timestamp of the request