Usage Cost
5 coins/call
Quick Start
Use a unified response envelope and call directly from your backend.
https://openapi.toolkk.com/v1/finance-foreign-exchange-klinecURL Example
curl --request POST \
--url 'https://openapi.toolkk.com/v1/finance-foreign-exchange-kline' \
--header 'Content-Type: application/json' \
--header 'X-API-Key: YOUR_API_KEY' \
--data '{\n "symbol": "品种代码,如:FXINDEX。详见代码表",\n "type": "k线类型,0:日k,1:1分钟,5:五分钟;15:十五分钟;30:30分钟,60:60分钟,120:120分钟,240:240分钟",\n "limit": "返回条数,默认10"\n}'Python Example
import os
import requests
url = "https://openapi.toolkk.com/v1/finance-foreign-exchange-kline"
payload = {
"symbol": "品种代码,如:FXINDEX。详见代码表",
"type": "k线类型,0:日k,1:1分钟,5:五分钟;15:十五分钟;30:30分钟,60:60分钟,120:120分钟,240:240分钟",
"limit": "返回条数,默认10"
}
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 Example
package main
import (
"bytes"
"fmt"
"io"
"net/http"
)
func main() {
endpoint := "https://openapi.toolkk.com/v1/finance-foreign-exchange-kline"
payload := []byte("{\n \"symbol\": \"品种代码,如:FXINDEX。详见代码表\",\n \"type\": \"k线类型,0:日k,1:1分钟,5:五分钟;15:十五分钟;30:30分钟,60:60分钟,120:120分钟,240:240分钟\",\n \"limit\": \"返回条数,默认10\"\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 Example
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。详见代码表\",\n \"type\": \"k线类型,0:日k,1:1分钟,5:五分钟;15:十五分钟;30:30分钟,60:60分钟,120:120分钟,240:240分钟\",\n \"limit\": \"返回条数,默认10\"\n}";
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://openapi.toolkk.com/v1/finance-foreign-exchange-kline"))
.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 Example
<?php
$endpoint = 'https://openapi.toolkk.com/v1/finance-foreign-exchange-kline';
$payload = "{\n \"symbol\": \"品种代码,如:FXINDEX。详见代码表\",\n \"type\": \"k线类型,0:日k,1:1分钟,5:五分钟;15:十五分钟;30:30分钟,60:60分钟,120:120分钟,240:240分钟\",\n \"limit\": \"返回条数,默认10\"\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;Response Example
{
"msg": "成功",
"code": 200,
"taskNo": "202960247220113090298671",
"data": {
"lines": [
[
12.879,
12.8786,
12.879,
12.8786,
"-0.00040",
"-0.0031",
1713761100
]
],
"fields": [
"open",
"close",
"high",
"low",
"change",
"changeRate",
"tick_at"
]
}
}Examples illustrate the response structure. Actual results depend on the API response.
- Authentication
- Send X-API-Key in request headers
- Rate limit
- 60 req/min
- Timeout
- 5000 ms
Send your API Key in the X-API-Key header from your backend.
Check both HTTP status and business fields before treating a call as successful.
Use retries and backoff together with rate limits in high-frequency scenarios.
Request Fields
Send requests from your server with the key in the X-API-Key header.
Request Fields
Fields are read from the API schema. Missing descriptions and examples are marked as unspecified.
| Path | Type | Required | Description | Sample |
|---|---|---|---|---|
| symbol | string | Yes | 品种代码,如:FXINDEX。详见代码表 | Unspecified |
| type | string | Yes | k线类型,0:日k,1:1分钟,5:五分钟;15:十五分钟;30:30分钟,60:60分钟,120:120分钟,240:240分钟 | Unspecified |
| limit | string | No | 返回条数,默认10 | Unspecified |
Request Example
{
"symbol": "品种代码,如:FXINDEX。详见代码表",
"type": "k线类型,0:日k,1:1分钟,5:五分钟;15:十五分钟;30:30分钟,60:60分钟,120:120分钟,240:240分钟",
"limit": "返回条数,默认10"
}- Authentication
- Send X-API-Key in request headers
- Rate limit
- 60 req/min
- Timeout
- 5000 ms
Response Fields
Examples illustrate the response structure. Actual results depend on the API response.
Response Fields
Fields are read from the API schema. Missing descriptions and examples are marked as unspecified.
| Path | Type | Required | Description | Sample |
|---|---|---|---|---|
| msg | string | No | 返回码对应描述 | 成功 |
| code | number | No | 返回码,详见返回码说明 | 200 |
| taskNo | string | No | 本次请求号 | 202960247220113090298671 |
| data | object | No | Unspecified | Unspecified |
| data.lines | array | No | Unspecified | [[12.879,12.8786,12.879,12.8786,"-0.00040","-0.0031",1713761100]] |
| data.lines[] | array | Unspecified | Unspecified | [12.879,12.8786,12.879,12.8786,"-0.00040","-0.0031",1713761100] |
| data.fields | array | No | Unspecified | ["open","close","high","low","change","changeRate","tick_at"] |
| data.fields[] | string | Unspecified | Unspecified | open |
Response Example
{
"msg": "成功",
"code": 200,
"taskNo": "202960247220113090298671",
"data": {
"lines": [
[
12.879,
12.8786,
12.879,
12.8786,
"-0.00040",
"-0.0031",
1713761100
]
],
"fields": [
"open",
"close",
"high",
"low",
"change",
"changeRate",
"tick_at"
]
}
}API overview
Capabilities, use cases, limitations, and frequently asked questions.
API Introduction
This API provides historical and real-time K-line market data for major foreign exchange pairs. Developers can specify a currency pair code (symbol) and time period (type) to obtain structured array data including open, close, high, low prices, change, and timestamp, suitable for building financial charts or conducting technical analysis.
Use Cases
- Quantitative Trading Strategy Backtesting: Obtain historical price series at different time granularities (e.g., 1-minute, 5-minute, daily) for strategy validation.
- Financial Terminal Development: Provide real-time candlestick chart data sources for forex trading software.
- Market Quote Monitoring: Monitor short-term volatility trends and price anomalies for specific currency pairs.
Request and Response Description
- Request Method: POST
- Core Parameters:
symbol(Required): Foreign exchange pair code, e.g., FXINDEX. Refer to the code table for specific values.