掌握 Coinbase API:2024 最新教程,你的加密货币应用开发指南!

2025-03-17 00:05:19 生态 阅读 119

Coinbase API 开发文档详解

Coinbase 提供了一套强大的 API,允许开发者构建集成 Coinbase 平台的应用程序。这套 API 涵盖了账户管理、交易执行、行情数据获取等多个方面,为开发者提供了极大的灵活性。 本文将对 Coinbase API 的关键功能和使用方法进行详细介绍。

身份验证 (Authentication)

在使用 Coinbase API 之前,必须进行身份验证以确保安全访问。Coinbase 采用 OAuth 2.0 协议作为其身份验证机制。 因此,第一步是创建一个 Coinbase 开发者账号,并在该账号下注册你的应用程序。开发者账号的注册过程涉及提供应用程序的名称、描述、回调 URL 等信息。成功注册后,Coinbase 会分配给你一个客户端 ID (client ID) 和一个客户端密钥 (client secret),这两者是后续进行 OAuth 2.0 流程的关键凭证。

客户端 ID 是公开的标识符,用于在 OAuth 2.0 授权流程中标识你的应用程序。客户端密钥则是保密的,必须妥善保管,绝不能泄露给任何第三方。客户端密钥用于验证你的应用程序的身份,防止未经授权的访问。

OAuth 2.0 授权流程通常包括以下步骤:用户被重定向到 Coinbase 的授权服务器,用户登录并授权你的应用程序访问其 Coinbase 账户,Coinbase 的授权服务器将用户重定向回你的应用程序,并附带一个授权码 (authorization code)。然后,你的应用程序使用授权码和客户端 ID、客户端密钥向 Coinbase 的令牌端点 (token endpoint) 请求访问令牌 (access token) 和刷新令牌 (refresh token)。

访问令牌用于在后续的 API 请求中对用户进行身份验证。刷新令牌用于在访问令牌过期后获取新的访问令牌,而无需用户再次授权。访问令牌的有效期通常较短,而刷新令牌的有效期较长。正确实施 OAuth 2.0 流程对于安全地访问 Coinbase API 至关重要。

