Warning
This repository has been archived and is no longer maintained.
The client is no longer functional and should not be used for new or existing integrations.
Please migrate to the V2 client: https://github.com/Polymarket/clob-client-v2
Typescript client for the Polymarket CLOB
// npm install @polymarket/clob-client
// npm install ethers
// Client initialization example and dumping API Keys
import { ApiKeyCreds, ClobClient, OrderType, Side, } from "@polymarket/clob-client";
import { Wallet } from "@ethersproject/wallet";
const host = 'https://clob.polymarket.com';
const funder = ''; // This is your Polymarket Profile Address, where you send UDSC to.
const signer = new Wallet(""); // This is your Private Key. If using email login export from https://reveal.magic.link/polymarket otherwise export from your Web3 Application
// In general don't create a new API key, always derive or createOrDerive
const creds = new ClobClient(host, 137, signer).createOrDeriveApiKey();
//0: Browser Wallet(Metamask, Coinbase Wallet, etc)
//1: Magic/Email Login
const signatureType = 1;
(async () => {
const clobClient = new ClobClient(host, 137, signer, await creds, signatureType, funder);
const resp2 = await clobClient.createAndPostOrder(
{
tokenID: "", //Use https://docs.polymarket.com/developers/gamma-markets-api/get-markets to grab a sample token
price: 0.01,
side: Side.BUY,
size: 5,
},
{ tickSize: "0.001",negRisk: false }, //You'll need to adjust these based on the market. Get the tickSize and negRisk T/F from the get-markets above
//{ tickSize: "0.001",negRisk: true },
OrderType.GTC,
);
console.log(resp2)
})();See examples for more information
import { ClobClient } from "@polymarket/clob-client";
import { createWalletClient, http } from "viem";
import { polygon } from "viem/chains";
import { privateKeyToAccount } from "viem/accounts";
const host = "https://clob.polymarket.com";
const account = privateKeyToAccount("0x...");
const walletClient = createWalletClient({
account,
chain: polygon,
transport: http(),
});
const clobClient = new ClobClient(host, 137, walletClient);By default, API errors are returned as { error: "...", status: ... } objects. To have the client throw errors instead, pass throwOnError: true as the last constructor argument:
import { ClobClient, ApiError } from "@polymarket/clob-client";
const clobClient = new ClobClient(
host, 137, signer, await creds, signatureType, funder,
undefined, // geoBlockToken
undefined, // useServerTime
undefined, // builderConfig
undefined, // getSigner
undefined, // retryOnError
undefined, // tickSizeTtlMs
true, // throwOnError
);
try {
const book = await clobClient.getOrderBook(tokenID);
} catch (e) {
if (e instanceof ApiError) {
console.log(e.message); // "No orderbook exists for the requested token id"
console.log(e.status); // 404
console.log(e.data); // full error response object from the API
}
}