Introduction
The OKX API SDK for Rust is a powerful toolkit designed to interact seamlessly with the OKX cryptocurrency exchange API. This SDK offers full support for OKX's V5 API, providing Rust developers with robust tools to integrate OKX's trading functionalities into their applications.
Key Features
- Dual API Support: Works with both REST API and WebSocket API.
- Type Safety & Error Handling: Comprehensive type definitions and structured error management.
- Modular Design: Clean, organized code structure for easy customization.
- Access Control: Supports both public and private API endpoints.
Endpoint Coverage: Includes all major API categories:
- Account management
- Trading operations
- Market data
- Asset tracking
- Auto-Authentication: Handles request signing automatically.
- WebSocket Resilience: Built-in reconnection and heartbeat mechanisms.
- Execution Flexibility: Offers synchronous and asynchronous call options.
Installation Guide
Via Cargo.toml
Add this to your project's dependencies:
[dependencies]
okx = "0.1.0"
From GitHub Repository
For cutting-edge updates, install directly from the source:
cargo add --git https://github.com/yourusername/okx-sdk-rust
Getting Started
Configuration Setup
Initialize your API credentials via environment variables or .env
file:
OKX_API_KEY=your_api_key
OKX_API_SECRET=your_api_secret
OKX_PASSPHRASE=your_passphrase
OKX_SIMULATED_TRADING=0 # Set to 1 for simulated trading
REST API Implementation Example
use okx::{create_client, Error};
use okx::api::market::MarketApi;
#[tokio::main]
async fn main() -> Result<(), Error> {
let client = create_client()?;
// Fetch BTC-USDT market data
let ticker = MarketApi::get_ticker(&client, "BTC-USDT").await?;
println!("BTC-USDT Ticker: {:?}", ticker);
Ok(())
}
WebSocket API Implementation Example
use okx::websocket::{Args, ChannelType, WebsocketApi};
use okx::config::init_env;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
init_env();
let mut ws_client = WebsocketApi::new_public();
let mut rx = ws_client.connect().await?;
// Subscribe to BTC-USDT ticker
let args = Args::new().with_inst_id("BTC-USDT");
ws_client.subscribe(ChannelType::Tickers, args).await?;
// Process incoming messages
while let Some(msg) = rx.recv().await {
println!("Message received: {}", serde_json::to_string_pretty(&msg)?);
}
ws_client.close().await;
Ok(())
}
Project Architecture
src/
├── api/ # API implementations
│ ├── account/ # Account APIs
│ ├── asset/ # Asset APIs
│ ├── big_data/ # Big data APIs
│ ├── market/ # Market data APIs
│ ├── public_data/ # Public data APIs
│ ├── trade/ # Trading APIs
│ └── websocket/ # WebSocket APIs
├── models/ # Data models
│ ├── account/
│ ├── asset/
│ ├── market/
│ └── trade/
├── client.rs # HTTP client
├── config.rs # Configuration
├── error.rs # Error handling
├── lib.rs # Library entry
└── utils.rs # Utility functions
Advanced Configuration
Customize SDK behavior through environment variables or programmatic settings:
use okx::config::{Config, Credentials};
// Environment-based configuration
let config = Config::default();
// Manual configuration
let config = Config::default()
.with_api_url("https://www.okx.com")
.with_simulated_trading(true);
// Direct credential setting
let credentials = Credentials::new(
"your_api_key",
"your_api_secret",
"your_passphrase"
);
Development Workflow
# Clone repository
git clone https://github.com/yourusername/okx-sdk-rust.git
cd okx-sdk-rust
# Run tests
cargo test
# Execute examples
cargo run --example market
cargo run --example websocket
License Information
This project is licensed under the MIT License, offering maximum flexibility for developers.
👉 Discover more about OKX's trading solutions
FAQ Section
What makes this SDK stand out?
The OKX Rust SDK distinguishes itself with complete V5 API coverage, WebSocket stability features, and rigorous type safety.
How do I handle API rate limits?
The SDK automatically respects OKX's rate limits. For custom handling, monitor the x-ratelimit
headers in responses.
Can I use this for algorithmic trading?
Absolutely! The SDK's synchronous/asynchronous support makes it ideal for building trading algorithms.
👉 Explore OKX's API documentation for advanced implementations.