步骤:

  1. 注册 Coinbase 开发者账号: 访问 Coinbase Developer Platform( https://developers.coinbase.com/ )并创建一个账号。 开发者账号是使用 Coinbase API 的先决条件。注册时可能需要提供身份验证信息,确保符合 Coinbase 的安全协议。
  2. 创建应用程序: 在开发者控制台中,创建一个新的应用程序。创建应用程序时,需要为应用命名并选择适当的权限范围(scopes)。权限范围决定了应用程序可以访问的用户 Coinbase 账户信息的类型。务必选择最小权限原则,只申请应用程序实际需要的权限。在创建过程中,你需要指定一个回调 URL (redirect URI)。这是用户授权你的应用后,Coinbase 将用户重定向到的 URL。回调 URL 必须与你的应用服务器配置相匹配,否则授权流程将失败。
  3. 获取 Client ID 和 Client Secret: 创建成功后,你可以在应用程序的设置中找到你的客户端 ID 和客户端密钥。Client ID 是公开标识符,用于在授权流程中识别你的应用程序。Client Secret 是一个保密凭据,用于验证你的应用程序的身份。务必妥善保管 Client Secret,切勿将其暴露在客户端代码或公共存储库中。建议使用环境变量或安全配置管理工具来存储 Client Secret。

OAuth 2.0 流程:

  1. 授权请求: 你的应用程序需要引导用户至 Coinbase 的授权端点,启动授权流程。此步骤涉及构建一个特定的 URL,其中包括必要的参数:
    • client_id : 你的应用程序在 Coinbase 注册时获得的唯一标识符。
    • redirect_uri : 用户授权后,Coinbase 将重定向到的 URL。务必与你在 Coinbase 开发者控制台中配置的 URL 完全匹配。
    • response_type=code : 指定期望的授权类型为授权码流程。
    • scope : 定义应用程序请求的权限范围。例如, wallet:accounts:read 允许读取用户的账户信息, wallet:accounts:create 允许创建新账户。可以请求多个权限,以逗号分隔。

    以下是一个授权请求的示例 URL:

    GET https://www.coinbase.com/oauth/authorize?client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&response_type=code&scope=wallet:accounts:read,wallet:accounts:create,wallet:buys:create

  2. 用户授权: Coinbase 显示一个授权页面,清晰地列出你的应用程序请求访问的权限。用户必须明确同意授权,才能继续。未授权则流程终止。

    此页面由Coinbase托管,开发者无需自行构建用户界面。

  3. 重定向到回调 URL: 如果用户成功授权,Coinbase 会将用户重定向到你在授权请求中指定的 redirect_uri 。一个重要的 code 参数会被附加到 URL 中,作为授权码。

    例如: YOUR_REDIRECT_URI?code=AUTHORIZATION_CODE

    授权码是一个短期凭证,用于后续步骤中交换访问令牌。

  4. 获取访问令牌 (Access Token): 你的应用程序需要使用授权码,向 Coinbase 的令牌端点发送一个 POST 请求,以换取访问令牌。 此请求需要包含以下参数:
    • grant_type=authorization_code : 指定授权类型为授权码。
    • code : 从回调 URL 中获取的授权码。
    • client_id : 你的应用程序的客户端 ID。
    • client_secret : 你的应用程序的客户端密钥,用于验证请求的真实性。 客户端密钥应保密,切勿暴露在客户端代码中。
    • redirect_uri : 必须与授权请求中使用的 redirect_uri 相同。

    POST 请求示例:

    POST https://api.coinbase.com/oauth/token
    Content-Type: application/

            
    {
      "grant_type": "authorization_code",
      "code": "AUTHORIZATION_CODE",
      "client_id": "YOUR_CLIENT_ID",
      "client_secret": "YOUR_CLIENT_SECRET",
      "redirect_uri": "YOUR_REDIRECT_URI"
    }
            
        
  5. 接收访问令牌: 如果请求成功,Coinbase 会返回一个 JSON 响应,其中包含以下关键信息:
    • access_token : 访问令牌,用于代表用户访问 Coinbase API。
    • token_type : 令牌类型,通常为 "Bearer"。
    • expires_in : 访问令牌的有效期,以秒为单位。
    • refresh_token : 刷新令牌,用于在访问令牌过期后获取新的访问令牌,而无需再次征得用户授权。妥善保管刷新令牌。
    • scope : 与访问令牌关联的权限范围。

    响应示例:

            
    {
      "access_token": "ACCESS_TOKEN",
      "token_type": "Bearer",
      "expires_in": 3600,
      "refresh_token": "REFRESH_TOKEN",
      "scope": "wallet:accounts:read,wallet:accounts:create"
    }
            
        

使用访问令牌

成功获取访问令牌后,便可在后续的 API 请求中利用该令牌进行身份验证和授权。为确保 API 能够识别并验证您的身份,请在每个请求的 Authorization 请求头中包含 Bearer 字符串。 此字符串告知服务器您已获得授权并允许访问受保护的资源。

有效的 Authorization 请求头应遵循以下格式:

Authorization: Bearer ACCESS_TOKEN

其中, ACCESS_TOKEN 必须替换为您实际获得的访问令牌。请务必妥善保管您的访问令牌,避免泄露,因为持有有效访问令牌的第三方可以模拟您的身份进行 API 调用。 建议使用 HTTPS (TLS) 来加密所有 API 通信,从而保护访问令牌在传输过程中的安全。 某些 API 可能允许通过查询参数传递访问令牌,但这通常不推荐,因为它可能将令牌暴露在服务器日志或浏览器历史记录中,存在安全风险。

刷新令牌 (Refresh Token):

访问令牌(Access Token)是具有有限有效期的安全凭证,用于授权客户端应用程序访问受保护的资源。为了确保安全性,访问令牌通常不会设置过长的有效期。当访问令牌过期后,客户端应用程序需要使用刷新令牌(Refresh Token)来获取一个全新的、有效的访问令牌,而无需用户重新进行身份验证。

刷新令牌是一种长期有效的凭证,专门用于获取新的访问令牌。它代表了用户授予客户端应用程序的持久授权。为了获取新的访问令牌,客户端应用程序需要向令牌端点(Token Endpoint)发送一个 HTTP POST 请求,并在请求体中提供以下参数:

  • grant_type : 必须设置为 refresh_token ,表明请求类型为刷新令牌授权。
  • refresh_token : 提供之前获得的刷新令牌的值。这是证明客户端应用程序拥有刷新访问令牌权限的关键凭证。
  • client_id : 提供客户端应用程序的唯一标识符。该 ID 用于标识发起请求的应用程序。
  • client_secret : 提供客户端应用程序的密钥。这是一个保密信息,用于验证客户端应用程序的身份。务必妥善保管,避免泄露。

请求示例:

POST https://api.coinbase.com/oauth/token
Content-Type: application/

请求体:

{
   "grant_type": "refresh_token",
   "refresh_token": "YOUR_REFRESH_TOKEN",
   "client_id": "YOUR_CLIENT_ID",
   "client_secret": "YOUR_CLIENT_SECRET"
}

请将 YOUR_REFRESH_TOKEN , YOUR_CLIENT_ID , 和 YOUR_CLIENT_SECRET 替换为实际的值。 成功发送请求后,令牌端点将返回一个新的访问令牌和一个新的刷新令牌。客户端应用程序应该安全地存储新的刷新令牌,以便将来使用。

重要提示: 刷新令牌的安全性至关重要。如果刷新令牌泄露,攻击者可以使用它来获取新的访问令牌,从而冒充用户访问受保护的资源。因此,务必采取适当的安全措施来保护刷新令牌,例如:

  • 安全地存储刷新令牌,例如使用加密存储。
  • 定期轮换刷新令牌。
  • 监控刷新令牌的使用情况,及时发现异常行为。

账户管理 (Account Management)

Coinbase API 提供了一套强大的接口,允许开发者管理用户的 Coinbase 账户,包括原生加密货币钱包和法币账户。通过这些接口,您可以全面掌控账户生命周期,实现资产管理、交易监控等核心功能。

账户列表: API 提供了获取用户所有 Coinbase 账户列表的功能。返回的列表包含每个账户的详细信息,如账户 ID、币种类型(如 BTC、ETH、USD)、账户余额、账户名称、账户类型(如 wallet、fiat)等。开发者可以利用这些信息构建用户友好的账户概览界面,方便用户查看和管理他们的数字资产。

创建账户: 您可以利用 API 为用户创建新的 Coinbase 账户。创建账户时,需要指定账户的币种类型。例如,您可以为用户创建一个新的比特币钱包或以太坊钱包。 API 将返回新创建账户的 ID 和其他相关信息。创建账户后,用户即可开始接收和发送相应币种的加密货币。

账户详情: API 允许您获取单个 Coinbase 账户的详细信息。通过指定账户 ID,您可以获取该账户的最新余额、交易历史、账户类型、账户状态等信息。这使得开发者能够构建更精细化的账户管理功能,例如实时余额监控、交易分析、风险控制等。

账户类型: Coinbase API 支持多种账户类型,包括:

  • Wallet (钱包): 用于存储和管理加密货币的账户。
  • Fiat (法币): 用于存储和管理法币的账户,例如美元、欧元等。
  • Vault (金库): 具有更高安全级别的加密货币存储账户,通常需要多重签名授权才能进行交易。

通过理解不同账户类型的特点,开发者可以根据实际需求选择合适的账户类型,并利用 API 实现相应的账户管理功能。例如,对于需要高安全级别的资产,可以选择使用 Vault 账户。

使用 Coinbase API 进行账户管理,请务必遵循 Coinbase 开发者文档中的最佳实践,确保账户安全和用户隐私。同时,需要处理好 API 密钥的安全存储和管理,防止泄露导致的安全风险。

获取账户列表:

GET https://api.coinbase.com/v2/accounts

此API端点允许您检索与您的Coinbase账户关联的所有账户的列表。这包括您的所有加密货币钱包和法币账户,例如美元、欧元或英镑钱包。通过此端点,您可以获得账户的详细信息,例如账户ID、账户余额、币种类型以及账户是否为主要账户。

请求示例:

假设您希望获取您的所有账户信息,您只需向 https://api.coinbase.com/v2/accounts 发送一个GET请求。您需要在请求头中包含您的API密钥,以便Coinbase验证您的身份。

响应示例:

成功请求后,API将返回一个JSON对象,其中包含一个账户数组。每个账户对象可能包含以下字段:

  • id : 账户的唯一标识符。
  • name : 账户的名称,例如 "BTC Wallet"。
  • primary : 指示此账户是否为主要账户的布尔值。
  • type : 账户类型,例如 "wallet" 或 "fiat"。
  • currency : 一个包含货币代码(例如 "BTC" 或 "USD")和名称的JSON对象。
  • balance : 一个包含账户余额、金额和货币代码的JSON对象。
  • created_at : 账户创建的日期和时间。
  • updated_at : 账户上次更新的日期和时间。
  • resource : API资源的URL。
  • resource_path : API资源的相对路径。

使用场景:

使用此端点可以构建各种应用程序,例如:

  • 显示用户的账户余额和历史记录。
  • 自动执行交易,例如定期购买或出售加密货币。
  • 集成Coinbase数据到第三方财务管理工具。

注意事项:

  • 确保您已正确配置您的API密钥和权限。
  • 遵守Coinbase API的使用条款和速率限制。
  • 处理敏感数据时,请务必采取适当的安全措施。

创建新账户:

使用 POST 请求向 Coinbase API 发送请求,以创建一个新的加密货币账户。 该端点允许您在您的 Coinbase 账户下创建单独的账户,用于组织和管理您的加密货币资产。

请求 URL: https://api.coinbase.com/v2/accounts

请求方法: POST

Content-Type: application/ 。 确保您在请求头中正确设置了 Content-Type ,以便服务器能够正确解析您的请求体。

请求体 (JSON):

{
   "name":  "My New Account"
}

请求体参数说明:

  • name (必填): 新账户的名称。 这将是您在 Coinbase 界面中识别该账户的方式,所以请选择一个具有描述性的名称。账户名称应具有唯一性,便于您管理不同的资产组合。

注意:

  • 在发送请求之前,您需要确保您已获得有效的 API 密钥,并且已经正确配置了身份验证。 通常,您需要将 API 密钥添加到请求头中。
  • 创建新账户可能需要支付少量的费用,具体取决于 Coinbase 的服务条款。
  • 您可以通过 Coinbase Pro API 创建更高级的账户类型,例如交易账户。

示例:

以下是一个使用 cURL 的示例,展示如何使用 API 创建新账户:

curl -X POST \
  https://api.coinbase.com/v2/accounts \
  -H 'Content-Type: application/' \
  -H 'CB-ACCESS-KEY: YOUR_API_KEY' \
  -H 'CB-ACCESS-SIGN: YOUR_API_SIGNATURE' \
  -H 'CB-ACCESS-TIMESTAMP: YOUR_API_TIMESTAMP' \
  -d '{
    "name": "My New Account"
  }'

