Ledger Quote API
个人记账 App 使用的行情聚合 API。App 本地保存资产、账单和借款;Cloudflare 只负责汇率、股票、ETF、A股、A股 ETF、黄金白银、虚拟币估值。
Cloudflare Pages Functionsv1.9.0-pages-docs-ashare美股 / ETFA股 / A股ETFFXCryptoMetalApp 设置页填写
API 地址:你的 Cloudflare Pages 域名 API Token:你的 APP_API_TOKEN 默认估值货币:CNY / USD / HKD / SGD / EUR / JPY / USDT
设置了 APP_API_TOKEN 后,App 请求会带 x-api-token。浏览器临时测试也可以在 URL 里加 ?token=...。
在线测试
Token 只存在当前浏览器 localStorage,方便你直接在主域名测试 API。
等待测试...
接口总览
| 分类 | 方法 | 路径 / 示例 |
|---|---|---|
| 健康检查 | GET | /api/health |
| 配置 | GET | /api/config |
| 环境检查 | GET | /api/debug/env |
| 全链路自检 | GET | /api/debug/self-test?quote=CNY |
| 虚拟币调试 | GET | /api/debug/crypto?ids=bitcoin,solana"e=CNY |
| 汇率 | GET | /api/fx?base=USD"e=CNY&amount=700 |
| 换算 | GET | /api/convert?from=HKD&to=CNY&amount=1000 |
| 虚拟币 | GET | /api/crypto?ids=solana,bitcoin,tether"e=CNY |
| 贵金属 | GET | /api/metal?symbol=XAU&unit=gram"e=CNY |
| 美股 | GET | /api/stock?symbol=AAPL"e=CNY |
| 美股 ETF | GET | /api/stock?symbol=SGOV"e=CNY |
| A股 | GET | /api/cn-stock?symbol=600519"e=CNY |
| A股 ETF | GET | /api/cn-stock?symbol=510050"e=CNY |
| 搜索 | GET | /api/search?type=stock&q=apple |
| 组合估值 | POST | /api/portfolio/valuate |
美股搜索
/api/search?type=stock&q=apple /api/search?type=stock&q=AAPL
美股 ETF 搜索
/api/search?type=etf&q=sgov /api/search?type=etf&q=qqq
A股搜索
/api/search?type=cn_stock&q=茅台 /api/search?type=a_stock&q=601658
A股 ETF 搜索
/api/search?type=cn_etf&q=上证50 /api/search?type=a_etf&q=510050
虚拟币搜索
/api/search?type=crypto&q=sol /api/search?type=crypto&q=bitcoin
贵金属搜索
/api/search?type=metal&q=gold /api/search?type=metal&q=XAU
Flutter 主要调用:组合估值
POST https://你的域名/api/portfolio/valuate
Header:
content-type: application/json
x-api-token: 你的 APP_API_TOKEN
Body:
{
"defaultCurrency": "CNY",
"assets": [
{"id":"cash-1","type":"cash","name":"招商银行卡","quantity":1000,"currency":"CNY"},
{"id":"btc-1","type":"crypto","name":"BTC","symbol":"bitcoin","quantity":0.01},
{"id":"aapl-1","type":"stock","name":"Apple","symbol":"AAPL","quantity":1},
{"id":"sgov-1","type":"etf","name":"SGOV","symbol":"SGOV","quantity":21},
{"id":"cn-stock-1","type":"cn_stock","name":"邮储银行","symbol":"601658","quantity":1400},
{"id":"cn-etf-1","type":"cn_etf","name":"上证50ETF","symbol":"510050","quantity":1000},
{"id":"gold-1","type":"metal","name":"黄金","symbol":"XAU","quantity":50,"unit":"gram"}
],
"liabilities": [
{"id":"loan-1","name":"我欠朋友","direction":"payable","amount":500,"currency":"CNY"},
{"id":"receive-1","name":"朋友欠我","direction":"receivable","amount":100,"currency":"USD"}
]
}
部署检查
- Cloudflare Pages 必须用 Wrangler 或 Git 构建部署;只拖 zip 作为静态资源时,
/functions不会运行。 - 环境变量建议至少设置
APP_API_TOKEN和TWELVE_DATA_API_KEY。 - 部署后先测
/api/debug/env,再测/api/debug/self-test。 - 如果 CoinGecko 偶尔 403/429,可选加
COINGECKO_DEMO_API_KEY。
curl "/api/debug/env" -H "x-api-token: 你的_APP_API_TOKEN" curl "/api/debug/self-test?quote=CNY" -H "x-api-token: 你的_APP_API_TOKEN"