Kể lại chuyện của Minh — một lập trình viên mới vào nghề như bao bạn trẻ khác. Anh ấy vừa được giao task xây dựng một ứng dụng theo dõi giá crypto tự động. Nghe có vẻ đơn giản, nhưng khi mở tài liệu OKX API ra, Minh hoàn toàn choáng ngợp: "API key là gì? Signature như thế nào? HMAC-SHA256 hay SHA256? Timestamp milliseconds hay seconds?"
Bài viết này được viết dành cho những bạn như Minh — người chưa từng đụng vào khái niệm API, không biết bắt đầu từ đâu. Tôi sẽ cầm tay bạn đi từng bước một, giải thích mọi thứ bằng ngôn ngữ đời thường, kèm code mẫu có thể chạy ngay lập tức.
OKX API là gì và tại sao bạn cần nó?
Trước khi code, hãy hiểu đơn giản thế này: OKX API giống như một "cửa hàng 24/7" cho phép máy tính của bạn giao tiếp trực tiếp với sàn giao dịch OKX mà không cần mở trình duyệt hay đăng nhập thủ công.
Bạn có thể làm được gì với OKX API?
- Xem giá Bitcoin, Ethereum và hơn 300 cặp giao dịch theo thời gian thực
- Lấy thông tin tài khoản: số dư, lịch sử giao dịch
- Đặt lệnh mua/bán tự động (nâng cao)
- Xây dựng bot giao dịch, dashboard theo dõi danh mục
- Tạo alert giá khi đạt ngưỡng mong muốn
Bước 1: Tạo tài khoản và API Key trên OKX
Đây là bước đầu tiên và quan trọng nhất — không có API Key thì bạn không thể làm gì cả.
Tạo tài khoản OKX
- Truy cập www.okx.com và nhấn "Đăng ký"
- Điền email hoặc số điện thoại, tạo mật khẩu
- Xác minh email/số điện thoại theo hướng dẫn
- Bật xác thực 2 yếu tố (2FA) — bắt buộc để tạo API Key
Tạo API Key
- Đăng nhập → Click avatar → Chọn "API"
- Nhấn "Tạo API Key" (Generate API Key)
- Đặt tên cho API Key (ví dụ: "TradingBot_Minh")
- Chọn quyền hạn (Permissions):
- Chỉ đọc (Read-only): Xem giá, số dư — phù hợp người mới học
- Giao dịch (Trade): Đặt lệnh mua/bán — cần cẩn thận
- Rút tiền (Withdrawal): Chuyển tiền ra — KHÔNG khuyến khích
- Nhấn "Xác nhận" → Nhận mã 2FA → Hoàn tất
⚠️ QUAN TRỌNG: Sau khi tạo, bạn sẽ nhận được 3 thông tin:
- API Key: Dạng chuỗi ký tự dài (ví dụ:
abc123def456...) - Secret Key: Chuỗi ký tự bí mật — KHÔNG chia sẻ cho ai
- Passphrase: Mật khẩu bạn đặt khi tạo API Key
Gợi ý chụp màn hình: Lưu lại ngay 3 thông tin này vào file text riêng. OKX chỉ hiển thị Secret Key MỘT LẦN DUY NHẤT.
Bước 2: Hiểu về xác thực (Authentication)
Đây là phần khiến 90% người mới bỏ cuộc. Tôi sẽ giải thích đơn giản như cách bạn đưa vé vào cổng rạp phim.
Xác thực API giống như kiểm tra vé tại cổng:
- OKX cần biết bạn là ai → API Key
- OKX cần đảm bảo vé không bị giả mạo → Signature (chữ ký số)
- OKX cần biết vé còn hạn sử dụng không → Timestamp
Signature được tạo như thế nào?
OKX sử dụng thuật toán HMAC-SHA256. Đừng hoảng! Hiểu đơn giản thế này:
- Bạn gửi một "thông điệp" (message) kèm timestamp
- Hệ thống dùng Secret Key để "mã hóa" thông điệp đó
- Kết quả mã hóa chính là Signature
- OKX nhận message + signature, dùng Secret Key của bạn để kiểm tra
- Nếu khớp → Xác thực thành công
Bước 3: Code mẫu — Xác thực và lấy dữ liệu
Ví dụ 1: Lấy thông tin tài khoản (Python)
# Hướng dẫn OKX API - Lấy thông tin tài khoản
Dành cho người hoàn toàn mới về API
import requests
import time
import hmac
import hashlib
import base64
====== THÔNG TIN CÁ NHÂN - THAY ĐỔI CÁC GIÁ TRỊ NÀY ======
API_KEY = "YOUR_OKX_API_KEY" # Thay bằng API Key của bạn
SECRET_KEY = "YOUR_OKX_SECRET_KEY" # Thay bằng Secret Key
PASSPHRASE = "YOUR_OKX_PASSPHRASE" # Thay bằng Passphrase
Endpoint API
BASE_URL = "https://www.okx.com"
def generate_signature(timestamp, method, request_path, body=""):
"""
Tạo chữ ký số (signature) để xác thực với OKX API
Đây là phần quan trọng nhất của authentication
"""
message = timestamp + method + request_path + body
mac = hmac.new(
SECRET_KEY.encode('utf-8'),
message.encode('utf-8'),
hashlib.sha256
)
return base64.b64encode(mac.digest()).decode('utf-8')
def get_account_info():
"""
Lấy thông tin tài khoản từ OKX
"""
timestamp = time.strftime("%Y-%m-%dT%H:%M:%S.000Z", time.gmtime())
method = "GET"
request_path = "/api/v5/account/balance"
body = ""
# Tạo signature
signature = generate_signature(timestamp, method, request_path, body)
# Headers - Thông tin gửi kèm request
headers = {
"OK-ACCESS-KEY": API_KEY,
"OK-ACCESS-SIGN": signature,
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": PASSPHRASE,
"Content-Type": "application/json"
}
# Gửi request đến OKX
url = BASE_URL + request_path
response = requests.get(url, headers=headers)
return response.json()
Chạy thử
if __name__ == "__main__":
print("Đang kết nối OKX API...")
result = get_account_info()
print("Kết quả:", result)
Ví dụ 2: Lấy dữ liệu giá thị trường (Python)
# Hướng dẫn OKX API - Lấy dữ liệu giá thị trường
Phần này KHÔNG cần xác thực (public endpoint)
import requests
def get_ticker_price(pair="BTC-USDT"):
"""
Lấy giá hiện tại của một cặp giao dịch
Ví dụ: BTC-USDT, ETH-USDT, SOL-USDT
Pair: Cặp giao dịch theo định dạng "BASE-QUOTE"
"""
url = f"https://www.okx.com/api/v5/market/ticker?instId={pair}"
response = requests.get(url)
data = response.json()
if data.get("code") == "0": # "0" nghĩa là thành công
ticker = data["data"][0]
return {
"cặp_giao_dịch": ticker["instId"],
"giá_mua_cuối": ticker["last"],
"giá_cao_nhất_24h": ticker["high24h"],
"giá_thấp_nhất_24h": ticker["low24h"],
"khối_lượng_24h": ticker["vol24h"],
"thay_đổi_24h_%": ticker["sodUtc8"]
}
else:
return {"lỗi": data.get("msg", "Không rõ lỗi")}
def get_multiple_prices(pairs=["BTC-USDT", "ETH-USDT", "SOL-USDT"]):
"""
Lấy giá của nhiều cặp giao dịch cùng lúc
"""
results = {}
for pair in pairs:
results[pair] = get_ticker_price(pair)
print(f"Đã lấy: {pair}")
return results
Chạy thử
if __name__ == "__main__":
# Lấy giá Bitcoin
print("=== GIÁ BITCOIN ===")
btc_price = get_ticker_price("BTC-USDT")
for key, value in btc_price.items():
print(f"{key}: {value}")
print("\n=== GIÁ NHIỀU COIN ===")
prices = get_multiple_prices(["BTC-USDT", "ETH-USDT", "SOL-USDT"])
Ví dụ 3: Lấy lịch sử giao dịch (Python)
# Hướng dẫn OKX API - Lấy lịch sử giao dịch
Yêu cầu xác thực vì cần thông tin cá nhân
import requests
import time
import hmac
import hashlib
import base64
API_KEY = "YOUR_OKX_API_KEY"
SECRET_KEY = "YOUR_OKX_SECRET_KEY"
PASSPHRASE = "YOUR_OKX_PASSPHRASE"
BASE_URL = "https://www.okx.com"
def generate_signature(timestamp, method, request_path, body=""):
"""Tạo signature cho request"""
message = timestamp + method + request_path + body
mac = hmac.new(
SECRET_KEY.encode('utf-8'),
message.encode('utf-8'),
hashlib.sha256
)
return base64.b64encode(mac.digest()).decode('utf-8')
def get_order_history(limit=10):
"""
Lấy lịch sử các lệnh đã đặt
Args:
limit: Số lượng lệnh muốn lấy (tối đa 100)
"""
timestamp = time.strftime("%Y-%m-%dT%H:%M:%S.000Z", time.gmtime())
method = "GET"
request_path = f"/api/v5/trade/orders-history?instType=SPOT&limit={limit}"
body = ""
signature = generate_signature(timestamp, method, request_path, body)
headers = {
"OK-ACCESS-KEY": API_KEY,
"OK-ACCESS-SIGN": signature,
"OK-ACCESS-TIMESTAMP": timestamp,
"OK-ACCESS-PASSPHRASE": PASSPHRASE,
"Content-Type": "application/json"
}
url = BASE_URL + request_path
response = requests.get(url, headers=headers)
data = response.json()
if data.get("code") == "0":
orders = data["data"]
print(f"Tìm thấy {len(orders)} lệnh gần nhất:\n")
for order in orders:
print(f"📋 Lệnh #{order['ordId']}")
print(f" Cặp: {order['instId']}")
print(f" Loại: {order['side']} {order['ordType']}")
print(f" Khối lượng: {order['sz']} @ Giá: {order['px']}")
print(f" Trạng thái: {order['state']}")
print(f" Thời gian: {order['cTime']}")
print("-" * 40)
return orders
else:
print(f"Lỗi: {data.get('msg')}")
return []
if __name__ == "__main__":
get_order_history(limit=5)
Cách test API nhanh với Postman
Nếu bạn không quen với Python, có thể dùng Postman — công cụ test API phổ biến nhất hiện nay.
- Tải và cài đặt Postman (miễn phí)
- Tạo request mới → Chọn method GET/POST
- Nhập URL endpoint
- Tab "Headers" → Thêm các cặp key-value:
OK-ACCESS-KEY: API Key của bạnOK-ACCESS-SIGN: Signature (cần tool để tạo)OK-ACCESS-TIMESTAMP: Thời gian hiện tạiOK-ACCESS-PASSPHRASE: PassphraseContent-Type: application/json
- Nhấn "Send" → Xem kết quả
Gợi ý: OKX có cung cấp tool tạo signature trực tiếp trên website tài liệu, rất tiện cho người mới.
Các endpoint API phổ biến nhất
| Endpoint | Method | Mục đích | Cần xác thực? |
|---|---|---|---|
/api/v5/market/ticker |
GET | Lấy giá hiện tại | Không |
/api/v5/market/books |
GET | Lấy sổ lệnh (order book) | Không |
/api/v5/market/candles |
GET | Lấy dữ liệu nến (chart) | Không |
/api/v5/account/balance |
GET | Lấy số dư tài khoản | Có |
/api/v5/trade/orders-history |
GET | Lịch sử lệnh | Có |
/api/v5/trade/order |
POST | Đặt lệnh mới | Có |
Lỗi thường gặp và cách khắc phục
Lỗi 1: "Invalid OK-ACCESS-SIGN"
Mô tả lỗi: Khi gửi request, bạn nhận được response:
{"msg":"Invalid OK-ACCESS-SIGN","code":"50113"}
Nguyên nhân: Signature không khớp với Secret Key hoặc message sai format.
Cách khắc phục:
# Kiểm tra lại thứ tự tạo message
ĐÚNG: timestamp + method + request_path + body
SAI: timestamp + request_path + method + body
Ví dụ tạo timestamp chuẩn (ISO 8601 format)
import datetime
timestamp = datetime.datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%S.000Z")
Kết quả: "2026-01-18T10:30:00.000Z"
Đảm bảo body rỗng cho GET request
body = ""
Kiểm tra lại request_path phải bắt đầu bằng "/"
request_path = "/api/v5/account/balance" # ĐÚNG
request_path = "api/v5/account/balance" # SAI - thiếu "/"
Lỗi 2: "Illegal request timestamp"
Mô tả lỗi:
{"msg":"Illegal request timestamp","code":"50114"}
Nguyên nhân: Timestamp trong header không đúng format hoặc lệch giờ quá nhiều.
Cách khắc phục:
# Đảm bảo timestamp theo đúng format UTC
import time
Cách 1: Dùng time module (Khuyến nghị)
timestamp = time.strftime("%Y-%m-%dT%H:%M:%S.000Z", time.gmtime())
Cách 2: Kiểm tra độ lệch thời gian
from datetime import datetime, timezone
current_time = datetime.now(timezone.utc)
timestamp = current_time.strftime("%Y-%m-%dT%H:%M:%S.000Z")
Nếu server của bạn lệch giờ, cài đặt NTP
Linux: sudo ntpdate -s time.google.com
Windows: Settings > Date & Time > Internet Time > Update Now
Lỗi 3: "Audit IP restriction failed"
Mô tả lỗi:
{"msg":"Audit IP restriction failed","code":"50115"}
Nguyên nhân: IP hiện tại của bạn không nằm trong danh sách IP được phép truy cập API.
Cách khắc phục:
# Cách 1: Vào OKX > API > Chỉnh sửa API Key
> Bỏ chọn "Bind IP Addresses" hoặc thêm IP hiện tại vào whitelist
Cách 2: Kiểm tra IP hiện tại của bạn
import requests
ip = requests.get("https://api.ipify.org").text
print(f"IP hiện tại: {ip}")
Cách 3: Nếu dùng VPN, tắt VPN khi test API
hoặc thêm IP của VPN vào whitelist
Lỗi 4: "Verify mfa error"
Mô tả lỗi:
{"msg":"Verify mfa error","code":"50100"}
Nguyên nhân: Xác thực 2FA không đúng hoặc đã hết hạn.
Cách khắc phục:
# Khi tạo API Key, cần xác thực 2FA
Đảm bảo:
1. Điện thoại/email đã xác thực trên OKX
2. Ứng dụng Google Authenticator đã liên kết
3. Thời gian trên điện thoại chính xác
Nếu mất 2FA:
Liên hệ support OKX qua: [email protected]
Chuẩn bị: Screenshot tài khoản, CCCD, thông tin giao dịch
So sánh OKX API với các sàn khác
| Tiêu chí | OKX | Binance | Bybit | HolySheep AI |
|---|---|---|---|---|
| Phí giao dịch | 0.08% - 0.10% | 0.10% | 0.10% | N/A (AI API) |
| Phí API | Miễn phí cơ bản | Miễn phí cơ bản | Miễn phí cơ bản | Từ ¥1/MTok |
| Tốc độ phản hồi | ~100-200ms | ~100ms | ~100ms | <50ms |
| Giới hạn rate | 20 requests/2s | 1200 requests/phút | 100 requests/10s | Không giới hạn |
| Hỗ trợ | Tiếng Anh, Trung | Đa ngôn ngữ | Đa ngôn ngữ | Tiếng Việt, Trung |
| Thanh toán | Card, Bank, Crypto | Card, Bank, P2P | Card, P2P | WeChat, Alipay, USDT |
Phù hợp / không phù hợp với ai
✅ OKX API PHÙ HỢP với:
- Người muốn xây dựng bot giao dịch crypto tự động
- Lập trình viên cần dữ liệu thị trường real-time
- Người có kiến thức lập trình Python/Java/Node.js
- Trader chuyên nghiệp cần API riêng cho chiến lược
- Nhà phát triển ứng dụng tài chính phi tập trung (DeFi)
❌ OKX API KHÔNG PHÙ HỢP với:
- Người hoàn toàn không biết lập trình
- Người chỉ muốn đầu tư đơn giản (nên dùng app OKX thông thường)
- Người cần tích hợp AI/LLM vào ứng dụng
- Người muốn tốc độ phản hồi cực nhanh (<50ms)
- Người cần hỗ trợ tiếng Việt 24/7 chuyên sâu
Giá và ROI
| Dịch vụ | Giá mỗi tháng | Giá ước tính/MTok | Tỷ lệ tiết kiệm | ROI cho dev Việt Nam |
|---|---|---|---|---|
| OKX API | Miễn phí (tier cơ bản) | N/A | 0% | Tốt cho người học |
| OpenAI GPT-4.1 | Pay-per-use | $8.00 | Baseline | Chi phí cao |
| Claude Sonnet 4.5 | Pay-per-use | $15.00 | +87% đắt hơn | Không phù hợp startup |
| Gemini 2.5 Flash | Pay-per-use | $2.50 | -69% rẻ hơn | Tốt cho dự án vừa |
| DeepSeek V3.2 | Pay-per-use | $0.42 | -95% rẻ hơn | Tốt nhất về giá |
| HolySheep AI | Tín dụng miễn phí khi đăng ký | ¥1 ≈ $1 (model cao cấp) | 85%+ tiết kiệm | ⭐ ROI cao nhất |
Phân tích chi phí thực tế
Giả sử bạn xây dựng một ứng dụng AI cần xử lý 1 triệu token mỗi tháng:
- OpenAI GPT-4.1: $8 × 1000 = $8,000/tháng
- Claude Sonnet 4.5: $15 × 1000 = $15,000/tháng
- HolySheep AI: ¥1 × 1,000,000 ÷ 1,000 = ¥1,000 ≈ $1,000/tháng
- Tiết kiệm với HolySheep: 87.5% so với GPT-4.1
Vì sao chọn HolySheep AI thay vì OKX API cho dự án AI?
Tôi biết bài viết này về OKX API, nhưng nếu bạn đang đọc đến đây, có lẽ bạn cũng quan tâm đến việc tích hợp AI vào ứng dụng. Đó là lý do tôi giới thiệu HolySheep AI — nền tảng API AI được thiết kế riêng cho lập trình viên Việt Nam.
Điểm vượt trội của HolySheep AI
| Tính năng | HolySheep AI | OpenAI | Anthropic |
|---|---|---|---|
| Tỷ giá | ¥1 = $1 | $8/MTok | $15/MTok |
| Tốc độ phản hồi | <50ms | ~200-500ms | ~300-800ms |
| Thanh toán | WeChat, Alipay, USDT | Card quốc tế | Card quốc tế |
| Hỗ trợ tiếng Việt | ✅ Có | ❌ Không | ❌ Không |
| Tín dụng miễn phí |