请务必替换 YOUR_API_KEY , YOUR_API_SIGNATURE , 和 YOUR_API_TIMESTAMP 为您的实际凭据。 CB-ACCESS-SIGN 是使用您的 API 密钥、API 密钥的秘密以及请求时间戳计算出的 HMAC 签名,以确保请求的完整性和安全性。

获取账户详细信息

使用 GET 方法从 Coinbase API 获取指定账户的详细信息。

请求 URL: https://api.coinbase.com/v2/accounts/:account_id

URL 参数:

  • :account_id (必选): 您想要检索的账户的唯一标识符。 例如,`a1b2c3d4-e5f6-7788-9900-aabbccddeeff`。

请求头:

请确保您的请求包含以下认证头信息:

  • CB-ACCESS-KEY : 您的 API 密钥。
  • CB-ACCESS-SIGN : 使用您的 API 密钥、秘密密钥和请求时间戳生成的签名。
  • CB-ACCESS-TIMESTAMP : 请求的时间戳 (以秒为单位)。
  • CB-VERSION : API 版本 (例如, 2023-01-01 )。 建议使用最新的稳定版本。

请求示例:


GET https://api.coinbase.com/v2/accounts/a1b2c3d4-e5f6-7788-9900-aabbccddeeff
CB-ACCESS-KEY: YOUR_API_KEY
CB-ACCESS-SIGN: YOUR_API_SIGNATURE
CB-ACCESS-TIMESTAMP: 1678886400
CB-VERSION: 2023-01-01

