调用价格
5 匠币/次
快速接入
保持统一返回结构,直接通过服务端发起请求即可接入。
https://openapi.toolkk.com/v1/finance-foreign-exchange-pricecURL 示例
curl --request POST \
--url 'https://openapi.toolkk.com/v1/finance-foreign-exchange-price' \
--header 'Content-Type: application/json' \
--header 'X-API-Key: YOUR_API_KEY' \
--data '{\n "symbol": "品种代码,如:FXINDEX,CNYRUB。详见代码表"\n}'Python 示例
import os
import requests
url = "https://openapi.toolkk.com/v1/finance-foreign-exchange-price"
payload = {
"symbol": "品种代码,如:FXINDEX,CNYRUB。详见代码表"
}
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/finance-foreign-exchange-price"
payload := []byte("{\n \"symbol\": \"品种代码,如:FXINDEX,CNYRUB。详见代码表\"\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 \"symbol\": \"品种代码,如:FXINDEX,CNYRUB。详见代码表\"\n}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://openapi.toolkk.com/v1/finance-foreign-exchange-price"))
.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/finance-foreign-exchange-price';
$payload = "{\n \"symbol\": \"品种代码,如:FXINDEX,CNYRUB。详见代码表\"\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": "202960247220113090298671",
"data": {
"FXINDEX": {
"update_time": 1713766948,
"bofu": "0.16380",
"high": "106.1425",
"low": "105.9787",
"price": "106.0533",
"change": "-0.0630",
"name": "美元指数",
"ask": "106.0533",
"bid": "106.0533",
"preclose": "106.1163",
"changeRate": "-0.0594",
"open": "106.0992",
"zhenfu": ""
},
"CNYRUB": {}
}
}示例用于理解返回结构,实际结果以接口返回为准。
- 鉴权方式
- 请求头传入 X-API-Key
- 默认限流
- 60 次/分钟
- 超时时间
- 5000 ms
服务端调用时,将 API Key 放在 X-API-Key 请求头中。
建议按 response code 与业务字段双重判断调用结果。
高频调用场景请结合速率限制与重试策略使用。
请求字段
从服务端发起请求,并在 X-API-Key 请求头中传入密钥。
请求字段
字段来自接口结构定义。未提供的说明和示例会标为未标注。
| 字段路径 | 类型 | 必填 | 说明 | 示例值 |
|---|---|---|---|---|
| symbol | string | 是 | 品种代码,如:FXINDEX,CNYRUB。详见代码表 | 未标注 |
请求示例
{
"symbol": "品种代码,如:FXINDEX,CNYRUB。详见代码表"
}- 鉴权方式
- 请求头传入 X-API-Key
- 默认限流
- 60 次/分钟
- 超时时间
- 5000 ms
响应字段
示例用于理解返回结构,实际结果以接口返回为准。
响应字段
字段来自接口结构定义。未提供的说明和示例会标为未标注。
| 字段路径 | 类型 | 必填 | 说明 | 示例值 |
|---|---|---|---|---|
| msg | string | 否 | 口返回码对应的描述信息 | 成功 |
| code | number | 否 | 接口返回码【注意:不等于HTTP响应状态码】 | 200 |
| taskNo | string | 否 | 任务订单号【可反馈服务商复核对应订单】 | 202960247220113090298671 |
| data | object | 否 | 未标注 | 未标注 |
| data.FXINDEX | object | 否 | 未标注 | 未标注 |
| data.FXINDEX.update_time | number | 否 | 数据时间戳 | 1713766948 |
| data.FXINDEX.bofu | string | 否 | 波幅 | 0.16380 |
| data.FXINDEX.high | string | 否 | 今日最高价 | 106.1425 |
| data.FXINDEX.low | string | 否 | 今日最低价 | 105.9787 |
| data.FXINDEX.price | string | 否 | 实时价格 | 106.0533 |
| data.FXINDEX.change | string | 否 | 涨跌额 | -0.0630 |
| data.FXINDEX.name | string | 否 | 品种名称 | 美元指数 |
| data.FXINDEX.ask | string | 否 | 卖价 | 106.0533 |
| data.FXINDEX.bid | string | 否 | 买价 | 106.0533 |
| data.FXINDEX.preclose | string | 否 |
接口简介
接口能力、应用场景、使用限制与常见问题。
接口能力
按品种代码查询外汇行情,结果可包含货币对名称、最新价、昨收、开高低价、涨跌、买卖报价及更新时间。数据源也提供外汇指数类代码;货币对和指数需要分别解释,不能把指数值当作两种货币的兑换比率。应用可以依据代码和名称建立行情展示,保留本次实际返回的市场时点。
应用场景
适合货币对报价资料页、汇率变化观察和业务系统中的市场参考。需要进行金额换算时,先确认货币对方向,并使用同一时点的报价;换算步骤由应用完成。若比较银行外汇牌价,应注明市场货币对与银行现钞、现汇报价的区别,不能把银行每100外币报价直接与一单位货币对数值相减。
使用与结果解读
选择代码并读取相应行情对象。普通USDCNY报价表示1美元对应多少人民币,例如6.7114表示1美元对应6.7114元人民币;这个数值不能再除以100。已核查记录以昨收6.7108对照,价差0.0006,涨跌幅约0.0089%,后者是百分数。反向换算需要根据方向处理,买卖报价也应分别保留,不能将不同方向混为一个成交价。
范围与限制
接口返回市场行情,不提供银行购汇交易或锁定兑换价格。指数按点数解读,不能用于金额换算;其他未明确公式的衍生统计也不宜自行解释为特定指标。不同数据源报价、时区和取样时点可能有差异,跨日比较前需要核对。更新时间缺失或明显滞后时,应如实说明,不能用请求时间替换为新的市场时点。
常见问题
USDCNY的6.7114是否按100美元报价?
不是。普通货币对按1美元对应人民币6.7114元理解,与银行牌价基数不同。
0.0089的涨跌幅需要再乘100吗?
已核查记录的0.0089是百分数,对应约0.0089%,不再扩大100倍。
外汇指数能换算货币金额吗?
不能。指数以点数表达,与具体货币对的兑换比率不同。
可以用市场行情替代银行成交报价吗?
不能直接替代。银行业务有现汇、现钞及买卖方向等不同条件。