Yes! Developers can find all the information they need for interacting with Polymarket. This includes documentation on market discovery, resolution, trading etc.
Whether you are an academic researcher a market maker or an indepedent developer, this documentation should provide you what you need to get started. All the code you find linked here and on our GitHub is open source and free to use.
If you have any questions please join our Discord and direct your questions to the #devs channel.

-
-
-
-
-## Token Identifiers
-
-Each outcome token has a unique **position ID** (also called token ID or asset ID), computed onchain in three steps.
-
-### Step 1 - Condition ID
-
-```
-getConditionId(oracle, questionId, outcomeSlotCount)
-```
-
-| Parameter | Type | Value |
-| ------------------ | --------- | ---------------------------------------------------------------- |
-| `oracle` | `address` | [UMA CTF Adapter](https://github.com/Polymarket/uma-ctf-adapter) |
-| `questionId` | `bytes32` | Hash of the UMA ancillary data |
-| `outcomeSlotCount` | `uint` | `2` for all binary markets |
-
-### Step 2 - Collection IDs
-
-```
-getCollectionId(parentCollectionId, conditionId, indexSet)
-```
-
-| Parameter | Type | Value |
-| -------------------- | --------- | --------------------------------------------------------------- |
-| `parentCollectionId` | `bytes32` | `bytes32(0)` — always zero for top-level positions |
-| `conditionId` | `bytes32` | The condition ID from step 1 |
-| `indexSet` | `uint` | `1` (`0b01`) for the first outcome, `2` (`0b10`) for the second |
-
-The `indexSet` is a bitmask denoting which outcome slots belong to a collection. It must be a nonempty proper subset of the condition's outcome slots. Binary markets always have exactly two collections — one per outcome.
-
-### Step 3 - Position IDs
-
-```
-getPositionId(collateralToken, collectionId)
-```
-
-| Parameter | Type | Value |
-| ----------------- | --------- | ----------------------------------------- |
-| `collateralToken` | `IERC20` | pUSD contract address on Polygon |
-| `collectionId` | `bytes32` | One of the two collection IDs from step 2 |
-
-The two resulting position IDs are the ERC1155 token IDs for the Yes and No outcomes of the market.
-
-
-
-
-
-
-## Markets
-
-A **market** is the fundamental tradable unit on Polymarket. Each market represents a single binary question with Yes/No outcomes.
-
-
-
-
-
-
-
-Every market has:
-
-| Identifier | Description |
-| ---------------- | ------------------------------------------------------------------------ |
-| **Condition ID** | Unique identifier for the market's condition in the CTF contracts |
-| **Question ID** | Hash of the market question used for resolution |
-| **Token IDs** | ERC1155 token IDs used for trading on the CLOB — one for Yes, one for No |
-
-
-
-
-
-
-## Resolution Rules
-
-Every market has pre-defined resolution rules that specify:
-
-* **Resolution source** — Where the outcome will be determined from (e.g., official announcements, specific websites)
-* **End date** — When the market is eligible for resolution
-* **Edge cases** — How ambiguous situations should be handled
-
-




-
-
-
-
-## Prices Are Probabilities
-
-Every share on Polymarket is priced between `$0.00` and `$1.00`. The price directly represents the market's belief in the probability of that outcome.
-
-| Price | Implied Probability |
-| ------ | ------------------- |
-| \$0.25 | 25% chance |
-| \$0.50 | 50% chance |
-| \$0.75 | 75% chance |
-
-
-
-
-
-
-This design gives you the speed of centralized matching with the security of onchain settlement. You always maintain custody of your funds.
-
-## Price Discovery
-
-When a new market launches, there's no initial price. The first price emerges when:
-
-1. Someone places a limit order to buy Yes at a price (e.g., `$0.60`)
-2. Someone places a limit order to buy No at the complementary price (e.g., `$0.40`)
-3. Since `$0.60` + `$0.40` = `$1.00`, the orders match
-
-When matched, `$1.00` is converted into 1 Yes token and 1 No token, each going to their respective buyers.
-
-## Next Steps
-
-