调用价格
10 匠币/次
快速接入
保持统一返回结构,直接通过服务端发起请求即可接入。
https://openapi.toolkk.com/v1/fund-historycURL 示例
curl --request POST \
--url 'https://openapi.toolkk.com/v1/fund-history' \
--header 'Content-Type: application/json' \
--header 'X-API-Key: YOUR_API_KEY' \
--data '{\n "fundCode": "基金代码",\n "period": "取值说明:取值1:近一个月;取值2:近3个月;取值3:近6个月;取值4:近一年;取值5:近三年;取值6:近五年;取值7:今年以来;取值8:成立以来\t"\n}'Python 示例
import os
import requests
url = "https://openapi.toolkk.com/v1/fund-history"
payload = {
"fundCode": "基金代码",
"period": "取值说明:取值1:近一个月;取值2:近3个月;取值3:近6个月;取值4:近一年;取值5:近三年;取值6:近五年;取值7:今年以来;取值8:成立以来\t"
}
headers = {
"Content-Type": "application/json",
"X-API-Key": os.getenv("TOOLKK_API_KEY", "YOUR_API_KEY"),
}
response = requests.request("POST", url, headers=headers, json=payload, timeout=30)
response.raise_for_status()
print(response.json())Go 示例
package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
endpoint := "https://openapi.toolkk.com/v1/fund-history"
payload := []byte("{\n \"fundCode\": \"基金代码\",\n \"period\": \"取值说明:取值1:近一个月;取值2:近3个月;取值3:近6个月;取值4:近一年;取值5:近三年;取值6:近五年;取值7:今年以来;取值8:成立以来\\t\"\n}")
req, err := http.NewRequest("POST", endpoint, bytes.NewBuffer(payload))
if err != nil {
panic(err)
}
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-API-Key", "YOUR_API_KEY")
resp, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, err := io.ReadAll(resp.Body)
if err != nil {
panic(err)
}
fmt.Println(string(body))
}Java 示例
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class ToolkkExample {
public static void main(String[] args) throws Exception {
String payload = "{\n \"fundCode\": \"基金代码\",\n \"period\": \"取值说明:取值1:近一个月;取值2:近3个月;取值3:近6个月;取值4:近一年;取值5:近三年;取值6:近五年;取值7:今年以来;取值8:成立以来\\t\"\n}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://openapi.toolkk.com/v1/fund-history"))
.method("POST", HttpRequest.BodyPublishers.ofString(payload))
.header("Content-Type", "application/json")
.header("X-API-Key", "YOUR_API_KEY")
.build();
HttpResponse<String> response = HttpClient.newHttpClient()
.send(request, HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}PHP 示例
<?php
$endpoint = 'https://openapi.toolkk.com/v1/fund-history';
$payload = "{\n \"fundCode\": \"基金代码\",\n \"period\": \"取值说明:取值1:近一个月;取值2:近3个月;取值3:近6个月;取值4:近一年;取值5:近三年;取值6:近五年;取值7:今年以来;取值8:成立以来\\t\"\n}";
$ch = curl_init($endpoint);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'X-API-Key: YOUR_API_KEY',
],
CURLOPT_POSTFIELDS => $payload,
]);
$response = curl_exec($ch);
if ($response === false) {
throw new RuntimeException(curl_error($ch));
}
curl_close($ch);
echo $response;响应示例
{
"code": 200,
"msg": "成功",
"taskNo": "914968093149234333232591",
"data": {
"list": [
{
"date": "2024-06-30",
"totalValue": 0.8379,
"fundCode": "018124",
"netValue": 0.8379,
"dayOfGrowth": -0.01
}
]
}
}示例用于理解返回结构,实际结果以接口返回为准。
- 鉴权方式
- 请求头传入 X-API-Key
- 默认限流
- 60 次/分钟
- 超时时间
- 5000 ms
服务端调用时,将 API Key 放在 X-API-Key 请求头中。
建议按 response code 与业务字段双重判断调用结果。
高频调用场景请结合速率限制与重试策略使用。
请求字段
从服务端发起请求,并在 X-API-Key 请求头中传入密钥。
请求字段
字段来自接口结构定义。未提供的说明和示例会标为未标注。
| 字段路径 | 类型 | 必填 | 说明 | 示例值 |
|---|---|---|---|---|
| fundCode | string | 是 | 基金代码 | 未标注 |
| period | string | 否 | 取值说明:取值1:近一个月;取值2:近3个月;取值3:近6个月;取值4:近一年;取值5:近三年;取值6:近五年;取值7:今年以来;取值8:成立以来 | 未标注 |
请求示例
{
"fundCode": "基金代码",
"period": "取值说明:取值1:近一个月;取值2:近3个月;取值3:近6个月;取值4:近一年;取值5:近三年;取值6:近五年;取值7:今年以来;取值8:成立以来\t"
}- 鉴权方式
- 请求头传入 X-API-Key
- 默认限流
- 60 次/分钟
- 超时时间
- 5000 ms
响应字段
示例用于理解返回结构,实际结果以接口返回为准。
响应字段
字段来自接口结构定义。未提供的说明和示例会标为未标注。
| 字段路径 | 类型 | 必填 | 说明 | 示例值 |
|---|---|---|---|---|
| code | number | 否 | 返回码,详见返回码说明 | 200 |
| msg | string | 否 | 返回码对应描述 | 成功 |
| taskNo | string | 否 | 本次请求号 | 914968093149234333232591 |
| data | object | 否 | 未标注 | 未标注 |
| data.list | array | 否 | 未标注 | [{"date":"2024-06-30","totalValue":0.8379,"fundCode":"018124","netValue":0.8379,"dayOfGrowth":-0.01}] |
| data.list[] | object | 未标注 | 未标注 | 未标注 |
响应示例
{
"code": 200,
"msg": "成功",
"taskNo": "914968093149234333232591",
"data": {
"list": [
{
"date": "2024-06-30",
"totalValue": 0.8379,
"fundCode": "018124",
"netValue": 0.8379,
"dayOfGrowth": -0.01
}
]
}
}接口简介
接口能力、应用场景、使用限制与常见问题。
接口能力
按单只基金代码和预设周期查询历史净值,返回净值日期、基金代码、单位净值、累计净值和日涨幅数值。适合接入基金详情页、制作净值曲线或保存历史快照。当前查询使用周期选项,没有任意起止日期、分页、批量基金或分红明细参数;接口提供原始记录,曲线绘制与区间分析由调用方完成。
应用场景
基金详情页可分别绘制单位净值和累计净值曲线,让读者查看不同时期的数据;定期数据任务可保存返回快照,核对同一基金、同一日期的记录是否变化;内部研究系统可将异常点交给人工,对照基金正式披露确认。排序、去重、缺失日期处理和计算都需要调用方实现,不能把图表加工后的指标当作接口直接返回的结论。
从输入到结果
将 fundCode 按字符串提交并保留前导零,用 period 选择页面列出的八档周期;不传周期时的默认范围未明确。检查调用状态后读取 data.list,先核对日期顺序、重复记录和缺失值。netValue 是单位净值,totalValue 是累计净值,不能用两者之差直接计算个人收益。dayOfGrowth 只标为日涨幅,单位未定义;保留原值,核实口径后再决定百分比展示。
范围与限制
未承诺覆盖全部基金、历史完整性、固定更新频率或记录排序。“成立以来”是查询选项,不证明返回记录没有缺失。净值日期不是请求时间,也不代表盘中估值。公开字段没有展开分红、拆分与复权处理,跨期比较应核对同一基金的正式披露;空结果或缺失日期不能直接补为零,也不能据此认定基金不存在。
常见问题
能指定任意起止日期吗?
当前只能使用预设周期,没有起止日期参数。调用方可在取得记录后自行筛选日期,但不能保证结果包含所有目标日期。
单位净值和累计净值能互换吗?
不能。它们是不同指标;这里没有个人持仓、交易流水及完整分红处理说明,不能单凭两列净值计算持有收益。