---
title: "Place Order"
method: POST
path: "/workflows/polymarket/placeOrder"
tags: ["Polymarket"]
---

# Place Order

`POST /workflows/polymarket/placeOrder`

Places a market order (BUY or SELL) directly against the Polymarket CLOB on behalf of the user, using their pre-funded proxy wallet.

This endpoint always requires an EIP-712 `signatureByEvmEoa` produced by the user's EOA — see the [Polymarket Signing Guide](../polymarket-signing). The endpoint submits the order synchronously and returns `{ txId, orderResponse }` so callers can poll workflow status.

## Request body

- object
  - `evmEoa` string, required — EVM address (0x prefix + 40 hex characters)
  - `proxyWallet` string — EVM address (0x prefix + 40 hex characters)
  - `orderRequest` object, required
    - `side` 'BUY' | 'SELL', required — Order side
    - `tokenID` string, required — Polymarket CLOB token ID of the outcome to trade
    - `orderType` 'FOK' | 'FAK', required — Order type - Fill-Or-Kill (FOK) or Fill-And-Kill (FAK)
    - `tickSize` string, required — Tick size from the market details (e.g., '0.01')
    - `negRisk` boolean, required — Negative risk flag from the market details
    - `amount` number, required — Order amount in USD (must be a positive number)
    - `slippage` number, required — Slippage tolerance in basis points
  - `expiration` integer, required — Unix timestamp (seconds) when `signatureByEvmEoa` expires. Must be in the future and ≤ 300s ahead.
  - `signatureByEvmEoa` string, required — Hex string with 0x prefix

## Response `200`

Order placed successfully

- object
  - `txId` string — Box transaction ID for the order workflow
  - `orderResponse` object
    - `success` boolean — Whether the order was accepted
    - `errorMsg` string — Error message if the order failed (empty string if successful)
    - `orderID` string — Unique Polymarket order ID
    - `transactionsHashes` string[] — Array of on-chain transaction hashes produced by the order
    - `status` string — Order status (e.g. 'matched', 'LIVE')
    - `takingAmount` string — Amount of the counter asset taken in (USDC for BUY, outcome tokens for SELL)
    - `makingAmount` string — Amount of the offered asset (USDC for BUY, outcome tokens for SELL)

## Other responses

- `400` — Bad request due to missing or invalid parameters
- `401` — Unauthorized - Invalid or missing API key, or invalid/expired `signatureByEvmEoa`
- `500` — Internal server error

---

[API](https://skmtc.dev/swaps/apis/prediction-market-data-api.md) · [All operations](https://skmtc.dev/swaps/apis/prediction-market-data-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/swaps/prediction-market-data-api/revisions/03e917d60cb7/schema)
