认证
机器翻译译自英文(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}"AI 翻译查看英文原文