目录本文共 9 节
欧易 API Key 在网页端「头像 → API → 创建 API Key」创建,表单里依次填写备注名、选择账户和用途、绑定 IP、勾选权限,最后自己设置一个 Passphrase。创建完成后你会拿到 API Key、Secret Key 和 Passphrase 三项信息,程序调用私有接口时三项缺一不可。权限只勾读取和交易,提现永远不开;写代码前先在模拟盘创建一套模拟盘 API 跑通,再换实盘。
创建欧易 API Key 前要满足什么条件?
- 已完成身份认证并开启 2FA:创建和修改 Key 时都要输入验证码。还没注册的可以先看 欧易注册与认证教程。
- 资产门槛:截至 2026 年 10 月,欧易 API FAQ 写明部分地区要求账户资产(AUM)超过 100 USD 才能创建 API Key,主账户和子账户都适用,以页面提示为准。
- 地区与域名:欧易全球站不向部分国家和地区提供服务(包括中国大陆),美国、欧洲等地的用户只能使用当地单独运营的站点,香港、台湾、马来西亚等地也存在牌照或使用限制,请遵守当地法律和平台条款。API 域名也按注册站点区分:欧易文档提示美国、澳洲站用户用 us.okx.com,欧洲站用户用 eea.okx.com,其他用户的 REST 域名为 openapi.okx.com(www.okx.com 截至本文发布时也能正常访问)。
网页端和 App 怎么创建欧易 API Key?
网页端步骤:
- 登录欧易网页版,点右上角头像 → API(部分版本显示为「API 和连接」)。
- 点创建 API Key。
- 填写备注名,建议写清用途,例如「记账-只读」「现货脚本」。
- 选择账户:主账户或某个子账户;选择用途:自己写程序选 API 交易,接入第三方工具选对应的连接方式。
- 填写 IP 白名单,最多 20 个,用逗号或空格分隔。
- 勾选权限:读取、交易、提现,另有单独的划转、借贷、赚币选项(借贷、赚币只对符合条件的账户显示)。
- 设置 Passphrase,按页面提示的长度和字符规则填写。
- 完成 2FA 验证,页面显示 API Key 和 Secret Key,立刻保存到密码管理器。
App 路径:登录后点左上角菜单 → 往下找到 API → 创建 API Key,后面填写的内容与网页端相同。Secret Key 和 Passphrase 都是长字符串,建议在电脑上创建和保存,减少抄错。
已创建的欧易 API Key 能修改吗?
能改一部分。按欧易 API FAQ,创建后可以修改备注名、权限和绑定的 IP,修改时同样要过 2FA。不能修改的是 Secret Key 和 Passphrase:Passphrase 创建后就无法查看,想换只能删掉整个 Key 重建。所以如果你只是想把一个「读取 + 交易」的 Key 降级为只读,直接编辑权限即可,不必重建;但如果怀疑 Secret Key 或 Passphrase 已经外泄,修改权限没有用,必须删除。
欧易 API Key、Secret Key、Passphrase 分别有什么用?
| 信息 | 谁生成 | 用在哪里 | 丢了怎么办 |
|---|---|---|---|
| API Key | 欧易随机生成 | 请求头 OK-ACCESS-KEY,相当于账号 |
页面可再次查看 |
| Secret Key | 欧易随机生成 | 在本地计算签名 OK-ACCESS-SIGN,不会发给服务器 |
只在创建时显示,丢了要重建 |
| Passphrase | 你自己设置 | 请求头 OK-ACCESS-PASSPHRASE |
无法找回,只能重建 |
和币安相比,欧易多了一层 Passphrase:就算有人拿到了 API Key 和 Secret Key,没有 Passphrase 依然无法调用私有接口。签名的具体算法(时间戳 + 请求方法 + 路径 + 请求体,再做 HMAC-SHA256 和 Base64)可以看 交易所 API 签名原理。
Passphrase 应该怎么设置和保存?
- 不要和登录密码、资金密码重复。Passphrase 会以明文形式写进你的程序配置,一旦配置泄露,重复使用的密码也会跟着暴露。
- 欧易不保存原文:官方文档写明只存储 Passphrase 加盐后的哈希值,所以无法帮你找回,页面上也查不到。
- 和 Secret Key 放在一起保存:用密码管理器为每个 Key 建一条记录,三项信息加上用途、绑定的 IP 一起记好。
- 在 CCXT 里填
password字段:很多人第一次用 CCXT 连欧易报错,就是因为没传 Passphrase。
欧易 API 权限:读取、交易、提现怎么选?
新建 Key 时,欧易提供读取、交易、提现三项基础权限,以及单独勾选的划转、借贷、赚币选项。权限定义和本站建议如下:
| 权限 | 官方说明 | 建议 |
|---|---|---|
| 读取(Read) | 查看账单、订单历史等账户信息 | 开启 |
| 交易(Trade) | 下单、撤单、调整账户设置等 | 需要程序下单时才开 |
| 提现(Withdraw) | 通过 API 提现 | 永远不开 |
| 划转(Transfer) | 在账户之间划转资金 | 程序确实需要划转时才开 |
| 借贷 / 赚币(Loan / Earn) | 借币、赚币相关操作,仅符合条件的账户可选 | 用不到就不开 |
两个容易忽略的细节:
- 欧易的「交易」权限不只是下单,还包括账户设置(比如调整杠杆倍数)。欧易 API FAQ 提到,只有在这次权限调整之前就已开通交易权限的老 Key,才会自动带上划转、借贷、赚币相关权限;新建的 Key 需要自己单独勾选。老 Key 的权限范围可能比你以为的大,建议到 API 页面检查一遍,用不到的权限关掉,并绑定 IP、用子账户隔离。
- 只想查行情不需要 API Key,行情、K 线、交易对规则都是公开接口;只想做资产统计,建一个只读 Key 即可。
欧易 API 的 IP 白名单怎么绑定?
截至 2026 年 10 月,欧易 API 文档对 IP 绑定的规则是:
- 每个 API Key 最多绑定 20 个 IP,支持 IPv4、IPv6 和网段格式。
- 没有绑定 IP、又开了交易或提现权限的 Key,连续 14 天未使用会自动删除。模拟盘 Key 不受这条限制。
- 「使用」只算调用需要认证的私有接口,比如查余额、下单;只调公开接口时即使带了 Key 也不算。WebSocket 只有登录那一下算使用。
- 未绑定 IP 的交易或提现 Key 的使用记录,可以在安全中心查看。
这条 14 天规则经常让人措手不及:你在本地测试时没绑 IP,过两周再运行,Key 已经不存在了,程序只会报 50111。解决办法是给长期使用的 Key 绑定 IP;临时测试用的 Key,用完就主动删除,不要留着等它过期。
绑定 IP 后,如果从白名单以外的地址请求,会收到 50110(Your IP is not included in your API key’s IP whitelist)。家庭宽带的公网 IP 经常变化,长期运行的程序最好放在固定 IP 的云服务器上,并在更换服务器后第一时间更新白名单。
欧易模拟盘 API 怎么创建和使用?
模拟盘用的是虚拟资金,行情和撮合也独立于实盘,是测试程序最安全的地方。创建步骤:
- 登录欧易,进入交易 → 模拟交易。
- 打开个人中心 → 模拟盘 API。
- 点创建模拟盘 API Key,同样要设置 Passphrase 和权限。
使用时要记住三点:
- REST 域名和实盘相同,区别只在请求头:每个模拟盘请求都要带
x-simulated-trading: 1。WebSocket 则换成 wspap.okx.com 的地址。 - 部分功能不支持:文档写明模拟盘不支持提现、充值、申购赎回等。
- 价格和实盘不一样:模拟盘有自己的订单簿。我们在同一时间分别请求实盘和模拟盘的 BTC-USDT 行情,实盘最新价 81828.7,模拟盘是 82556.2(运行时数据),所以不要用模拟盘价格判断实盘行情。
下面是只用 Python 标准库调用模拟盘余额接口的写法,三项密钥从环境变量读取:
import base64
import hashlib
import hmac
import json
import os
import urllib.error
import urllib.request
from datetime import datetime, timezone
API_KEY = os.environ["OKX_API_KEY"]
SECRET = os.environ["OKX_API_SECRET"]
PASSPHRASE = os.environ["OKX_API_PASSPHRASE"]
DEMO = True # 模拟盘 Key 必须配合 x-simulated-trading: 1
path = "/api/v5/account/balance?ccy=USDT"
ts = datetime.now(timezone.utc).isoformat(timespec="milliseconds").replace("+00:00", "Z")
prehash = ts + "GET" + path
sign = base64.b64encode(hmac.new(SECRET.encode(), prehash.encode(), hashlib.sha256).digest()).decode()
headers = {
"OK-ACCESS-KEY": API_KEY,
"OK-ACCESS-SIGN": sign,
"OK-ACCESS-TIMESTAMP": ts,
"OK-ACCESS-PASSPHRASE": PASSPHRASE,
"Content-Type": "application/json",
"User-Agent": "my-okx-script/1.0",
}
if DEMO:
headers["x-simulated-trading"] = "1"
BASE_URL = "https://openapi.okx.com" # www.okx.com 目前也能用
req = urllib.request.Request(BASE_URL + path, headers=headers)
try:
with urllib.request.urlopen(req, timeout=10) as r:
print(json.loads(r.read()))
except urllib.error.HTTPError as e:
print(e.code, e.read().decode())
我们用一组随意填写的假 Key 运行,服务器返回的真实结果是:
401 {"msg":"Invalid OK-ACCESS-KEY","code":"50111"}
说明请求已经正确到达认证环节,换成你自己的模拟盘 Key 就会返回余额。代码里加 User-Agent 是因为实测不带这个请求头时,Python 自带的 urllib 会被拦截,返回 403 和 error code: 1010。
用 CCXT 更简单,set_sandbox_mode(True) 会自动加上模拟盘请求头:
import os
import ccxt
okx = ccxt.okx({
"apiKey": os.environ["OKX_API_KEY"],
"secret": os.environ["OKX_API_SECRET"],
"password": os.environ["OKX_API_PASSPHRASE"], # Passphrase 填在 password 字段
})
okx.set_sandbox_mode(True) # 自动加上 x-simulated-trading: 1
print(okx.headers)
try:
print(okx.fetch_balance()["USDT"])
except ccxt.AuthenticationError as e:
print("认证失败:", e)
运行输出(假 Key):
{'x-simulated-trading': '1'}
认证失败: okx {"msg":"Invalid OK-ACCESS-KEY","code":"50111"}
完整的查余额、下单、撤单脚本见 Python 用 CCXT 连接币安和欧易。
欧易子账户怎么创建 API?
把程序放在子账户里跑,可以让程序最多只能动用你转进去的那部分钱。按欧易帮助中心说明:
- 网页端进入头像 → 子账户 → 创建子账户,填写名称、选择账户类型,完成 2FA。普通用户最多可创建 5 个子账户。
- 主账户向子账户划转你愿意让程序使用的资金。
- 到 API → 创建 API Key,在「账户」一栏选择这个子账户,其余步骤与主账户相同。
子账户还有一个好处:欧易的私有接口限频按用户 ID 计算,子账户有独立的用户 ID,多个程序分开在不同子账户里,互相不抢限频额度。截至 2026 年 10 月,欧易文档列出的规则是:公开接口按 IP 限频,私有接口按用户 ID 限频;下单、改单、撤单的限频按交易产品分别计算;每个子账户每 2 秒最多 1000 次下单和改单请求,超出返回 50061。普通脚本远远碰不到这些上限,真正容易触发的是循环里不加间隔地反复查询,这时会收到 50011。
欧易 API 常见报错怎么解决?
| 错误码 | 原文(节选) | 怎么处理 |
|---|---|---|
| 50101 | APIKey does not match current environment | 实盘 Key 和模拟盘 Key 混用,检查 x-simulated-trading |
| 50102 | Timestamp request expired | 本机时间与服务器相差超过 30 秒,开启自动对时,时间戳用 UTC |
| 50104 / 50105 | OK-ACCESS-PASSPHRASE cannot be empty / incorrect | 没传 Passphrase 或填错,CCXT 里检查 password |
| 50110 | Your IP is not included in your API key’s IP whitelist | 当前出口 IP 不在白名单,更新白名单 |
| 50111 | Invalid OK-ACCESS-KEY | Key 填错、已被删除,或复制时带了空格 |
| 50113 | Invalid signature | 签名字符串拼错,详见签名原理一文 |
| 50011 | Rate limit reached | 请求太频繁,降低频率或开启 CCXT 的 enableRateLimit |
欧易 API Key 泄露了怎么办?
- 立即到 API 页面删除该 Key。不确定哪个泄露,就全部删除后按需重建。
- 检查订单历史、资金划转和提现记录,确认有没有陌生操作。
- 修改登录密码和资金密码,重新绑定 2FA;怀疑电脑中毒时换一台干净设备操作。
- 通过欧易官网或 App 的在线客服说明情况。
- 清理泄露源头:代码仓库、聊天记录、截图、云笔记。更多防护设置见 账户安全设置指南,也要小心 钓鱼网站 骗取 API 信息。
常见问题
欧易 API 的 Passphrase 忘了怎么办?
无法找回,也无法在页面上查看。欧易只保存 Passphrase 加盐后的哈希值,官方文档写明丢失后只能删除这个 API Key 重新创建,并把程序里的三项配置全部换成新的。
欧易 API Key 为什么突然失效了?
最常见的原因是这个 Key 没有绑定 IP,又开了交易或提现权限,连续 14 天没有调用需要认证的接口,被欧易自动删除。其他原因包括 IP 变了、权限被修改,或把实盘 Key 用在了模拟盘。
欧易模拟盘 API 和实盘 API 能通用吗?
不能。模拟盘 Key 要在「交易 → 模拟交易 → 个人中心」里单独创建,请求时还必须带 x-simulated-trading: 1 请求头。实盘 Key 连模拟盘、模拟盘 Key 连实盘都会报 50101 环境不匹配。
欧易 API 报错 50113 是什么意思?
50113 是 Invalid signature,签名错误。常见原因是签名用的时间戳和请求头里的不一致、请求方法没有大写、GET 参数没算进 requestPath,或签名用的 body 和实际发送的不是同一个字符串。
欧易子账户能单独创建 API Key 吗?
可以。在创建 API Key 的表单里选择要绑定的账户,选子账户即可生成只作用于该子账户的 Key。欧易普通用户最多可创建 5 个子账户,适合把程序化交易的资金和主账户隔开。
准备好出发了吗?
参考来源
- OKX API v5 文档:Overview / REST Authentication / Demo Trading
- OKX 帮助中心:OKX API FAQ
- OKX 帮助中心:Subaccounts, Account Mode, and API Connections FAQ
- OKX API v5 文档:Error Code(50000 系列认证错误)
以上信息核实于 2026-10-22,交易所规则可能调整,请以官方最新说明为准。
本文仅供学习参考,不构成投资建议。交易所的费率、活动与功能可能随时调整,请以官方页面为准。文中部分链接为推广链接,详见推广披露。