响应示例 (成功):


{
  "data": {
    "id": "a1b2c3d4-e5f6-7788-9900-aabbccddeeff",
    "name": "我的比特币钱包",
    "currency": "BTC",
    "balance": {
      "amount": "0.005",
      "currency": "BTC"
    },
    "type": "wallet",
    "primary": true,
    "active": true,
    "created_at": "2023-03-15T10:00:00Z",
    "updated_at": "2023-03-15T10:00:00Z",
    "resource": "account",
    "resource_path": "/v2/accounts/a1b2c3d4-e5f6-7788-9900-aabbccddeeff"
  }
}

响应字段说明:

  • id : 账户的唯一标识符。
  • name : 账户的自定义名称。
  • currency : 账户持有的加密货币代码 (例如, BTC, ETH, LTC)。
  • balance : 账户余额。 包括 amount (余额数量) 和 currency (余额货币)。
  • type : 账户类型 (例如, "wallet", "fiat" 等)。
  • primary : 指示账户是否为主要账户。
  • active : 指示账户是否处于活动状态。
  • created_at : 账户创建的时间戳。
  • updated_at : 账户最后更新的时间戳。
  • resource : 资源类型 (此处为 "account")。
  • resource_path : 资源的 API 路径。

错误处理:

如果请求失败,API 将返回一个包含错误信息的 JSON 响应。常见的错误包括:

  • 400 Bad Request : 请求无效,例如缺少必需的参数。
  • 401 Unauthorized : 认证失败。 请检查您的 API 密钥、秘密密钥和签名。
  • 404 Not Found : 找不到指定的账户。
  • 500 Internal Server Error : Coinbase 服务器内部错误。

请务必仔细检查您的请求参数和认证信息,并根据 API 文档处理可能的错误。

交易 (Transactions)

Coinbase API 提供了一套强大的工具,允许开发者执行各种加密货币交易操作,例如发送、接收、以及查询交易历史。通过 API,你可以编程方式地创建新的交易,将数字资产转移到其他用户或地址。这包括指定接收者的地址、发送的加密货币数量、以及可选的交易备注。API 允许你管理你的 Coinbase 账户中的资金,并与其他区块链网络进行交互。

使用 Coinbase API 发起交易时,你需要注意几个关键要素。需要明确指定要发送的加密货币类型,例如比特币 (BTC)、以太坊 (ETH) 或莱特币 (LTC)。必须提供有效的接收者地址。第三,需要确定发送的金额,这会影响交易费用和确认速度。API 允许你自定义交易参数,以满足特定需求,例如设置手续费优先级,以加快交易确认速度。API 提供了安全机制,例如多重身份验证 (MFA),以确保交易的安全性。

除了发送交易,Coinbase API 还支持接收加密货币。你可以使用 API 生成唯一的接收地址,并将这些地址提供给付款人。当收到加密货币时,API 会发出通知,允许你实时跟踪交易状态。API 还提供了查询交易历史记录的功能,你可以检索特定时间段内的所有交易,包括发送和接收的交易。这些信息对于财务报告、审计和税务合规非常有用。

需要注意的是,在使用 Coinbase API 进行交易时,务必仔细阅读 API 文档,了解所有参数和限制。强烈建议使用测试环境进行测试,以确保交易流程的正确性。遵循最佳安全实践,例如使用强密码、启用 MFA 和定期审查 API 密钥,对于保护你的账户和资金至关重要。

发送加密货币:

使用 Coinbase API 发送加密货币的请求方法为 POST ,目标 URL 为 https://api.coinbase.com/v2/accounts/:account_id/transactions 。其中 :account_id 需要替换为实际的 Coinbase 账户 ID,用于指定从哪个账户发起交易。

请求头 Content-Type 必须设置为 application/ ,表明请求体的内容格式为 JSON。

以下是一个发送加密货币的 JSON 请求体示例:


{
  "type": "send",
  "to": "[email protected]",
  "amount": "0.01",
  "currency": "BTC",
  "description": "Sending BTC"
}

