入门
从零开始到在 Nexus Exchange 上开出一个仓位的八步演练。您将用钱包登录、创建 HMAC API 密钥、对请求签名、为账户充值、浏览市场、下单、撤单或修改订单,并监控仓位。
每一步都以五种客户端展示:cURL、Rust、Python、TypeScript 和 Exchange CLI。每一步选择一个标签页即可。
本页最初是交易所应用曾在 /api-docs 提供的交互式 API 文档中的 Getting Started 标签页。该路由已无法访问,因此现在由本页作为指南。
开始之前
您需要一个以太坊钱包来对登录消息签名。开始时不需要其他任何东西。
基础 URL。下面的示例使用公共测试网主机。不带前缀的路径位于
/v1传输基础路径https://api.testnet.nexus.xyz/v1之下,/api/v1路径则位于主机根地址之下,因此完整 URL 形如https://api.testnet.nexus.xyz/api/v1/…。请替换为您所调用部署的基础 URL。在存在带版本路由的地方,路径以/api/v1前缀展示。/v1基础 URL 上不带前缀的形式可访问同一操作,也是官方客户端正在迁移到的形式。关于契约声明的其他基础 URL,以及/api/v1路径上的servers覆盖如何解析,请参见基础 URL。身份验证。有两种方案:仅用于创建和管理 API 密钥的会话令牌(Bearer),以及用于其他一切(包括所有交易)的 HMAC-SHA256 API 密钥签名。
两个部署。交易所应用基于同一代码库部署了两次。测试网部署已上线,通过合成额度水龙头为账户注资。主网真实资金部署将通过把 USDX 从以太坊主网跨链转入来注资。它尚未上线:其主机
api.nexus.xyz目前无法解析。下面的第4步在两者之间有所不同,两种情况都有说明。占位符。
0xSIGNATURE_HEX、nx_7f3a1b...、sess_abc123...和0x<wallet-private-key>等值都是占位符。请替换为您自己的值;切勿将任何密钥提交到代码仓库。
语言覆盖情况
cURL 是基线,每一步都有 cURL 示例。四种 SDK/CLI 客户端尚未覆盖每一步。当某个客户端在某一步没有示例时,标签页会注明,您可以改为参照 cURL 示例。交互式文档的做法相同,会附注说明并回退到 cURL。
机器可读的入口
代理无需阅读本页,即可从以下入口开始:
llms.txt,位于 https://exchange.nexus.xyz/llms.txtopenapi.json,即 OpenAPI 契约,位于https://api.testnet.nexus.xyz/openapi.json/metadata,交易所应用的机器可读元数据路由MCP 服务器,已发布到 npm,因此只需一行即可添加。它通过 stdio 在本地运行,因此您的 API 密钥保留在您的机器上:
其公开的市场数据和演示工具无需凭证,因此在您拥有密钥之前该命令就已可用。托管的 MCP 端点已在计划中;其 DNS 尚未生效,因此目前没有可添加的远程 URL。
OpenAPI 规范和变更日志在 nexus-xyz/nexus-exchange-api 中进行版本管理,版本发布记录在 GitHub Releases。
身份验证
第1–3步带您从钱包走到一个已签名的请求。
1. 登录
POST /auth/login。无需身份验证。
使用 EIP-191 个人签名进行身份验证。要签名的消息始终是固定字符串“Sign in to Nexus Exchange”。服务器会从签名中恢复出您的钱包地址。
说明
会话令牌在24小时后过期。
您只在创建和管理 API 密钥时需要会话,交易时不需要。
TypeScript 暂不支持。请使用 cURL 示例。
请求体
响应
2. 创建 API 密钥
POST /keys。需要会话令牌。
使用会话令牌创建一个 HMAC 密钥对。secret 只显示一次,请立即保存。
说明
此响应之后,您将无法再取回 secret。
密钥继承您账户的等级。
X-RateLimit-*响应头会报告各等级的速率限制。
Python 暂不支持。请使用 cURL 示例。
TypeScript 暂不支持。请使用 cURL 示例。
请求体
响应
3. 对请求签名
GET /markets。需要 HMAC API 密钥。
每个需要身份验证的请求都需要三个请求头。构造一个规范字符串,用您的 secret 对其做 HMAC-SHA256,然后附上结果。
必需的请求头
X-API-Key
是
您的密钥 ID(nx_...)
X-Timestamp
是
当前时间,自 epoch 起的毫秒数
X-Signature
是
规范字符串的 HMAC-SHA256 十六进制值
说明
规范格式:
timestamp\nMETHOD\npath\nquery\nsha256(body)path是契约中写明的路径。路由带有/api/v1前缀时请包含该前缀,但不要包含/v1传输前缀,它会在验证签名之前被去除。调用…/v1/markets意味着签名/markets;调用…/api/v1/tickers意味着签名/api/v1/tickers。时间戳必须与服务器时间相差在 ±30秒以内(自 epoch 起的毫秒数)。
对于没有请求体的 GET 请求,对空字符串做哈希。
响应
交易
第4–8步为账户注资、建立仓位并对其进行监控。
4. 为账户充值
POST /account/credit。需要 HMAC API 密钥。仅限测试网。
领取合成 USDX 额度以开始交易。每个 API 密钥每天最多可领取500 USDX。省略 "amount" 即可领取当日剩余的全部额度。
额度水龙头仅存在于测试网。在主网真实资金部署上,此端点返回 403,只能通过跨链桥注资。请参见下文的主网情况。
说明
金额是十进制字符串,与 API 中的所有货币值一样。
当日额度用完后返回429。额度在下一个 UTC 日重置。
请求体
响应
主网上的第4步:使用真实抵押品注资
在主网真实资金部署上(已计划,尚未上线),真实充值将取代第4步。测试网的试玩部署有合成额度水龙头,主网真实资金部署则没有。您不必自己为此做分支判断。有一个端点会回答“该部署如何接受抵押品”,响应中会给出注资模式。
GET /account/deposit-target。需要 HMAC API 密钥。
主网上没有合成额度。向交易所询问应将抵押品发送到哪里,发送后轮询,直到余额体现这笔资金。
不要硬编码注资方式。响应是一个以 mode 区分的联合类型。您得到的模式是部署的属性,而不是您请求的属性,也没有任何参数可以选择模式。配置了真实充值合约的部署返回 onchain。其他所有部署返回 testnet-faucet,并指向其合成额度端点。根据 mode 做分支,同一段客户端代码即可在任一部署上完成注资。
说明
仅用于发现。
GET /account/deposit-target不会转移任何资金,也不会创建充值。按返回的指引操作是一个单独、明确的步骤。在
onchain模式下,onchain.address是充值合约地址,onchain.chain是其所在的链。两者都是部署配置,请读取它们,不要硬编码。403 EARLY_ACCESS_REQUIRED表示您的账户目前还不能在此注资。当部署将注资限定于抢先体验参与者时,它会拒绝未加入的账户,并且该拒绝在账户加入之前是永久性的。请勿重试。这一限制有意与POST /account/credit和POST /faucet保持一致,这样无法注资的账户就不会被告知如何注资。该端点绝不会为填充
onchain结构而捏造地址。如果配置为链上充值的部署地址格式错误,它会返回503 DEPOSIT_TARGET_MISCONFIGURED,而不是公布该地址,因为向错误地址充值会导致资金销毁。这是运营方的配置错误,而不是暂时性故障,重试无法解决。min_amount是建议值,不强制执行。它是让首笔交易可行的下限;较小的链上充值不会被拒绝。confirm在两种模式下完全相同,因此在任一部署上都可用。交易前请轮询GET /account,直到balance体现这笔资金。POST /account/credit是一个仅限测试网的水龙头,入账的 USDX 是合成的。契约自身的指引是:不要构建假定该操作在每个网络上都存在的注资流程。主网完全没有合成额度。GET /api/v1/bridge/assets列出支持的链,以及每条链上可充值的资产及其精度、最小金额和所需确认数。使用
GET /api/v1/bridge/deposits跟踪跨链充值,或通过GET /api/v1/bridge/deposits/{id}按其{tx_hash}:{log_index}id 跟踪单笔充值。该读取模型由 watcher 写入,这些端点只负责读取。链上转账不可撤销。请只从您控制的钱包发送指引中指定的资产。
完整流程是:在此注资,交易(后续步骤),然后提现。
GET /withdrawals列出您的记录,POST /withdrawals发起一笔提现。它通过以钱包自身密钥签名的 EIP-712WithdrawIntent进行身份验证,而不是 API 密钥,因此不会复用上面的 HMAC 凭证。跨链桥提现是一个单独的操作,即POST /api/v1/bridge/withdrawals。
Rust 暂不支持。请使用 cURL 示例。跨链桥步骤的高层客户端封装仍在开发中。
Python 暂不支持。请使用 cURL 示例。
TypeScript 暂不支持。请使用 cURL 示例。
CLI 暂不支持。请使用 cURL 示例。
请求体
无。GET /account/deposit-target 不接受参数,也没有请求体。
响应(onchain 模式,契约中 DepositTarget 的示例)
5. 浏览市场
GET /markets/{market_id}/ticker。需要 HMAC API 密钥。
列出可用的永续合约市场并查看当前价格。
响应
价格和数量精度
提交前请先取整。每个市场都声明了三条量化规则,不符合规则的订单会被交易所拒绝,而不是替您取整。
GET /markets 上的字段
规则
tick_size
限价必须是它的整数倍。
lot_size
订单数量必须是它的整数倍。
min_order_size
订单数量不得低于此值。
对于 BTC-USDX-PERP,这三个值分别为 0.5、0.001 和 0.001。因此价格 83000.25 无效,因为它不是 0.5 的整数倍;数量 0.0005 也无效,因为它同时低于最小交易单位和最小下单数量。83000.00 和 0.001 是有效的。
请按市场读取这些值,而不要硬编码。它们因市场而异(ETH-USDX-PERP 为 0.10 和 0.01,SOL-USDX-PERP 为 0.01 和 0.1),并且属于上线时的配置。市场规格(英文) 发布了每个已上线市场的当前表格。
向安全的一侧取整。将买入价格按最小价格变动向下取整,卖出价格向上取整,数量则按最小交易单位向下取整。将数量向上取整可能使订单超出您的权益所能支撑的保证金,订单随后会因其他原因被拒绝。
6. 下单
POST /orders。需要 HMAC API 密钥。
提交限价单或市价单。响应会确认订单已被接受。
说明
使用
"type": "market"以当前最优价格立即成交。可在一次
POST /orders/batch调用中批量提交多个订单。交易所按顺序处理它们,结果保持请求中的顺序。
请求体
响应
7. 撤单或修改
DELETE /orders/{order_id} · DELETE /orders · PATCH /orders/{order_id}。需要 HMAC API 密钥。
这是三个独立的操作:
DELETE /orders/{order_id}
撤销一个挂单。
DELETE /orders
撤销所有挂单,或通过 ?market_id= 撤销某一市场上的所有订单。
PATCH /orders/{order_id}
原子性撤单并替换:在一次调用中修改价格和/或数量。
说明
修改订单会返回一个带有新 id 的替换订单。
200响应体是新订单;您修改的那个 id 已不复存在。请跟踪返回给您的 id,而不是您发送的 id。修改订单时必须至少提供
price或size之一。修改订单的交易前保证金检查不计入被替换订单仍占用的保证金,因此按替换订单新增的保证金来计算。以相同数量重新定价不需要额外保证金,缩小数量则会释放保证金,而不是需要更多保证金。
强平订单不可修改。
修改订单时返回
409表示订单在您读取之后发生了变化。它在您读取和写入之间已成交或已被撤销。撤单与提交订单使用各自独立的速率限制额度。用完订单额度绝不会阻止撤单。只有带
bucket: cancel的429才表示您的撤单通道本身已饱和。参见速率限制。
8. 监控仓位
GET /positions。需要 HMAC API 密钥。
查看持有的仓位、未实现盈亏和账户健康状况。
响应
WebSocket
入门时使用轮询即可。实时订单簿或成交推送应使用数据流。
有两个 socket,它们不能互换:
GET /stream提供公开的市场数据,无需令牌。发送一条{"subscribe": [...]}消息即可。订单簿帧是完整的前20档快照,因此重连后无需重放任何内容。GET /ws需要来自POST /ws/token的令牌,除公开频道外还承载各账户的频道,带有op封装结构、序列号和重连游标。
每个页面都有频道列表、消息结构和重连规则。
在基于它进行开发之前:
断线撤单需要主动开启,按账户设置,默认关闭。使用
PUT /account/cancel-on-disconnect设置,使用对应的GET读取。它是一个失联保护开关。当您最后一个已认证的连接断开且未在宽限期内重连时,交易所会撤销您的挂单。没有它,断开的连接会让您的订单继续有效。检查
active,而不仅仅是enabled。enabled是您自己的开启设置。active还要求交易所端的功能开关已打开,因此active才能告诉您断线撤单是否会触发。账户可能读回enabled: true,却仍未受到保护。数据流不是仓位状态的权威来源。任何重连之后,请以
GET /positions和GET /account为准进行对账,而不是从上次中断处重放。
客户端
上面的代码片段使用以下包:
Rust
nexus_exchange
Python
nexus_exchange
TypeScript
@nexus-xyz/exchange-ts
CLI
nexus 命令
CLI 和各语言 SDK 在交易所 monorepo 之外分发。引导式演练没有说明它们的仓库,因此这里不提供安装说明。
后续步骤
概览:交易所 API 涵盖哪些内容以及如何组织
身份验证:会话令牌、HMAC 规范化以及 API 密钥管理的完整说明
订单类型:全部八种订单类型的要求矩阵,以及参考侧边栏中的 Trading 页面
GET /stream(公开,无需令牌)和GET /ws(令牌来自POST /ws/token):频道、消息结构和重连
最后更新于

