PACIFICA_API_REFERENCE.md 9.5 KB

Pacifica API 完整参考文档

文档来源: https://docs.pacifica.fi/api-documentation/api 更新时间: 2025-09-26 SDK支持: Python SDK - https://github.com/pacifica-fi/python-sdk

概述

Pacifica 是基于 Solana 的永续合约去中心化交易所,提供完整的 REST 和 WebSocket API 来支持程序化交易和账户管理。

关键特性

  • 🔐 安全认证: 支持API签名和硬件钱包集成
  • 实时数据: WebSocket 订阅实时市场和账户数据
  • 🎯 全面交易: 支持市价单、限价单、止损单等多种订单类型
  • 👥 子账户: 完整的子账户管理功能
  • 📊 数据丰富: 历史交易、资金费率、K线数据等

认证机制

1. API 签名认证

// 签名流程
const message = `${method}${path}${timestamp}${body}`
const signature = sign(message, privateKey)

2. 支持的认证方式

  • API Agent Keys: 用于程序化交易
  • 硬件钱包: 支持 Ledger、Phantom 等
  • 私钥签名: 标准的 Ed25519 签名

REST API 端点

基础信息

Base URL: https://api.pacifica.fi 内容类型: application/json 签名头: Pacifica-Signature

市场数据 API

1. 获取市场信息

GET /api/v1/info

响应: 返回所有可交易市场的基本信息

2. 获取价格信息

GET /api/v1/prices

响应: 所有交易对的最新价格

3. 获取K线数据

GET /api/v1/kline

参数:

  • symbol: 交易对符号
  • interval: 时间间隔 (1m, 5m, 15m, 1h, 4h, 1d)
  • startTime: 开始时间戳
  • endTime: 结束时间戳

4. 获取订单簿

GET /api/v1/book

参数:

  • symbol: 交易对符号
  • depth: 深度级别 (可选)

5. 获取最近交易

GET /api/v1/trades

参数:

  • symbol: 交易对符号
  • limit: 返回数量限制

6. 获取历史资金费率

GET /api/v1/funding

参数:

  • symbol: 交易对符号
  • startTime: 开始时间
  • endTime: 结束时间

账户管理 API

1. 获取账户信息

POST /api/v1/account/info

认证: 必需 响应: 账户基础信息、权益、保证金等

2. 更新杠杆

POST /api/v1/account/leverage

认证: 必需 参数:

{
  "account": "账户地址",
  "symbol": "交易对",
  "leverage": 10,
  "agent_wallet": "代理钱包地址",
  "timestamp": 1234567890,
  "expiry_window": 30000,
  "signature": "签名"
}

3. 更新保证金模式

POST /api/v1/account/margin_mode

认证: 必需 参数: 保证金模式设置

4. 获取仓位信息

GET /api/v1/account/positions

认证: 必需 响应: 当前所有持仓信息

5. 获取交易历史

GET /api/v1/account/trades

认证: 必需 参数:

  • symbol: 交易对 (可选)
  • startTime: 开始时间
  • endTime: 结束时间
  • limit: 数量限制

6. 获取资金历史

GET /api/v1/account/funding

认证: 必需 响应: 资金费率支付记录

7. 请求提现

POST /api/v1/account/withdraw

认证: 必需 参数: 提现金额和目标地址

8. 获取余额

GET /api/v1/account/balance

认证: 必需 响应: 账户各资产余额

子账户管理 API

1. 创建子账户

POST /api/v1/account/subaccount/create

认证: 必需 参数:

{
  "main_account": "主账户地址",
  "subaccount": "子账户地址",
  "timestamp": 1234567890,
  "expiry_window": 30000,
  "main_signature": "主账户签名",
  "sub_signature": "子账户签名"
}

2. 子账户资金转移

POST /api/v1/account/subaccount/transfer

认证: 必需 参数: 转移金额和方向

订单管理 API

1. 下市价单

POST /api/v1/order/market

认证: 必需 参数:

{
  "account": "账户地址",
  "symbol": "BTCUSDT",
  "side": "BUY", // BUY | SELL
  "quantity": "0.1",
  "reduce_only": false,
  "timestamp": 1234567890,
  "expiry_window": 30000,
  "signature": "签名"
}

2. 下限价单

POST /api/v1/order/limit

认证: 必需 参数:

{
  "account": "账户地址",
  "symbol": "BTCUSDT",
  "side": "BUY",
  "quantity": "0.1",
  "price": "50000.0",
  "time_in_force": "GTC", // GTC | IOC | FOK
  "post_only": false,
  "reduce_only": false,
  "timestamp": 1234567890,
  "expiry_window": 30000,
  "signature": "签名"
}

3. 下止损单

POST /api/v1/order/stop

认证: 必需 参数: 包含触发价格的止损单参数

4. 取消订单

POST /api/v1/order/cancel

认证: 必需 参数:

{
  "account": "账户地址",
  "order_id": "订单ID",
  "timestamp": 1234567890,
  "expiry_window": 30000,
  "signature": "签名"
}

5. 批量下单

POST /api/v1/order/batch

