Polymarket API reference / Relayer API
POST/submit

Submit a transaction

Submit a transaction request to the Relayer. Authenticated using Builder API Keys or Relayer API Keys. Returns immediately with the `transactionID` and a `state` of `STATE_NEW`. The onchain transaction hash is **not** included in this response — poll `GET /transaction` with the returned `transactionID` to retrieve the `transactionHash` once the transaction has been broadcast.

Base URL
https://relayer-v2.polymarket.com
Auth
Builder or Relayer API key headersPOLY_BUILDER_API_KEY, POLY_BUILDER_TIMESTAMP, POLY_BUILDER_PASSPHRASE, POLY_BUILDER_SIGNATURE, RELAYER_API_KEY, RELAYER_API_KEY_ADDRESSAuthenticated using Builder API Keys or Relayer API Keys.
Rate limit
25 req / 1 min
Limit applies to
Relayer /submit

Parameters

NameInTypeRequiredDescription
POLY_BUILDER_API_KEYheaderstringnoBuilder API key (when using Builder API Key auth)
POLY_BUILDER_TIMESTAMPheaderstringnoUnix timestamp (when using Builder API Key auth)
POLY_BUILDER_PASSPHRASEheaderstringnoBuilder passphrase (when using Builder API Key auth)
POLY_BUILDER_SIGNATUREheaderstringnoHMAC-SHA256 signature (when using Builder API Key auth)
RELAYER_API_KEYheaderstringnoRelayer API key (when using Relayer API Key auth)
RELAYER_API_KEY_ADDRESSheaderstringnoAddress that owns the key (when using Relayer API Key auth)

Request body

FieldTypeRequiredDescription
fromstringyesEthereum address (0x-prefixed, 40 hex chars)
tostringyesEthereum address (0x-prefixed, 40 hex chars)
proxyWalletstringyesEthereum address (0x-prefixed, 40 hex chars)
datastringyesEncoded transaction data (0x-prefixed hex string)
noncestringyesTransaction nonce
signaturestringyesTransaction signature (0x-prefixed hex string)
signatureParamsobjectyes
typestringyesTransaction type

Example

curl -X POST "https://relayer-v2.polymarket.com/submit" \
  -H "Content-Type: application/json" \
  -H "POLY_BUILDER_API_KEY: $POLY_BUILDER_API_KEY" \
  -H "POLY_BUILDER_TIMESTAMP: $POLY_BUILDER_TIMESTAMP" \
  -H "POLY_BUILDER_PASSPHRASE: $POLY_BUILDER_PASSPHRASE" \
  -H "POLY_BUILDER_SIGNATURE: $POLY_BUILDER_SIGNATURE" \
  -H "RELAYER_API_KEY: $RELAYER_API_KEY" \
  -H "RELAYER_API_KEY_ADDRESS: $RELAYER_API_KEY_ADDRESS" \
  -d '{
  "from": "<from>",
  "to": "<to>",
  "proxyWallet": "<proxyWallet>",
  "data": "<data>",
  "nonce": "<nonce>",
  "signature": "<signature>",
  "signatureParams": {},
  "type": "<type>"
}'

Response fields

FieldTypeDescription
transactionIDstringUnique identifier for the submitted transaction
statestringCurrent state of the transaction

Responses

StatusMeaning
200Transaction submitted successfully
400Bad Request - Invalid transaction payload, fields, or signature
401Unauthorized - Invalid authentication
429Too Many Requests - Quota exceeded
500Server Error
Polymarket's API serves current state only, so it cannot show what a market's book looked like after it resolved. PolyTest records Up/Down markets while they run and keeps the snapshots. Try it free, or read the full rate limit reference.

From Polymarket's published OpenAPI spec and rate-limit tables, synced 2026-10-04.