Polymarket Place Bet logo

Catalog action EVM Onchain wallet send

Place a bet (order) on Polymarket prediction markets. Supports BUY/SELL orders with GTC, FOK, or FAK order types. Flexible pricing modes: market, limit, or copy from variables. Ideal for: automated trading strategies, event-based betting, portfolio diversification, prediction market arbitrage.

This action can require a wallet connector, gas, token movement, or an external side effect. Test with simulation or a controlled amount before using it in a live workflow.

At a Glance

FieldValue
Action IDpolymarket-place-bet
CategoryEVM Onchain
Connectorwallet
Requires gasNo
Funds movementsend
Tagspolymarket, trading, defi, write

Payload Schema

FieldTypeRequiredDescription
modestringNoMode of operation. 'manual' for selecting a specific market/outcome, 'copy' for copying trades from a trigger with all fields from variables.
marketUrlstringNoPolymarket event URL (e.g., https://polymarket.com/event/bitcoin-up-or-down-january-14-2am-et\). When provided, the action will fetch market data and use the specified outcome to determine the token ID.
outcomestringNoThe outcome to bet on (e.g., "Up", "Down", "Yes", "No"). Required when using marketUrl. Must match one of the available outcomes in the market.
tokenIdstringNoThe CLOB token ID (numeric string) representing the specific outcome to bet on. Alternative to marketUrl+outcome — provide either tokenId OR marketUrl+outcome.
groupOutcomestringNoFor multi-market events: the selected sub-market question text. Used during execution to disambiguate between sub-markets when resolving tokenId from marketUrl+outcome (e.g., grouped binary events where all outcomes are Yes/No).
tokenIdVariablestringNoVariable reference for the token ID in copy mode (e.g., {{root.result.trade.tokenId}}). The value will be resolved at runtime.
sideVariablestringNoVariable reference for the side (BUY/SELL) in copy mode (e.g., {{root.result.trade.side}}). The value will be resolved at runtime.
sidestringNoBUY to bet on an outcome, SELL to bet against or exit a position.
amountModestringNoHow to determine the bet amount. 'fixed' uses a static value, 'proportional' uses a variable with multiplier.
fixedAmountstringNoFixed bet amount in pUSD smallest units (6 decimals). e.g. "10000000" = $10. Minimum: $1 for market orders, $5 for limit orders.
dynamicAmountstring | numberNoVariable reference or resolved value for the amount when amountMode is 'proportional'.
multipliernumberNoMultiplier applied to dynamicAmount amount (e.g., 0.5 for half, 2 for double).
minAmountnumberNoMinimum bet amount when using copy mode. Final amount will be clamped to this floor.
maxAmountnumberNoMaximum bet amount when using copy mode. Final amount will be clamped to this ceiling.
priceModestringNoHow to determine the price. 'market' uses current market price, 'limit' uses a fixed price, 'copy' uses a variable.
pricenumberNoPrice per share between 0.01 and 0.99. Maps from limitPrice in limit mode.
limitPricenumberNoLimit price per share (used when priceMode is 'limit'). Represents probability between 0.01 and 0.99.
copyPriceVariablestring | numberNoVariable reference or resolved value for the price when priceMode is 'copy'.
orderTypestringNoOrder type: GTC (Good Till Cancelled), GTD (Good Till Date — requires expiration), FOK (Fill Or Kill), FAK (Fill And Kill). Default is FAK for market orders.
expirationstringNoUnix timestamp for order expiration. Required when orderType is 'GTD'. The order will be automatically cancelled after this time.
postOnlybooleanNoIf true, the limit order will only be placed as a maker order (sits on the book). If it would immediately match, the order is rejected instead of filling as a taker. Only valid for GTC/GTD order types. Maker orders have zero fees.
metadatastringNoOptional bytes32 metadata tag for the order. Can be used for strategy tagging, workflow attribution, or downstream analytics.

Result Schema

FieldTypeRequiredDescription
statusstringYesStatus of the bet placement operation. 'filled'/'matched' indicates immediate fill for market orders.
orderIdstringNoThe unique identifier for the placed order
tokenIdstringNoThe token ID that was bet on
sidestringNoThe side of the order
pricenumberNoThe price per share
sizenumberNoThe size of the order in shares. Always present — use this instead of order-type-specific fields (sizeMatched, takingAmount) in downstream workflow nodes.
filledSizenumberNoUnified field: amount of the order that was filled (shares). Always present — works for both market and limit orders. Prefer over sizeMatched/takingAmount.
orderTypestringNoThe type of order placed (GTC, GTD, FAK, FOK)
createdAtstringNoTimestamp when the order was created
transactionHashstringNoOn-chain transaction hash for market orders that settled immediately
tradeIdsarrayNoArray of trade IDs for matched/filled orders
takingAmountnumberNoRaw API field for market orders ONLY (FAK/FOK): number of shares received. NOT present for limit orders — use filledSize instead.
makingAmountnumberNoRaw API field for market orders ONLY (FAK/FOK): USDC amount spent. NOT present for limit orders — use size instead.
sizeMatchednumberNoRaw API field for limit orders ONLY (GTC): number of shares matched. NOT present for market orders — use filledSize instead.
amountSpentnumberNoUnified field: actual USDC amount spent on this order. Always present — works for both market and limit orders. For BUY orders: equals makingAmount (market) or filledSize × price (limit). For SELL orders: 0 (sells are exits, not outflow). Use this for budget tracking instead of the trigger's trade.amount.
questionstringNoThe market question (e.g. 'Will Bitcoin reach $100K?'). Populated when resolved from marketUrl.
messagestringNoOptional message with additional context about the order result

Examples

json
{ "type": "polymarket-place-bet", "payload": { "mode": "manual", "marketUrl": "https://example.com/webhook", "outcome": "example-outcome", "tokenId": "1", "groupOutcome": "example-groupOutcome" }, "children": [], "connector": { "type": "wallet", "id": "conn_wallet" }}

Payload fields can use workflow expressions such as {{$trigger.body.amount}}, {{$nodes.fetch.result.price}}, and {{$props.asset}} when the value should come from a trigger, prior node, or reusable workflow prop.

Ask a question... ⌘I