该请求体包含以下字段:

  • type : 交易类型,必须设置为 "send" ,表示发送加密货币。
  • to : 收款人地址,可以是电子邮件地址(如果收款人也是 Coinbase 用户),也可以是加密货币地址(例如,比特币地址)。
  • amount : 发送的加密货币数量,必须为字符串类型,并使用小数点分隔整数和小数部分。
  • currency : 加密货币类型,使用其代码表示,例如 "BTC" 代表比特币, "ETH" 代表以太坊。
  • description : (可选) 交易描述,可以添加备注信息,方便记录和识别交易。

重要提示:

  • 在实际使用中, [email protected] 需要替换为实际的收款人邮箱或加密货币地址。
  • amount 需要替换为实际发送的加密货币数量。
  • currency 需要替换为实际发送的加密货币代码。
  • 发送交易可能需要用户身份验证和授权,请确保 API 密钥具有足够的权限。
  • 请仔细检查收款人地址和发送数量,错误的地址或数量可能导致资金丢失。
  • Coinbase API 会收取一定的交易手续费,手续费会在交易确认前显示。

请求加密货币:

使用 Coinbase API 请求加密货币,你需要向指定的账户 ID 发送 POST 请求。请求 URL 如下:

POST https://api.coinbase.com/v2/accounts/:account_id/transactions

请确保在请求头中设置 Content-Type application/ ,以表明你发送的是 JSON 格式的数据。

请求体应包含以下 JSON 结构,用于指定请求的详细信息:


{
  "type": "request",
  "to": "[email protected]",
  "amount": "0.01",
  "currency": "BTC",
  "description": "Requesting BTC"
}

各个字段的含义如下:

  • type : 必须设置为 "request" ,表明这是一笔请求加密货币的交易。
  • to : 接收请求的用户的邮箱地址,即 [email protected] 。 Coinbase将向该邮箱地址发送请求通知。
  • amount : 请求的加密货币数量,例如 "0.01" 。 该值应为字符串类型。
  • currency : 请求的加密货币种类,例如 "BTC" 代表比特币。支持的币种取决于Coinbase平台。
  • description : 对请求的描述信息,例如 "Requesting BTC" 。 这将帮助接收者了解请求的目的。

请注意, :account_id 需要替换为你实际的 Coinbase 账户 ID。你需要有效的 API 密钥,并配置正确的授权头才能成功发送此请求。

请确保请求的 amount currency 是有效且受支持的。 过低的请求金额或不支持的币种可能导致请求失败。

获取交易历史:

使用 GET 方法请求以下端点,可以检索指定 Coinbase 账户的交易历史记录。交易历史记录包括所有与该账户相关的交易,例如买入、卖出、转账、存款和取款等操作。

GET https://api.coinbase.com/v2/accounts/:account_id/transactions

参数说明:

  • :account_id : 这是必需的参数,代表您要查询的 Coinbase 账户 ID。您需要替换为实际的账户 ID。账户 ID 可以在您的 Coinbase 账户设置或通过 API 获取账户列表来找到。

请求示例:

假设您的账户 ID 是 A1B2C3D4 ,那么请求的 URL 将是:

GET https://api.coinbase.com/v2/accounts/A1B2C3D4/transactions

响应示例 (JSON):


{
  "data": [
    {
      "id": "TRANSACTION_ID_1",
      "type": "send",
      "status": "completed",
      "amount": {
        "amount": "1.00000000",
        "currency": "BTC"
      },
      "native_amount": {
        "amount": "-$60000.00",
        "currency": "USD"
      },
      "details": {
        "title": "Sent Bitcoin",
        "subtitle": "to Crypto Address"
      },
      "created_at": "2023-10-27T10:00:00Z",
      "updated_at": "2023-10-27T10:00:00Z",
      "resource": "transaction",
      "resource_path": "/v2/accounts/ACCOUNT_ID/transactions/TRANSACTION_ID_1"
    },
    {
      "id": "TRANSACTION_ID_2",
      "type": "receive",
      "status": "completed",
      "amount": {
        "amount": "0.50000000",
        "currency": "ETH"
      },
      "native_amount": {
        "amount": "$1000.00",
        "currency": "USD"
      },
      "details": {
        "title": "Received Ethereum",
        "subtitle": "from Another Coinbase Account"
      },
      "created_at": "2023-10-26T15:30:00Z",
      "updated_at": "2023-10-26T15:30:00Z",
      "resource": "transaction",
      "resource_path": "/v2/accounts/ACCOUNT_ID/transactions/TRANSACTION_ID_2"
    },

    ...
  ],
  "pagination": {
    "ending_before": null,
    "starting_after": null,
    "limit": 25,
    "order": "desc",
    "previous_uri": null,
    "next_uri": "/v2/accounts/ACCOUNT_ID/transactions?starting_after=TRANSACTION_ID_2"
  }
}

响应字段说明:

  • id : 交易的唯一标识符。
  • type : 交易类型,例如 "send" (发送) 或 "receive" (接收)。
  • status : 交易状态,例如 "completed" (已完成), "pending" (待处理)。
  • amount : 交易的加密货币数量和币种。
  • native_amount : 交易的当地货币等值金额和币种。
  • details : 交易的详细信息,包括标题和副标题。
  • created_at : 交易创建的时间戳。
  • updated_at : 交易最后更新的时间戳。
  • resource : 资源的类型,通常为 "transaction"。
  • resource_path : 资源的 API 路径。

