Examples
Complete examples you can copy and run. All examples use the Context SDK.Market scanner
Browse trending markets and display quotes:Copy
Ask AI
import { ContextClient } from "@contextwtf/sdk"
const ctx = new ContextClient()
// Fetch trending markets
const { markets } = await ctx.markets.list({ sortBy: "trending", limit: 10 })
for (const market of markets) {
const quotes = await ctx.markets.quotes(market.id)
console.log(`\n${market.question}`)
console.log(` Status: ${market.status}`)
console.log(` Volume: ${market.volume}`)
if (quotes.yes.bid && quotes.yes.ask) {
console.log(` Yes: ${quotes.yes.bid}¢ / ${quotes.yes.ask}¢`)
console.log(` Spread: ${quotes.spread}¢`)
} else {
console.log(" No quotes available")
}
}
Orderbook depth
Display the full orderbook for a market:Copy
Ask AI
import { ContextClient } from "@contextwtf/sdk"
const ctx = new ContextClient()
const book = await ctx.markets.orderbook("0xMarketId...", { depth: 10 })
console.log("ASKS (sell orders):")
for (const ask of book.asks.reverse()) {
const bar = "█".repeat(Math.min(ask.size, 50))
console.log(` ${ask.price.toString().padStart(3)}¢ ${bar} ${ask.size}`)
}
console.log("---")
console.log("BIDS (buy orders):")
for (const bid of book.bids) {
const bar = "█".repeat(Math.min(bid.size, 50))
console.log(` ${bid.price.toString().padStart(3)}¢ ${bar} ${bid.size}`)
}
Place and manage orders
Place, check, and cancel orders. Make sure you’ve set up your wallet first.Copy
Ask AI
import { ContextClient } from "@contextwtf/sdk"
const ctx = new ContextClient({
apiKey: process.env.CONTEXT_API_KEY!,
signer: { privateKey: process.env.PRIVATE_KEY! as `0x${string}` },
})
// Find a market
const { markets } = await ctx.markets.list({ sortBy: "trending", limit: 1 })
const marketId = markets[0].id
// Check the book first
const book = await ctx.markets.orderbook(marketId, { depth: 5 })
console.log("Best ask:", book.asks[0]?.price, "¢")
// Place a limit buy order
const { order } = await ctx.orders.create({
marketId,
outcome: "yes",
side: "buy",
priceCents: 40,
size: 5,
})
console.log("Order placed:", order.nonce)
// Check your open orders
const { orders } = await ctx.orders.mine(marketId)
console.log(`You have ${orders.length} open order(s)`)
// Cancel the order
const cancelResult = await ctx.orders.cancel(order.nonce)
console.log("Cancelled:", cancelResult.success)
Portfolio tracker
Display all your positions and balances:Copy
Ask AI
import { ContextClient } from "@contextwtf/sdk"
const ctx = new ContextClient({
apiKey: process.env.CONTEXT_API_KEY!,
signer: { privateKey: process.env.PRIVATE_KEY! as `0x${string}` },
})
// Portfolio stats
const stats = await ctx.portfolio.stats()
console.log(`Portfolio value: ${stats.currentPortfolioValue}`)
console.log(`Change: ${stats.currentPortfolioPercentChange}%`)
// Balances
const balance = await ctx.portfolio.balance()
console.log(`\nTUSD: ${balance.usdc.balance}`)
console.log(` Wallet: ${balance.usdc.walletBalance}`)
console.log(` Settlement: ${balance.usdc.settlementBalance}`)
// Active positions
const { portfolio } = await ctx.portfolio.get(undefined, { kind: "active" })
console.log(`\nActive positions: ${portfolio.length}`)
for (const pos of portfolio) {
console.log(` ${pos.outcomeName} — ${pos.balance} tokens`)
console.log(` Investment: ${pos.netInvestment}`)
console.log(` Current value: ${pos.currentValue}`)
}
// Check for claimable winnings
const claimable = await ctx.portfolio.claimable()
if (claimable.positions.length > 0) {
console.log(`\nClaimable: ${claimable.totalClaimable}`)
}
Oracle monitor
Check oracle status and request new quotes:Copy
Ask AI
import { ContextClient } from "@contextwtf/sdk"
const ctx = new ContextClient()
const { markets } = await ctx.markets.list({ status: "active", limit: 5 })
for (const market of markets) {
const { oracle } = await ctx.markets.oracle(market.id)
console.log(`\n${market.question}`)
console.log(` Confidence: ${oracle?.confidenceLevel ?? "not assessed"}`)
console.log(` Last checked: ${oracle?.lastCheckedAt ?? "never"}`)
if (oracle?.summary.shortSummary) {
console.log(` Summary: ${oracle.summary.shortSummary}`)
}
// Get probability quotes
const { quotes } = await ctx.markets.oracleQuotes(market.id)
if (quotes.length > 0) {
const latest = quotes[0]
console.log(` Latest probability: ${latest.probability}%`)
console.log(` Confidence: ${latest.confidence}`)
}
}
Market maker
Post two-sided quotes on a market:Copy
Ask AI
import { ContextClient } from "@contextwtf/sdk"
const ctx = new ContextClient({
apiKey: process.env.CONTEXT_API_KEY!,
signer: { privateKey: process.env.PRIVATE_KEY! as `0x${string}` },
})
const marketId = "0xMarketId..."
const spreadCents = 4 // 4¢ spread
const sizePerSide = 20 // 20 contracts per side
// Get current mid price
const quotes = await ctx.markets.quotes(marketId)
const mid = quotes.yes.bid && quotes.yes.ask
? Math.round((quotes.yes.bid + quotes.yes.ask) / 2)
: 50
const bidPrice = mid - spreadCents / 2
const askPrice = mid + spreadCents / 2
console.log(`Quoting ${bidPrice}¢ / ${askPrice}¢ (${spreadCents}¢ spread)`)
// Cancel existing orders
const { orders: existing } = await ctx.orders.mine(marketId)
if (existing.length > 0) {
await ctx.orders.bulkCancel(existing.map(o => o.nonce))
console.log(`Cancelled ${existing.length} old orders`)
}
// Post new two-sided quotes
const results = await ctx.orders.bulkCreate([
{
marketId,
outcome: "yes",
side: "buy",
priceCents: bidPrice,
size: sizePerSide,
},
{
marketId,
outcome: "yes",
side: "sell",
priceCents: askPrice,
size: sizePerSide,
inventoryModeConstraint: 2, // mint from deposited TUSD
},
])
for (const r of results) {
console.log(` ${r.order.nonce}: ${r.success ? "placed" : "failed"}`)
}
Running the examples
Copy
Ask AI
# Read-only examples (no auth needed)
npx tsx market-scanner.ts
# Trading examples (needs API key + private key)
CONTEXT_API_KEY=your_key PRIVATE_KEY=0xyour_key npx tsx place-orders.ts
The SDK also ships with runnable examples in its GitHub repository.