欧易 · API 接入
欧易 API 地址怎么填:REST、WebSocket 与模拟盘,8443 端口公网 10 月 31 日起停用
欧易 API 的 REST 地址填 https://openapi.okx.com。这是欧易 2026 年 5 月 20 日新增的专用 REST 域名,在 API 访问上和 https://www.okx.com 完全等价;老代码里写的 www.okx.com 继续可用,不会下线。WebSocket 实盘有三个地址:公共频道 wss://ws.okx.com/ws/v5/public、私有频道 wss://ws.okx.com/ws/v5/private、业务频道 wss://ws.okx.com/ws/v5/business;模拟盘把主机换成 wspap.okx.com,路径不变。
代码里如果还留着 :8443,要在 2026 年 10 月 31 日前删掉:那天起欧易公网不再接受 8443 端口的 WebSocket 连接,Colo 晚一些,到 11 月 16 日。只删端口,域名和路径都不动,REST 接口不受这次变更影响。在欧盟站(my.okx.com)或美国站(app.okx.com)注册的账户另有一套域名,用 openapi.okx.com 访问不了,对应地址都在下面的总表里。
欧易 API 地址总表:实盘、模拟盘、欧盟站和美国站
表里按「在哪个站注册」和「实盘还是模拟盘」分成六行。WebSocket 一列只写主机,后面接的路径各行通用:/ws/v5/public 是公共频道,/ws/v5/private 是私有频道,/ws/v5/business 是业务频道。
| 账户与环境 | REST | WebSocket 主机 | 另外要注意 |
|---|---|---|---|
| 全球站 · 实盘 | https://openapi.okx.com | wss://ws.okx.com | https://www.okx.com 同样可用 |
| 全球站 · 模拟盘 | https://openapi.okx.com | wss://wspap.okx.com | 请求头加 x-simulated-trading: 1;Key 在模拟盘上创建 |
| 欧盟站(my.okx.com 注册)· 实盘 | https://eea.okx.com | wss://wseea.okx.com | 用 openapi.okx.com 访问不了 |
| 欧盟站 · 模拟盘 | https://eea.okx.com | wss://wseeapap.okx.com | 请求头加 x-simulated-trading: 1 |
| 美国站(app.okx.com 注册)· 实盘 | https://us.okx.com | wss://wsus.okx.com | 美国及澳大利亚用户;用 openapi.okx.com 访问不了 |
| 美国站 · 模拟盘 | https://us.okx.com | wss://wsuspap.okx.com | 请求头加 x-simulated-trading: 1 |
全球站账户可以直接抄下面这几行:
# 实盘
REST https://openapi.okx.com
WS 公共 wss://ws.okx.com/ws/v5/public
WS 私有 wss://ws.okx.com/ws/v5/private
WS 业务 wss://ws.okx.com/ws/v5/business
# 模拟盘(REST 请求头加 x-simulated-trading: 1)
REST https://openapi.okx.com
WS 公共 wss://wspap.okx.com/ws/v5/public
WS 私有 wss://wspap.okx.com/ws/v5/private
WS 业务 wss://wspap.okx.com/ws/v5/business
这些地址出自欧易 API 文档概览的实盘交易与模拟盘交易小节,以 2026 年 10 月的页面为准。建议把它们集中写进配置文件,实盘一份、模拟盘一份,脚本里只读配置;以后欧易再调整端口或域名,改配置就够了。
REST 地址填 openapi.okx.com 还是 www.okx.com?
全球站账户填哪个都行。欧易在 2026 年 5 月 20 日的更新日志里新增 openapi.okx.com,同时写了三点:它在 API 访问方面与 www.okx.com 完全等价;www.okx.com 将继续可用,不会下线;OKX 全球站用户现在就可以使用。同一条还说明,us.okx.com、eea.okx.com、tr.okx.com 这几个地区域名保持不变。
所以老代码里的 https://www.okx.com 不是非改不可。新项目可以直接写 openapi.okx.com,文档概览里列出的实盘和模拟盘 REST 地址用的也是它。真要换,只换主机名,/api/v5/ 开头的接口路径照旧。
欧盟站和美国站的账户不在这个范围里。openapi.okx.com 是给全球站用户的,在 my.okx.com 或 app.okx.com 注册的账户照旧用自己站点的域名,后面单独一节讲。
WebSocket 8443 端口公网 10 月 31 日停用,地址里只删 :8443
这次变更写在欧易 API 更新日志「WebSocket 8443 端口下线」条目里,标为不兼容变更,条目最近一次更新是 2026 年 10 月 16 日。停用分两批:公网 2026 年 10 月 31 日,Colo 2026 年 11 月 16 日。过了各自的日期,连接 8443 端口会失败。
改法就是把 WebSocket 地址里的 :8443 删掉,域名和路径保持原样:
# 实盘
wss://ws.okx.com:8443/ws/v5/public → wss://ws.okx.com/ws/v5/public
# 模拟盘
wss://wspap.okx.com:8443/ws/v5/public → wss://wspap.okx.com/ws/v5/public
私有频道 /ws/v5/private、业务频道 /ws/v5/business 照这个改,全球站的 SBE 行情地址 /ws/v5/public-sbe 也在这次的范围内。wss:// 默认走 443 端口,删掉端口号连的就是 443;显式写成 :443 同样能连上。
这次不用动的:REST API 不受影响;所有受影响的域名(包括 Colo)现在都已支持 443 端口,停用日期之前 8443 和 443 两个端口都能正常连接。现在改完就可以上线,不必等到月底。
改之前在项目里全局搜一遍 8443,配置文件、环境变量、部署脚本、写死在代码里的字符串都算。订阅行情和订单推送的完整写法见欧易 WebSocket 怎么接:ccxt.pro 订阅行情和订单;用 ccxt.pro 的,地址由库自带,要看本机 ccxt 是哪一版,后面 ccxt 那一节有自查办法。
欧易模拟盘 API 地址:REST 加请求头,WebSocket 换 wspap
模拟盘的 REST 地址和实盘是同一个,https://openapi.okx.com。主机一样,模拟盘请求就得靠请求头标出来:header 里加上 x-simulated-trading: 1。WebSocket 要换主机,三个地址是 wss://wspap.okx.com/ws/v5/public、wss://wspap.okx.com/ws/v5/private、wss://wspap.okx.com/ws/v5/business,同样不带 8443。
Key 也要分开建。欧易文档的原话是「模拟盘API交易需要在模拟盘上创建APIKey」。所以跑模拟盘时,下面三样要配套:
- API Key 是在模拟盘上创建的那一把;
- REST 请求带
x-simulated-trading: 1; - WebSocket 连的是
wspap.okx.com。
在模拟盘上建 Key、勾权限、下一笔单再撤掉的完整步骤,见欧易 API 量化入门:创建模拟盘 Key、下单与撤单核验;想用 ccxt 把策略在模拟盘上整套跑一遍,看欧易模拟盘怎么用。
在欧盟站、美国站注册的账户,API 域名换成 eea 和 us
欧易文档概览写着:「根据您的注册地区,进行 API 调用和查阅文档时必须使用对应的域名。」紧接着一句是「以下地区用户使用 openapi.okx.com 将无法正常访问」。两类账户的地址如下:
- 在 my.okx.com 注册的欧盟用户:REST 用
https://eea.okx.com;WebSocket 实盘wss://wseea.okx.com/ws/v5/加 public、private 或 business,模拟盘主机是wseeapap.okx.com。文档看my.okx.com/docs-v5。 - 在 app.okx.com 注册的美国及澳大利亚用户:REST 用
https://us.okx.com;WebSocket 实盘wss://wsus.okx.com/ws/v5/加 public、private 或 business,模拟盘主机是wsuspap.okx.com。文档看app.okx.com/docs-v5。
两个站的模拟盘 REST 地址都和各自实盘相同,请求头一样要加 x-simulated-trading: 1。
那句原话里「查阅文档」也算在内。全球站文档列的是全球站的地址,欧盟站、美国站的账户照着它抄,抄下来的就是 openapi.okx.com 和 ws.okx.com。打开自己站点那份文档写代码,示例里的地址才对得上。用 ccxt 的话不必手改主机,换一个交易所类就行,写法在下一节。
ccxt 和 python-okx 默认连哪个地址,要不要改
ccxt 的 okx 类默认 hostname 是 www.okx.com,REST 地址按 https://{hostname} 拼出来。它和 openapi.okx.com 等价,保持默认就能用。欧盟站账户换 myokx 类,默认主机 eea.okx.com;美国站账户换 okxus 类,默认主机 us.okx.com。
import ccxt
ex = ccxt.okx() # 全球站账户,REST 默认 https://www.okx.com
# ex = ccxt.myokx() # 欧盟站账户,默认 eea.okx.com
# ex = ccxt.okxus() # 美国站账户,默认 us.okx.com
ex.set_sandbox_mode(True) # 模拟盘:okx 类会给请求加上 x-simulated-trading: 1
打开沙盒模式后,okx 类发出的请求带上 x-simulated-trading: 1,这时填进去的 Key 也要换成模拟盘上建的那一把。上面几个默认主机,以 ccxt 在 GitHub 主分支上 2026 年 10 月的源码为准。
ccxt.pro 的 WebSocket 地址要按版本看。ccxt 在 2026 年 10 月 1 日合入了 PR #30715,把 okx、myokx、okxus 三个类的 WebSocket 端口从 :8443 改成 :443。PyPI 上第一个带这项修改的版本是 4.5.87,2026 年 10 月 13 日发布;4.5.87 之前的版本,okx 连的还是 wss://ws.okx.com:8443/ws/v5。装的是旧版,在 10 月 31 日前升级(pip install -U ccxt);不确定本机是哪一版,用下面几行打印出来看:
import ccxt
import ccxt.pro
print(ccxt.__version__) # 4.5.87 及以上,ccxt.pro 的 okx 用 443
print(ccxt.pro.okx().urls['api']['ws']) # ccxt.pro 实际连的 WebSocket 地址,还带 :8443 就要升级
python-okx 的 README 自称是非官方(unofficial)的 Python 封装,不是欧易官方 SDK。它的 REST 地址写在 consts.API_URL,值是 https://www.okx.com,OkxClient 的 base_api 默认就用它,不改也能连。
另一个要看的是 flag 参数。它的默认值是 '1',按 README 的说明,0 是实盘、1 是模拟盘。调用时没传 flag,请求就按模拟盘发出去。上实盘时把 flag='0' 明明白白写出来,别靠默认值。
python-okx 的 WebSocket 模块没有写死连接地址,地址由调用它的代码传进去。8443 因此要在你自己的代码里删:
WS_PUBLIC = 'wss://ws.okx.com/ws/v5/public' # 旧写法 wss://ws.okx.com:8443/ws/v5/public
WS_PRIVATE = 'wss://ws.okx.com/ws/v5/private'
WS_BUSINESS = 'wss://ws.okx.com/ws/v5/business'
# 模拟盘把 ws.okx.com 换成 wspap.okx.com,路径不变
用 /api/v5/public/time 确认 REST 地址通了,再看时间差
换完地址,先调一个不用签名的公共接口:GET /api/v5/public/time,取服务器时间。它不需要 Key,返回正常就说明这个 REST 主机连得通;账户该用哪套域名,仍按注册站点定。再拿返回的服务器时间和本机时间比一比。
import time
import requests
BASE = 'https://openapi.okx.com' # 欧盟站账户用 https://eea.okx.com,美国站用 https://us.okx.com
resp = requests.get(BASE + '/api/v5/public/time', timeout=10)
print(resp.status_code, resp.text)
server_ms = int(resp.json()['data'][0]['ts']) # 服务器时间,毫秒
drift = abs(time.time() * 1000 - server_ms) / 1000
print(f'本机与服务器相差 {drift:.1f} 秒') # 超过 30 秒,签名请求会被拒
比时间差,是因为签名请求有时效。文档「REST 请求验证」里「发起请求」一节写明:服务器将拒绝与服务器时间相差超过 30 秒的请求,错误码 50102。签名里的时间戳一般取本机时间,本机时钟一偏,地址、Key、签名都没错,请求照样被拒。差值接近 30 秒时,校准本机时钟,或者签名前先调这个接口,用服务器时间生成时间戳。
地址填对了还是连不上,按这个顺序查
下面按从根上到细处排,前一项没问题再看下一项:
- 账户在哪个站注册。my.okx.com 注册的用 eea.okx.com 那一套,app.okx.com 注册的用 us.okx.com 那一套;这两类账户填 openapi.okx.com 访问不了。
- WebSocket 地址里还有没有 :8443。公网从 2026 年 10 月 31 日起、Colo 从 11 月 16 日起,连 8443 会失败。用 ccxt.pro 的,先看 ccxt 版本是不是 4.5.87 及以上。
- 实盘和模拟盘有没有混用。模拟盘要用在模拟盘上建的 Key,REST 带 x-simulated-trading: 1,WebSocket 连 wspap.okx.com,三样配套;用 python-okx 的再看一眼 flag 是 0 还是 1。
- 签名请求报 50102。本机时间和服务器差了 30 秒以上,按上一节校时。
- 连得上,过一阵又断。能连上说明地址已经对了,要查的是订阅有没有成功、心跳有没有按时发,见欧易 WebSocket 为什么连上 30 秒就断开?
www.okx.com 会下线吗、:443 能不能写:换地址时的几个细节
欧易的 www.okx.com 以后还能当 API 地址用吗?
能。欧易 2026 年 5 月 20 日新增 openapi.okx.com 时写明,新域名在 API 访问方面与 www.okx.com 完全等价,www.okx.com 继续可用、不会下线。ccxt 的 okx 类和 python-okx 默认用的都是 www.okx.com,保持默认也能连。
WebSocket 地址里写成 :443 能连上吗?
能。wss:// 默认走 443 端口,欧易在 8443 下线说明里提到,显式指定 :443 同样可以连接。要删的只有 :8443,域名和路径不变;用 ccxt.pro 的,4.5.87 及以上版本连的就是 :443,更早的版本还是 :8443。
Colo 连接的 8443 端口哪天停?
2026 年 11 月 16 日,公网是 10 月 31 日。各自的日期之前 8443 和 443 都能连,改法同样是删掉地址里的 :8443。
/ws/v5/public-sbe 也要去掉 8443 吗?
要。8443 下线适用于 /ws/v5/public、/ws/v5/private、/ws/v5/business,以及 Global 站的 /ws/v5/public-sbe,改法都是只删端口。
8443 停用后 REST 地址要不要跟着改?
不用。8443 下线说明里说了 REST API 不受影响,https://openapi.okx.com 和 https://www.okx.com 照常使用;欧盟站、美国站的账户继续用 eea.okx.com、us.okx.com。