Skip to main content

认证

机器翻译译自英文(docs.alpaca.markets)本页 18 段已全部译完

如何调用我们的 API

Alpaca 的 API 可在不同的域名下使用,你首先需要确保调用的是正确的域名。本页介绍了以下场景中可用的机器对机器认证类型:

  • 如果你拥有实盘账户,可以调用:
    • api.alpaca.markets 上的 Trading API 端点
    • data.alpaca.markets 上的 Market Data API 端点
  • 如果你拥有模拟账户,可以调用:
    • paper-api.alpaca.markets 上的 Trading API 端点
    • data.alpaca.markets 上的 Market Data API 端点
  • 如果你是实盘经纪合作伙伴,可以调用:
    • broker-api.alpaca.markets 上的 Broker API 端点
    • data.alpaca.markets 上的 Market Data API 端点
    • authx.alpaca.markets 上的认证端点
  • 如果你是沙盒经纪合作伙伴,可以调用:
    • broker-api.sandbox.alpaca.markets 上的 Broker API 端点
    • data.sandbox.alpaca.markets 上的 Market Data API 端点
    • authx.sandbox.alpaca.markets 上的认证端点

如果你拥有多个账户(或者对于经纪合作伙伴而言,拥有多个代理经纪商),每个账户都有单独的凭证。例如,你无法使用实盘账户的凭证访问模拟 API,反之亦然。

认证流程

客户端凭证

Warning

🚧 客户端凭证认证流程尚不适用于 Trading API。

使用此流程时,你首先需要将凭证换取短期访问令牌,然后使用该令牌向我们的 API 进行认证。请勿为每次 API 调用都请求新的访问令牌。我们的令牌端点签发的访问令牌有效期为 15 分钟。

我们提供两种可用于此流程的凭证类型:

  • 使用客户端 ID 和客户端密钥(client_secret)——这更简单,因为你可以直接将创建凭证时生成的密钥传递到我们的令牌端点。请注意,我们仅支持在请求体中传递客户端密钥(client_secret_post),不支持在 Authorization 头中传递(client_secret_basic)。
  • 使用客户端 ID 和签名的客户端断言(private_key_jwt)——这可确保用于签名客户端断言的私钥永远不会离开你的保管,但这要求你在每次调用令牌端点之前,使用私钥构造并签名 JWT 令牌。有关如何操作的更多信息,请参阅 RFC 7523。

例如,以下是 Broker API 用户使用第一种方法从我们的令牌端点请求访问令牌的方式:

curl -X POST "https://authx.alpaca.markets/v1/oauth2/token" \
     -H "Content-Type: application/x-www-form-urlencoded" \
     -d "grant_type=client_credentials" \
     -d "client_id={YOUR_CLIENT_ID}" \
     -d "client_secret={YOUR_CLIENT_SECRET}"

响应中将包含一个访问令牌:

{
    "access_token": "{TOKEN}",
    "expires_in": 899,
    "token_type": "Bearer"
}

返回的令牌可用于向 Broker API 进行认证:

curl -X GET "https://broker-api.alpaca.markets/v1/accounts" \
     -H "Authorization: Bearer {TOKEN}"

旧版

我们较旧的认证流程允许你直接使用密钥 ID 和密钥进行认证。你有两种方式来认证请求:

  • 使用 HTTP 基本认证,将你的密钥 ID 作为用户名发送,将你的密钥作为密码发送。
  • 使用 APCA-API-KEY-ID 和 APCA-API-SECRET-KEY 头来发送你的密钥 ID 和密钥。

例如,以下是 Trading API 用户使用第二种方法向我们的 API 进行认证的方式:

curl -X GET "https://api.alpaca.markets/v2/account" \
     -H "APCA-API-KEY-ID: {YOUR_API_KEY_ID}" \
     -H "APCA-API-SECRET-KEY: {YOUR_API_SECRET_KEY}"