分页:

Coinbase API 使用分页来处理大量的交易数据。 您可以使用 pagination 对象中的 next_uri 字段来获取下一页的交易记录。 limit 字段表示每页返回的交易数量,默认为25。您可以使用 starting_after ending_before 参数自定义分页。

错误处理:

如果请求失败,API 将返回一个包含错误信息的 JSON 响应。 常见的错误包括无效的 account_id 、无效的 API 密钥或请求速率限制。

行情数据 (Market Data)

Coinbase API 提供对实时加密货币行情数据的强大访问能力,允许开发者和交易者获取最新的价格、交易量和其他关键市场指标。通过利用该API,用户可以构建复杂的交易策略、创建数据驱动的应用程序以及执行深入的市场分析。行情数据包括但不限于:

  • 实时价格 (Real-time Price): 获取特定加密货币的最新成交价格,通常以美元或其他法币计价。这包括买入价 (Bid Price) 和卖出价 (Ask Price),反映了当前市场供需情况。
  • 交易量 (Volume): 了解特定时间段内加密货币的交易量,是衡量市场活跃度和流动性的重要指标。高交易量通常意味着更高的流动性和更小的价格波动。
  • 最高价/最低价 (High/Low Prices): 获取特定时间段内加密货币的最高成交价和最低成交价,有助于识别价格波动范围和潜在的支撑阻力位。
  • 开盘价/收盘价 (Open/Close Prices): 了解特定时间段内加密货币的开盘价和收盘价,对于分析价格趋势和判断市场情绪至关重要。
  • 24小时价格变化 (24-hour Price Change): 查看加密货币在过去24小时内的价格变动百分比和绝对值,快速评估其表现。
  • 成交量加权平均价 (VWAP - Volume Weighted Average Price): 计算特定时间段内基于交易量的加权平均价格,能够更准确地反映实际成交价格。
  • 市场深度 (Market Depth): 获取买单和卖单的列表,了解市场中不同价格水平上的流动性分布情况。也被称为订单簿 (Order Book)。

Coinbase API 提供的行情数据对于各种应用场景都至关重要,例如算法交易、风险管理、投资组合监控和市场研究。开发者可以利用这些数据构建自动化交易机器人、开发行情看板应用程序以及创建高级分析工具。

获取汇率:

使用 Coinbase API 获取指定加密货币(例如比特币 BTC)的汇率信息。

请求方法: GET

请求 URL: https://api.coinbase.com/v2/exchange-rates?currency=BTC

参数说明:

  • currency (必选): 指定要查询汇率的加密货币代码。 在本例中,使用 "BTC" 查询比特币的汇率。 可以替换为其他支持的加密货币代码,例如 "ETH" (以太坊) 或 "LTC" (莱特币)。

响应示例 (JSON):


{
  "data": {
    "currency": "BTC",
    "rates": {
      "AED": "147513.49",
      "AFN": "3775616.08",
      "ALL": "3573303.42",
      // ... 更多货币对 ...
      "USD": "39950.00",
      "YER": "9987495.48",
      "ZAR": "747133.89"
    }
  }
}

响应说明:

  • currency : 返回的加密货币代码 (例如: "BTC")。
  • rates : 包含不同法币 (法定货币) 对应的汇率。 例如, "USD": "39950.00" 表示 1 BTC 等于 39950 美元。

错误处理:

如果请求失败,API 将返回一个包含错误信息的 JSON 对象。常见的错误包括:

  • 无效的 currency 参数: 如果指定的加密货币代码无效或不支持,API 将返回一个错误。
  • 请求频率限制: Coinbase API 对请求频率有限制。 如果超过限制,API 将返回一个错误。

注意事项:

  • 汇率数据是动态变化的,请定期获取最新数据。
  • Coinbase API 需要 API 密钥进行身份验证,请参考 Coinbase 开发者文档获取 API 密钥。 虽然此端点可能允许在有限范围内免密钥访问,但建议使用 API 密钥以获得更高的请求配额和更稳定的服务。
  • 不同的交易所和 API 提供商可能会提供略有不同的汇率。 请选择可靠的数据来源。

获取比特币买卖价格 (Buy/Sell Price):

通过 Coinbase API 获取比特币 (BTC) 兑美元 (USD) 的实时买入和卖出价格。

买入价格 (Buy Price): 获取您通过 Coinbase 购买比特币的价格。此价格包含 Coinbase 的费用。
GET https://api.coinbase.com/v2/prices/BTC-USD/buy

卖出价格 (Sell Price): 获取您通过 Coinbase 出售比特币的价格。此价格同样包含 Coinbase 的费用。
GET https://api.coinbase.com/v2/prices/BTC-USD/sell

响应 (Response): API 将返回一个 JSON 对象,其中包含价格信息。关键字段包括:

  • amount : 以美元 (USD) 表示的价格。
  • currency : 货币代码 (USD)。
  • base : 基础货币代码 (BTC)。
  • quote : 报价货币代码 (USD)。

