@seamflux/predictdotfun
v1.0.1
Published
Predict.fun prediction market integration package.
Readme
Predict.fun prediction market integration package.
Overview
This package provides integration with the Predict.fun prediction market protocol on BNB Chain.
Environment: Mainnet (https://api.predict.fun)
Important Notes
1. API Key Requirement (Mainnet Only)
- Mainnet: API key is required for all authenticated operations
2. Authentication Flow (JWT)
Predict.fun uses JWT tokens for user authentication. Simply call getJwtToken() with your sign function:
getJwtToken({ signMessage }) → JWT Token → Use for API callsJWT tokens expire and need to be refreshed periodically.
3. Order Creation
Use createOrder() to create and submit an order in one step. You only need to provide:
- Order details (market, side, size, price)
- Your wallet address
- A signing function
4. LIMIT vs MARKET Orders
- LIMIT Order: Set your own price. Order stays open until filled or cancelled.
- MARKET Order: Execute immediately at current market price. Requires orderbook data.
Quick Start: Creating an Order
// 1. Authenticate (once per session)
const { token: jwtToken } = await getJwtToken({
apiKey: 'your-api-key',
address: wallet.address,
signMessage: (msg) => wallet.signMessage(msg),
});
// 2. Create a LIMIT order
const order = await createOrder({
apiKey: 'your-api-key',
jwtToken,
marketId: 123,
outcomeIndex: 0, // 0 = YES, 1 = NO
side: 'BUY',
strategy: 'LIMIT',
size: '10000000000000000000', // 10 shares (wei)
price: '0.5',
maker: wallet.address,
signer: wallet.address,
signTypedData: (domain, types, message) => wallet.signTypedData(domain, types, message),
});
console.log('Order created:', order.orderId);Creating a MARKET Order
const order = await createOrder({
apiKey: 'your-api-key',
jwtToken,
marketId: 123,
outcomeIndex: 0,
side: 'BUY',
strategy: 'MARKET', // Execute immediately
size: '10000000000000000000',
maker: wallet.address,
signer: wallet.address,
signTypedData: (domain, types, message) => wallet.signTypedData(domain, types, message),
});Cancelling Orders
// Cancel single order
await cancelOrder({ apiKey: 'your-api-key', jwtToken, orderId: 'order-id' });
// Cancel multiple orders
await cancelOrders({ apiKey: 'your-api-key', jwtToken, orderIds: ['order-1', 'order-2'] });
// Cancel all orders
await cancelAllOrders({ apiKey: 'your-api-key', jwtToken });
// Cancel all orders for a specific market
await cancelAllOrders({ apiKey: 'your-api-key', jwtToken, marketId: 123 });Key Differences from Polymarket
| Aspect | Predict.fun | Polymarket | |--------|-------------|------------| | Auth | API Key + JWT | HMAC-SHA256 | | Chain | BNB Chain | Polygon | | Order Cancel | Via API | Via chain (gasless relayer) | | Main Token | USDT | USDC |
Rate Limits
- Mainnet: 240 requests per minute per API key
