呼叫價格
2 匠幣/次
快速接入
保持統一返回結構,直接透過服務端發起請求即可接入。
POST
https://openapi.toolkk.com/v1/exchange-rate-historycURL 示例
curl --request POST \
--url 'https://openapi.toolkk.com/v1/exchange-rate-history' \
--header 'Content-Type: application/json' \
--header 'X-API-Key: YOUR_API_KEY' \
--data '{\n "code": "货币编号,货币编号或货币名称必须输入其中一个",\n "name": "货币名称,货币编号或货币名称必须输入其中一个",\n "month": "查询年月(yyyyMM),month和startDate、endDate不能同时为空",\n "startDate": "查询起始时间yyyyMMdd,month和startDate、endDate不能同时为空",\n "endDate": "查询结束时间yyyyMMdd,month和startDate、endDate不能同时为空"\n}'Python 示例
import os
import requests
url = "https://openapi.toolkk.com/v1/exchange-rate-history"
payload = {
"code": "货币编号,货币编号或货币名称必须输入其中一个",
"name": "货币名称,货币编号或货币名称必须输入其中一个",
"month": "查询年月(yyyyMM),month和startDate、endDate不能同时为空",
"startDate": "查询起始时间yyyyMMdd,month和startDate、endDate不能同时为空",
"endDate": "查询结束时间yyyyMMdd,month和startDate、endDate不能同时为空"
}
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/exchange-rate-history"
payload := []byte("{\n \"code\": \"货币编号,货币编号或货币名称必须输入其中一个\",\n \"name\": \"货币名称,货币编号或货币名称必须输入其中一个\",\n \"month\": \"查询年月(yyyyMM),month和startDate、endDate不能同时为空\",\n \"startDate\": \"查询起始时间yyyyMMdd,month和startDate、endDate不能同时为空\",\n \"endDate\": \"查询结束时间yyyyMMdd,month和startDate、endDate不能同时为空\"\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 \"code\": \"货币编号,货币编号或货币名称必须输入其中一个\",\n \"name\": \"货币名称,货币编号或货币名称必须输入其中一个\",\n \"month\": \"查询年月(yyyyMM),month和startDate、endDate不能同时为空\",\n \"startDate\": \"查询起始时间yyyyMMdd,month和startDate、endDate不能同时为空\",\n \"endDate\": \"查询结束时间yyyyMMdd,month和startDate、endDate不能同时为空\"\n}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://openapi.toolkk.com/v1/exchange-rate-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/exchange-rate-history';
$payload = "{\n \"code\": \"货币编号,货币编号或货币名称必须输入其中一个\",\n \"name\": \"货币名称,货币编号或货币名称必须输入其中一个\",\n \"month\": \"查询年月(yyyyMM),month和startDate、endDate不能同时为空\",\n \"startDate\": \"查询起始时间yyyyMMdd,month和startDate、endDate不能同时为空\",\n \"endDate\": \"查询结束时间yyyyMMdd,month和startDate、endDate不能同时为空\"\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;響應示例
{
"msg": "成功",
"code": 200,
"taskNo": "687882815162227863699691",
"data": {
"currencyCode": "USD",
"currencyName": "美元",
"startDate": "20191001",
"endDate": "20191101",
"month": "201910",
"list": [
{
"middle_rate": "705.33",
"selling_rate": "705.55",
"cash_buying_rate": "696.86",
"buying_rate": "702.58",
"cash_selling_rate": "705.55",
"publish_time": "2019-10-31"
},
{
"middle_rate": "705.82",
"selling_rate": "707.26",
"cash_buying_rate": "698.54",
"buying_rate": "704.27",
"cash_selling_rate": "707.26",
"publish_time": "2019-10-30"
}
]
}
}範例用於理解回傳結構,實際結果以介面回傳為準。
- 鑑權方式
- 請求頭傳入 X-API-Key
- 預設限流
- 600 次/分鐘
- 超時時間
- 10000 ms
接入建議
服務端呼叫時,將 API Key 放在 X-API-Key 請求頭中。
建議按 response code 與業務欄位雙重判斷呼叫結果。
高頻呼叫場景請結合速率限制與重試策略使用。
請求欄位
從伺服器發起請求,並在 X-API-Key 標頭中傳入金鑰。
請求欄位
欄位來自介面結構定義。未提供的說明和範例會標為未標註。
| 欄位路徑 | 型別 | 必填 | 說明 | 示例值 |
|---|---|---|---|---|
| code | string | 否 | 货币编号,货币编号或货币名称必须输入其中一个 | 未標註 |
| name | string | 否 | 货币名称,货币编号或货币名称必须输入其中一个 | 未標註 |
| month | string | 否 | 查询年月(yyyyMM),month和startDate、endDate不能同时为空 | 未標註 |
| startDate | string | 否 | 查询起始时间yyyyMMdd,month和startDate、endDate不能同时为空 | 未標註 |
| endDate | string | 否 | 查询结束时间yyyyMMdd,month和startDate、endDate不能同时为空 | 未標註 |
請求示例
{
"code": "货币编号,货币编号或货币名称必须输入其中一个",
"name": "货币名称,货币编号或货币名称必须输入其中一个",
"month": "查询年月(yyyyMM),month和startDate、endDate不能同时为空",
"startDate": "查询起始时间yyyyMMdd,month和startDate、endDate不能同时为空",
"endDate": "查询结束时间yyyyMMdd,month和startDate、endDate不能同时为空"
}- 鑑權方式
- 請求頭傳入 X-API-Key
- 預設限流
- 600 次/分鐘
- 超時時間
- 10000 ms
響應欄位
範例用於理解回傳結構,實際結果以介面回傳為準。
響應欄位
欄位來自介面結構定義。未提供的說明和範例會標為未標註。
| 欄位路徑 | 型別 | 必填 | 說明 | 示例值 |
|---|---|---|---|---|
| msg | string | 否 | code对应的描述 | 成功 |
| code | number | 否 | 返回码,详见code返回码说明 | 200 |
| taskNo | string | 否 | 本次唯一请求号 | 687882815162227863699691 |
| data | object | 否 | 未標註 | 未標註 |
| data.currencyCode | string | 否 | 货币编号 | USD |
| data.currencyName | string | 否 | 货币名称 | 美元 |
| data.startDate | string | 否 | 开始日期 | 20191001 |
| data.endDate | string | 否 | 结束日期 | 20191101 |
| data.month | string | 否 | 结束日期 | 201910 |
| data.list | array | 否 | 未標註 | [{"middle_rate":"705.33","selling_rate":"705.55","cash_buying_rate":"696.86","buying_rate":"702.58","cash_selling_rate":"705.55","publish_time":"2019-10-31"},{"middle_rate":"705.82","selling_rate":"707.26","cash_buying_rate":"698.54","buying_rate":"704.27","cash_selling_rate":"707.26","publish_time":"2019-10-30"}] |
| data.list[] | object | 未標註 | 未標註 | 未標註 |
響應示例
{
"msg": "成功",
"code": 200,
"taskNo": "687882815162227863699691",
"data": {
"currencyCode": "USD",
"currencyName": "美元",
"startDate": "20191001",
"endDate": "20191101",
"month": "201910",
"list": [
{
"middle_rate": "705.33",
"selling_rate": "705.55",
"cash_buying_rate": "696.86",
"buying_rate": "702.58",
"cash_selling_rate": "705.55",
"publish_time": "2019-10-31"
},
{
"middle_rate": "705.82",
"selling_rate": "707.26",
"cash_buying_rate": "698.54",
"buying_rate": "704.27",
"cash_selling_rate": "707.26",
"publish_time": "2019-10-30"
}
]
}
}介面簡介
介面功能、應用情境、使用限制與常見問題。
API 簡介
歷史匯率查詢 API 允許開發者取得特定貨幣在過去一段時間內的匯率變動情況。透過提供貨幣編號或名稱,以及目標查詢月份或自訂的起訖日期,API 將返回該時間段內每日的詳細匯率資料,包括現匯買入/賣出價、現鈔買入/賣出價以及中行折算價。
適用場景
- 財務結算與審計:企業在進行跨國交易結算或財務審計時,需核對歷史特定日期的匯率。
- 資料分析與趨勢預測:金融分析師或研究人員利用歷史匯率資料進行市場趨勢分析和模型建構。
- 跨境電商平台:為用戶提供歷史訂單的匯率參考,或用於內部成本核算。
- 旅遊與換匯服務:展示歷史匯率走勢,輔助用戶制定換匯策略。
請求與返回說明
請求參數要點:
- 需指定查詢的貨幣,可透過
code(貨幣編號,如 USD) 或name(貨幣名稱,如 美元) 傳入,兩者必填其一。 - 需指定查詢時間範圍,可透過
month(年月,格式 yyyyMM) 或組合使用startDate和endDate(年月日,格式 yyyyMMdd) 傳入。注意:按月查詢和按日期區間查詢不能同時為空。