注意事项:

  • 这些价格是近似值,可能会因市场波动而发生变化。
  • 实际执行价格可能会略有不同,具体取决于交易时的市场状况和 Coinbase 的费用结构。
  • 需要有效的 API 密钥才能访问 Coinbase API。
  • 请务必参考 Coinbase API 文档获取最新信息和限制。

获取现货价格 (Spot Price):

使用 GET 方法向 Coinbase API 发送请求,以获取指定交易对的实时现货价格。现货价格反映了当前市场上买家愿意支付,卖家愿意接受的即时价格。

请求示例:

GET https://api.coinbase.com/v2/prices/BTC-USD/spot

API 端点详解:

  • https://api.coinbase.com/v2/prices/ : Coinbase API 的基础 URL,用于访问价格相关数据。
  • BTC-USD : 交易对标识符。 "BTC" 代表比特币 (Bitcoin),"USD" 代表美元 (United States Dollar)。可以替换为其他支持的交易对,例如 ETH-USD (以太坊/美元) 或 LTC-BTC (莱特币/比特币)。
  • spot : 指定要获取现货价格。 API 还可以提供其他类型的价格信息,例如买入价 (buy) 或卖出价 (sell)。

响应数据 (示例):


{
  "data": {
    "base": "BTC",
    "currency": "USD",
    "amount": "29500.50"
  }
}

响应数据字段说明:

  • base : 基础货币代码,例如 "BTC"。
  • currency : 报价货币代码,例如 "USD"。
  • amount : 当前现货价格,以报价货币表示。例如,上例表示 1 BTC 的价格为 29500.50 美元。

注意事项:

  • Coinbase API 可能会有速率限制。请查阅 Coinbase 官方 API 文档以了解最新的速率限制政策,并合理控制请求频率。
  • 现货价格是动态变化的,因此应该定期刷新数据以获取最新的价格信息。
  • 确保你的应用程序能够正确处理 API 返回的 JSON 格式数据。
  • 出于安全考虑,强烈建议使用 HTTPS 协议进行 API 调用。
  • 在生产环境中,请务必妥善处理 API 密钥,防止泄露。

其他功能

Coinbase API 不仅限于基础的交易和账户管理,还提供了更为丰富的功能集,以满足开发者和商户的各种需求。这些功能扩展了 Coinbase 的应用场景,使其能够集成到更广泛的业务流程中。

  • 支付按钮 (Payment Buttons): 开发者可以利用 Coinbase API 创建定制化的支付按钮,并将其无缝嵌入到网站、电子商务平台或移动应用程序中。这些按钮允许用户使用其 Coinbase 账户直接进行支付,简化了购买流程,并减少了支付摩擦。开发者可以自定义按钮的样式、价格和描述,以适应不同的产品和品牌需求。通过使用支付按钮,商户可以快速接受加密货币支付,而无需复杂的集成过程。
  • 报告 (Reports): Coinbase API 提供强大的报告功能,允许用户生成详细的账户活动报告。这些报告涵盖交易历史、余额变动、费用支出等关键信息,可用于财务分析、审计和税务报告。用户可以根据时间范围、交易类型和其他条件筛选数据,生成定制化的报告。这些报告有助于用户更好地了解其加密货币资产的流动情况,并做出明智的财务决策。
  • Webhooks: Webhooks 是一种强大的事件通知机制,允许应用程序实时接收 Coinbase 平台发生的事件的更新。当用户的账户收到付款、交易完成或发生其他重要事件时,Coinbase 会自动向预先配置的 URL 发送 HTTP POST 请求。开发者可以利用 Webhooks 构建响应式应用程序,例如自动更新订单状态、发送交易确认通知或监控账户安全。通过使用 Webhooks,开发者可以避免轮询 API,从而提高应用程序的效率和响应速度。

错误处理 (Error Handling)

Coinbase API 采用标准的 HTTP 状态码体系,清晰地反馈 API 请求的处理结果。 例如, 200 OK 表示请求成功,而 4xx 和 5xx 范围的状态码则表明发生了客户端或服务器端错误。 为了更精细地了解错误详情,错误的响应通常会包含一个 JSON 对象。 该 JSON 对象至少包含两个关键字段: error (或 errors ,当存在多个错误时) 和 message error 字段通常是一个预定义的错误代码,方便开发者进行自动化错误处理。 message 字段则提供了对错误的更详细、人类可读的描述,有助于调试和问题排查。

常见的错误类型包括但不限于:

  • 400 Bad Request: 通常是由于请求参数不正确、缺失必要参数,或者参数格式错误导致。 开发者应仔细检查请求,确保所有参数都符合 API 文档的要求。
  • 401 Unauthorized: 表示请求缺少有效的身份验证凭据,例如无效的 API 密钥或 OAuth 令牌。 开发者应检查 API 密钥是否已正确设置,并且 OAuth 令牌是否已过期或被撤销。
  • 403 Forbidden: 表示服务器拒绝执行请求,即使客户端已通过身份验证。 这通常是因为客户端没有足够的权限访问请求的资源。
  • 404 Not Found: 表示请求的资源不存在。 开发者应检查请求的 URL 是否正确。
  • 429 Too Many Requests: 表示客户端在短时间内发送了过多的请求,超过了 API 的速率限制。 开发者应实施速率限制策略,以避免超出限制。 Coinbase API 通常会在响应头中返回有关速率限制的信息,例如剩余请求次数和重置时间。
  • 500 Internal Server Error: 表示服务器遇到了意外的错误,无法完成请求。 这通常是服务器端的问题,开发者可以稍后重试请求。

