You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R调用CoinMarketCap API拉取加密货币数据401报错求助

问题排查结论

你遇到的报错由两个问题共同导致:

  • 环境变量取值失败
    从返回的请求URL可以看到,两个密钥相关参数的值均为空,说明Sys.getenv("MyKey")未取到有效值。你可以先在R控制台运行print(Sys.getenv("MyKey"))验证,若输出为空,说明系统环境变量中没有配置名为MyKey的变量,或是配置后未重启R会话导致未生效。测试阶段也可以直接将密钥字符串赋值给key_api验证逻辑是否通顺。
  • 请求参数不符合接口规则
    CoinMarketCap API要求密钥仅可通过两种方式传递,你当前的写法混用了传递方式还写错了参数名:
    1. 官方推荐方式:放在请求头X-CMC_PRO_API_KEY字段中
    2. 可选方式:放在URL查询参数CMC_PRO_API_KEY中,不是你代码里写的apikey
      同时你拼接endpoint时已经在路径里加了空的CMC_PRO_API_KEY参数,后面query又重复传参,进一步导致参数混乱。

修正后可运行代码

rm(list = ls())
cat("\014")
library(httr)
library(jsonlite)
library(tidyverse)

base_url <- "https://pro-api.coinmarketcap.com/"
path <- "v1/cryptocurrency/listings/latest"
key_api <- Sys.getenv("MyKey")
# 提前校验密钥是否正常获取
if (nchar(key_api) == 0) {
  stop("未获取到有效API密钥,请检查环境变量MyKey配置")
}

res_api <- GET(
  url = paste0(base_url, path), 
  # 通过请求头传递密钥,避免密钥出现在访问日志中
  add_headers(`X-CMC_PRO_API_KEY` = key_api),
  query = list(
    start = 1,
    limit = 5000,
    convert = "USD",
    details = "true"
  )
)

# 查看请求结果
http_status(res_api)
parsed_res <- content(res_api, as = "parsed")
print(parsed_res$status)

内容的提问来源于stack exchange,提问作者fsbmat。

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 06:15:03