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?

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

  1. Truy cập www.okx.com và nhấn "Đăng ký"
  2. Điền email hoặc số điện thoại, tạo mật khẩu
  3. Xác minh email/số điện thoại theo hướng dẫn
  4. Bật xác thực 2 yếu tố (2FA) — bắt buộc để tạo API Key

Tạo API Key

  1. Đăng nhập → Click avatar → Chọn "API"
  2. Nhấn "Tạo API Key" (Generate API Key)
  3. Đặt tên cho API Key (ví dụ: "TradingBot_Minh")
  4. 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
  5. 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:

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:

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:

  1. Bạn gửi một "thông điệp" (message) kèm timestamp
  2. Hệ thống dùng Secret Key để "mã hóa" thông điệp đó
  3. Kết quả mã hóa chính là Signature
  4. OKX nhận message + signature, dùng Secret Key của bạn để kiểm tra
  5. 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.

  1. Tải và cài đặt Postman (miễn phí)
  2. Tạo request mới → Chọn method GET/POST
  3. Nhập URL endpoint
  4. Tab "Headers" → Thêm các cặp key-value:
    • OK-ACCESS-KEY: API Key của bạn
    • OK-ACCESS-SIGN: Signature (cần tool để tạo)
    • OK-ACCESS-TIMESTAMP: Thời gian hiện tại
    • OK-ACCESS-PASSPHRASE: Passphrase
    • Content-Type: application/json
  5. 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
/api/v5/trade/orders-history GET Lịch sử lệnh
/api/v5/trade/order POST Đặt lệnh mới

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:

❌ OKX API KHÔNG PHÙ HỢP với:

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:

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

🔥 Thử HolySheep AI

Cổng AI API trực tiếp. Hỗ trợ Claude, GPT-5, Gemini, DeepSeek — một khóa, không cần VPN.

👉 Đăng ký miễn phí →

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í