Documentation Index
Fetch the complete documentation index at: https://mintlify.com/1inch/cross-chain-sdk/llms.txt
Use this file to discover all available pages before exploring further.
The WebSocket API provides comprehensive event subscriptions for monitoring order lifecycle and querying data through RPC methods.
Order Events
Subscribe to order-related events through the order namespace.
Subscribe to All Order Events
Listen to all order events with a single subscription:
import { WebSocketApi } from '@1inch/cross-chain-sdk'
const ws = new WebSocketApi({
url: 'wss://api.1inch.com/fusion-plus/ws',
authKey: 'your-auth-key'
})
ws.order.onOrder((data) => {
if (data.event === 'order_created') {
console.log('Order created:', data.data.orderHash)
}
if (data.event === 'order_invalid') {
console.log('Order invalid:', data.data.orderHash)
}
if (data.event === 'order_filled') {
console.log('Order filled:', data.data.orderHash)
}
})
Order Created
Triggered when a new order is created:
ws.order.onOrderCreated((data) => {
console.log('New order:', {
orderHash: data.data.orderHash,
srcChainId: data.data.srcChainId,
dstChainId: data.data.dstChainId,
quoteId: data.data.quoteId
})
})
Event Data Structure:
{
event: 'order_created',
data: {
srcChainId: SupportedChain
dstChainId: SupportedChain
orderHash: string
order: LimitOrderV4Struct
extension: string
signature: string
isMakerContract: boolean
quoteId: string
merkleLeaves: string[]
secretHashes: string[]
}
}
Order Filled
Triggered when an order is completely filled:
ws.order.onOrderFilled((data) => {
console.log('Order filled:', data.data.orderHash)
})
Event Data Structure:
{
event: 'order_filled',
data: {
orderHash: string
}
}
Order Partially Filled
Triggered when an order is partially filled:
ws.order.onOrderFilledPartially((data) => {
console.log('Partial fill:', {
orderHash: data.data.orderHash,
remainingAmount: data.data.remainingMakerAmount
})
})
Event Data Structure:
{
event: 'order_filled_partially',
data: {
orderHash: string
remainingMakerAmount: string
}
}
Order Cancelled
Triggered when an order is cancelled:
ws.order.onOrderCancelled((data) => {
console.log('Order cancelled:', {
orderHash: data.data.orderHash,
remainingAmount: data.data.remainingMakerAmount
})
})
Event Data Structure:
{
event: 'order_cancelled',
data: {
orderHash: string
remainingMakerAmount: string
}
}
Order Invalid
Triggered when an order becomes invalid:
ws.order.onOrderInvalid((data) => {
console.log('Order invalid:', data.data.orderHash)
})
Event Data Structure:
{
event: 'order_invalid',
data: {
orderHash: string
}
}
Order Balance Change
Triggered when the makerβs balance changes affecting the order:
ws.order.onOrderBalanceChange((data) => {
console.log('Balance changed:', {
orderHash: data.data.orderHash,
balance: data.data.balance,
remainingAmount: data.data.remainingMakerAmount
})
})
Event Data Structure:
{
event: 'order_balance_change',
data: {
orderHash: string
remainingMakerAmount: string
balance: string
}
}
Order Allowance Change
Triggered when the makerβs token allowance changes:
ws.order.onOrderAllowanceChange((data) => {
console.log('Allowance changed:', {
orderHash: data.data.orderHash,
allowance: data.data.allowance,
remainingAmount: data.data.remainingMakerAmount
})
})
Event Data Structure:
{
event: 'order_allowance_change',
data: {
orderHash: string
remainingMakerAmount: string
allowance: string
}
}
Secret Shared
Triggered when a secret is shared for cross-chain order resolution:
ws.order.onOrderSecretShared((data) => {
console.log('Secret shared:', {
idx: data.data.idx,
secret: data.data.secret
})
})
Event Data Structure:
{
event: 'secret_shared',
data: {
idx: number
secret: string
srcImmutables: Jsonify<Immutables<AddressLike>>
dstImmutables: Jsonify<Immutables<AddressLike>>
}
}
RPC Methods
The rpc namespace provides request/response methods for querying data.
Send a health check ping:
ws.rpc.ping()
ws.rpc.onPong((data) => {
console.log('Pong received:', data)
})
Get Active Orders
Retrieve a list of active orders with pagination:
// Request active orders
ws.rpc.getActiveOrders({ page: 1, limit: 20 })
// Handle response
ws.rpc.onGetActiveOrders((data) => {
console.log('Active orders:', data.items)
console.log('Total:', data.meta.totalItems)
})
Response Structure:
{
items: ActiveOrder[]
meta: {
totalItems: number
itemCount: number
itemsPerPage: number
totalPages: number
currentPage: number
}
}
Get Secrets
Retrieve resolver secrets with pagination:
ws.rpc.getSecrets({ page: 1, limit: 10 })
ws.rpc.onGetSecrets((data) => {
if ('error' in data) {
console.error('Error:', data.error)
} else {
console.log('Secrets:', data.secrets)
console.log('Order type:', data.orderType)
}
})
Get Allowed Methods
Retrieve the list of available RPC methods:
ws.rpc.getAllowedMethods()
ws.rpc.onGetAllowedMethods((methods) => {
console.log('Available methods:', methods)
// ['ping', 'getAllowedMethods', 'getActiveOrders', 'getSecrets']
})
Event Types Reference
OrderEventType
Union type of all order events:
type OrderEventType =
| OrderCreatedEvent
| OrderInvalidEvent
| OrderBalanceChangeEvent
| OrderAllowanceChangeEvent
| OrderFilledEvent
| OrderFilledPartiallyEvent
| OrderCancelledEvent
| OrderSecretSharedEvent
EventType Enum
All available event type constants:
enum EventType {
OrderCreated = 'order_created',
OrderInvalid = 'order_invalid',
OrderBalanceChange = 'order_balance_change',
OrderAllowanceChange = 'order_allowance_change',
OrderFilled = 'order_filled',
OrderFilledPartially = 'order_filled_partially',
OrderCancelled = 'order_cancelled',
OrderSecretShared = 'secret_shared'
}
RpcMethod Enum
All available RPC methods:
enum RpcMethod {
GetAllowedMethods = 'getAllowedMethods',
Ping = 'ping',
GetActiveOrders = 'getActiveOrders',
GetSecrets = 'getSecrets'
}
Low-Level Events
For advanced use cases, subscribe to low-level WebSocket events:
import { WebSocketEvent } from '@1inch/cross-chain-sdk'
// Connection opened
ws.on(WebSocketEvent.Open, () => {
console.log('Connected')
})
// Message received
ws.on(WebSocketEvent.Message, (data) => {
console.log('Raw message:', data)
})
// Connection closed
ws.on(WebSocketEvent.Close, () => {
console.log('Disconnected')
})
// Error occurred
ws.on(WebSocketEvent.Error, (error) => {
console.error('WebSocket error:', error)
})
WebSocketEvent Enum
enum WebSocketEvent {
Close = 'close',
Error = 'error',
Message = 'message',
Open = 'open'
}
Complete Example
Hereβs a complete example monitoring all order events:
import { WebSocketApi } from '@1inch/cross-chain-sdk'
const ws = new WebSocketApi({
url: 'wss://api.1inch.com/fusion-plus/ws',
authKey: 'your-auth-key'
})
// Connection management
ws.onOpen(() => console.log('Connected to WebSocket'))
ws.onError((error) => console.error('WebSocket error:', error))
ws.onClose(() => console.log('WebSocket closed'))
// Order lifecycle events
ws.order.onOrderCreated((data) => {
console.log('π Order created:', data.data.orderHash)
})
ws.order.onOrderFilled((data) => {
console.log('β
Order filled:', data.data.orderHash)
})
ws.order.onOrderFilledPartially((data) => {
console.log('β³ Order partially filled:', {
hash: data.data.orderHash,
remaining: data.data.remainingMakerAmount
})
})
ws.order.onOrderCancelled((data) => {
console.log('β Order cancelled:', data.data.orderHash)
})
ws.order.onOrderInvalid((data) => {
console.log('β οΈ Order invalid:', data.data.orderHash)
})
// State changes
ws.order.onOrderBalanceChange((data) => {
console.log('π° Balance changed:', data.data)
})
ws.order.onOrderAllowanceChange((data) => {
console.log('π Allowance changed:', data.data)
})
// Get active orders on connection
ws.onOpen(() => {
ws.rpc.getActiveOrders({ limit: 50 })
})
ws.rpc.onGetActiveOrders((orders) => {
console.log(`Found ${orders.meta.totalItems} active orders`)
})
Next Steps
Setup
Learn how to configure WebSocket connections
Overview
Understand when to use WebSocket vs REST API