开发者在集成 Coinbase API 时,必须仔细阅读 API 文档中关于错误处理的章节,并针对不同的错误代码编写相应的处理逻辑。 例如,可以捕获 429 错误,并使用指数退避算法来重试请求。 对于 400 错误,可以向用户显示友好的错误消息,提示用户检查输入参数。 开发者还应该记录所有的 API 错误,以便进行监控和分析。

版本控制 (Version Control)

Coinbase API 采用版本控制策略,旨在提供稳定和可预测的接口行为,同时允许引入新的功能和改进,而不会破坏现有的集成。 每个 API 版本都代表着一组特定的功能、参数和响应结构,客户端可以依赖这些特性保持应用的稳定运行。

当前版本为 v2 。 这意味着所有请求都应该针对版本 2 的 API 端点。 使用版本控制的重要性在于,当 Coinbase API 进行重大更改或添加新功能时,旧版本的 API 仍然可用,允许开发者有充足的时间来适应和迁移到新版本,避免因未经兼容性测试的更新而导致的服务中断。

在发送 API 请求时,务必明确指定正确的版本。 通常,这可以通过在 API 请求的 URL 中包含版本号来实现,例如 https://api.coinbase.com/v2/... 。 如果没有指定版本,API 可能会采用默认版本,但这可能会在未来发生变化,因此建议始终显式指定版本。 正确的版本控制确保您的应用程序行为可预测,并且可以随着 Coinbase API 的发展而持续运行。错误的版本可能导致请求失败、数据不一致或其他不可预料的问题。

建议开发者定期关注 Coinbase 官方发布的 API 更新日志和版本迁移指南,以便及时了解新版本的功能、变更和最佳实践,并做好相应的升级准备,确保应用程序始终与最新的 API 版本保持兼容。

速率限制 (Rate Limiting)

为了确保 Coinbase API 的稳定性和高可用性,防止滥用并保障所有用户的服务质量,Coinbase 实施了速率限制策略。这些策略旨在控制客户端在特定时间段内可以发出的 API 请求数量。 当您的应用程序超过了预定的速率限制,API 将返回一个 429 Too Many Requests HTTP 状态码,表明请求已被服务器拒绝。

开发者必须采取必要的预防措施,以避免超出速率限制。这意味着需要精心设计应用程序的请求模式,并主动监控API响应头中的速率限制相关信息。 一种常见的策略是实现 指数退避算法 。 当收到 429 Too Many Requests 错误时,应用程序不是立即重试,而是等待一段时间后重试,并且每次重试都将等待时间加倍(或乘以一个因子),从而降低在短时间内再次触发速率限制的风险。 缓存频繁请求的数据也可以显著减少API请求的数量。

Coinbase API 的具体速率限制策略(包括允许的请求数量、时间窗口以及重置时间等详细信息)会在官方的 Coinbase API 文档中详细说明。开发者应仔细阅读并理解这些策略,以便根据自身应用程序的需求进行优化。速率限制可能因 API 端点、认证方式以及其他因素而异。务必参考最新的官方文档,以获取最准确和最新的信息。 除了速率限制,Coinbase可能还会实施其他类型的限制,例如每日请求限制或者每个用户的总请求限制,这些也需要在开发过程中予以考虑。

安全性 (Security)

在使用 Coinbase API 时,安全性至关重要,务必高度重视。保护你的 client_id client_secret ,切勿将它们泄露给任何第三方,包括同事、朋友或在线社区。这些凭证是访问你 Coinbase 账户的密钥,一旦泄露,可能导致未经授权的访问和资金损失。

务必使用 HTTPS(安全超文本传输协议)来加密所有与 Coinbase API 的通信。HTTPS 使用 SSL/TLS 协议来加密数据传输,确保数据在传输过程中不被窃听或篡改。这可以有效防止中间人攻击,保障数据传输的安全性。

对所有从用户接收到的输入数据进行严格的验证和清理。 预防跨站脚本攻击 (XSS) 和 SQL 注入攻击至关重要。XSS 攻击是指攻击者将恶意脚本注入到网页中,当用户浏览网页时,这些脚本会在用户的浏览器中执行,从而窃取用户的 Cookie、会话信息或其他敏感数据。SQL 注入攻击是指攻击者通过在输入字段中注入恶意的 SQL 代码,从而控制数据库服务器。通过验证和清理输入数据,可以有效防止这些攻击。

实施额外的安全措施,例如使用多因素身份验证(MFA)来保护你的 Coinbase 账户。MFA 需要用户提供两种或两种以上的身份验证因素,例如密码、短信验证码或生物识别信息,从而提高账户的安全性。定期审查你的 API 访问权限,确保只有必要的应用程序和服务才能访问你的 Coinbase 账户。使用强密码并定期更改密码,避免使用弱密码或在多个网站上使用相同的密码。

相关推荐