认证: 必需 参数: 多个订单的数组

6. 获取当前委托

GET /api/v1/order/open

认证: 必需 响应: 所有未成交订单

7. 获取订单历史

GET /api/v1/order/history

认证: 必需 参数:

  • symbol: 交易对 (可选)
  • startTime: 开始时间
  • endTime: 结束时间
  • limit: 数量限制

WebSocket API

连接信息

URL: wss://ws.pacifica.fi/ws 协议: WebSocket 消息格式: JSON

订阅主题

1. 价格订阅

{
  "method": "SUBSCRIBE",
  "params": ["prices@all"],
  "id": 1
}

2. 订单簿订阅

{
  "method": "SUBSCRIBE",
  "params": ["orderbook@BTCUSDT"],
  "id": 2
}

3. 交易订阅

{
  "method": "SUBSCRIBE",
  "params": ["trades@BTCUSDT"],
  "id": 3
}

4. K线订阅

{
  "method": "SUBSCRIBE",
  "params": ["candle@BTCUSDT@1m"],
  "id": 4
}

5. 账户余额订阅

{
  "method": "SUBSCRIBE",
  "params": ["balance@{account}"],
  "id": 5
}

6. 账户保证金订阅

{
  "method": "SUBSCRIBE",
  "params": ["margin@{account}"],
  "id": 6
}

7. 仓位订阅

{
  "method": "SUBSCRIBE",
  "params": ["positions@{account}"],
  "id": 7
}

8. 订单更新订阅

{
  "method": "SUBSCRIBE",
  "params": ["orders@{account}"],
  "id": 8
}

消息格式示例

价格更新消息

{
  "stream": "prices@all",
  "data": {
    "BTCUSDT": {
      "price": "50000.00",
      "change_24h": "2.5%",
      "volume_24h": "1000000"
    }
  }
}

订单簿更新消息

{
  "stream": "orderbook@BTCUSDT",
  "data": {
    "bids": [
      ["49900", "0.5"],
      ["49800", "1.0"]
    ],
    "asks": [
      ["50100", "0.3"],
      ["50200", "0.8"]
    ],
    "timestamp": 1234567890
  }
}

账户余额更新消息

{
  "stream": "balance@{account}",
  "data": {
    "USDT": {
      "available": "1000.00",
      "locked": "100.00"
    },
    "timestamp": 1234567890
  }
}

错误处理

HTTP 状态码

  • 200: 成功
  • 400: 请求参数错误
  • 401: 认证失败
  • 403: 权限不足
  • 404: 端点不存在
  • 429: 请求频率限制
  • 500: 服务器内部错误

错误响应格式

{
  "error": {
    "code": 1001,
    "message": "Invalid signature",
    "details": "Signature verification failed"
  }
}

常见错误码

  • 1001: 签名无效
  • 1002: 时间戳过期
  • 1003: 账户不存在
  • 1004: 余额不足
  • 1005: 订单不存在
  • 1006: 市场暂停交易

速率限制

REST API 限制

  • 公开端点: 每分钟 1000 次请求
  • 私有端点: 每分钟 500 次请求
  • 订单相关: 每秒 10 次请求

WebSocket 限制

  • 连接数: 每个IP最多 5 个连接
  • 订阅数: 每个连接最多 100 个订阅
  • 消息频率: 每秒 1000 条消息

交易规范

订单类型

  1. 市价单 (Market): 立即按市场价格执行
  2. 限价单 (Limit): 指定价格执行
  3. 止损单 (Stop): 触发价格后转为市价单
  4. 止损限价单 (Stop-Limit): 触发后转为限价单

时间有效性 (TIF)

  • GTC (Good Till Cancelled): 直到取消
  • IOC (Immediate Or Cancel): 立即执行或取消
  • FOK (Fill Or Kill): 全部成交或取消

订单状态

  • NEW: 新建订单
  • PARTIALLY_FILLED: 部分成交
  • FILLED: 完全成交
  • CANCELED: 已取消
  • REJECTED: 被拒绝
  • EXPIRED: 已过期

SDK 集成

Python SDK

pip install pacifica-fi

基础用法

from pacifica import PacificaClient

client = PacificaClient(
    base_url="https://api.pacifica.fi",
    private_key="your_private_key"
)

# 获取账户信息
account_info = client.get_account_info()

# 下限价单
order = client.place_limit_order(
    symbol="BTCUSDT",
    side="BUY",
    quantity="0.1",
    price="50000"
)

最佳实践

1. 安全建议

  • 使用环境变量存储私钥
  • 实施IP白名单
  • 定期轮换API密钥
  • 启用双重认证

2. 性能优化

  • 使用WebSocket获取实时数据
  • 实施指数退避重试机制
  • 批量处理订单操作
  • 缓存市场数据

3. 错误处理

  • 监控速率限制状态
  • 实施断线重连机制
  • 记录所有API调用
  • 设置超时和重试策略

技术支持

获取帮助

开发资源

  • API状态页面
  • 测试网环境
  • 示例代码库
  • 开发者社区

本文档基于 Pacifica 官方 API 文档整理,如有更新请参考官方文档